Programme ausführen - warten bis fertig bei erneuter Taste

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Programme ausführen - warten bis fertig bei erneuter Taste

Beitrag von NilsG » 22.06.2018, 09:26

Hallo zusammen!

Folgende Problematik:

Starte ich ein Programm, z.B. mein umfangreichstes Programm für ALARM-Anlage, in dem mehrere Dinge nacheinander abgearbeitet werden
(Zustände prüfen, Keymatics verriegeln, Anzeigen umstellen etc.) wenn man z.b. einen Handsender drückt;
kommt es vor, dass sich einige Geräte "verabschieden" , wenn man NOCHMAL den Handsender drückt, z.B. wenn man merkt "halt stop, ich muss nochmal rein ins Haus", BEVOR das Programm komplett abgearbeitet ist!

Da man ja immer sagt, das meiste zeitversetzt mit 1 Sekunde einzustellen, dauert das schonmal 10-15 Sekunden ...

Soweit verstanden, was ich meine?!?

Und nun zur Frage:
Wie kann ich z.B. die Eingabe desjenigen/der Handsender so lange blockieren, bis das Programm durchgelaufen ist?!?
Geht sowas mit einfachen Bordmitteln, oder bedarf das einer (umfangreichen) Programmierung?!

DANKE!

Nils
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Programme ausführen - warten bis fertig bei erneuter Tas

Beitrag von JRiemann » 22.06.2018, 10:02

NilsG hat geschrieben:Soweit verstanden, was ich meine?!?
Nicht wirklich.
NilsG hat geschrieben:kommt es vor, dass sich einige Geräte "verabschieden"
Warum passiert das wenn die Taste gedrückt wird? Bzw. was genau meinst Du damit?
NilsG hat geschrieben:Wie kann ich z.B. die Eingabe desjenigen/der Handsender so lange blockieren, bis das Programm durchgelaufen ist?!?
Den Handsender selbst kann man nicht sperren. Ein erneutes auslösen eines Programms kann man per Variable unterbinden.
>>> siehe hier <<<
Um aber genaueres zu sagen müsste man wissen was die Taste für Aufgaben hat.

Evtl. ist die einfachste Lösung das Programm komplett zeitverzögert abzuarbeiten.
Wenn ich das Haus verlasse wird lediglich die KeyMatic angesteuert, alle anderen Dinge passieren einige Minuten später. So kommt es nicht zum Chaos wenn man doch kurz wieder ins Haus möchte.
Viele Grüße!
Jörg

Sven_A
Beiträge: 4152
Registriert: 26.01.2016, 08:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Renningen
Hat sich bedankt: 346 Mal
Danksagung erhalten: 281 Mal

Re: Programme ausführen - warten bis fertig bei erneuter Tas

Beitrag von Sven_A » 22.06.2018, 10:03

Mit einer Systemvariable "SV_Prog_Laueft" vom Typ Bool.
Die kommt mit in die "Wenn" Bedingung und wird "nur prüfen" gesetzt auf falsch.
Im Programm wird die als erstes auf "wahr" gesetzt, und als letztes mit der größten Verzögerung wieder auf "falsch".

Fertig.

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Programme ausführen - warten bis fertig bei erneuter Tas

Beitrag von NilsG » 22.06.2018, 10:40

:mrgreen:

Das mit lange zeitverzögert, ändert ja aber im Prinzip nix, an der Sache, denn das Programm läuft dann ja noch immer bzw. länger.

Der Handsender startet das Programm; in dem Programm wird dann alles abgearbeitet:

KeyMatic(s)
Anzeigen
Systemvariablen usw

Naja, und wenn ein Programm noch am Abarbeiten ist, ein neues aber gestartet wird, dass die gleichen Geräte etc. ansteuern soll (eben nur andersgerum, also öffnen); dann gibts Chaos
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Sven_A
Beiträge: 4152
Registriert: 26.01.2016, 08:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Renningen
Hat sich bedankt: 346 Mal
Danksagung erhalten: 281 Mal

Re: Programme ausführen - warten bis fertig bei erneuter Tas

Beitrag von Sven_A » 22.06.2018, 10:50

Das Neue wird aber nciht gestartet weil die SV das verhindert.

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Programme ausführen - warten bis fertig bei erneuter Tas

Beitrag von JRiemann » 22.06.2018, 12:51

NilsG hat geschrieben:Das mit lange zeitverzögert, ändert ja aber im Prinzip nix, an der Sache, denn das Programm läuft dann ja noch immer bzw. länger.
Naja, es kommt darauf an was alles abgearbeitet wird und wie lange das dauert.

Aber im Prinzip kommt Dein Problem daher das Du den Fehler machst das Programm direkt über die Taste auszulösen.
Bei solchen Dingen ist es immer besser über Variablen zu schalten.
Die Keymatic sollte so oder so per Direktverknüpfung geschaltet werden. Zusammen mit der KM setzt Du im Programm verzögert eine Variable.
Diese Variable triggert dann anstelle der FB das Alarmprogramm. Und schon ist Dein Wunsch erfüllt.

Wenn ich z.B. die FB betätige schließt die KM per DV und in einem Programm wird dann eine Variable nach 5 Min auf abwesend gesetzt. Erst wenn diese Variable nach 5 Min geändert wird laufen alle anderen Programme an die verschiedene Aktionen ausführen. Betätige ich nun vor Ablauf der 5 Min die FB zum aufschließen, dann wird die laufende Verzögerung abgebrochen und alle "Abwesend-Programme" werden nicht ausgelöst.
Viele Grüße!
Jörg

Xel66
Beiträge: 14148
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Programme ausführen - warten bis fertig bei erneuter Tas

Beitrag von Xel66 » 22.06.2018, 13:13

Einfach im ersten Schritt eine Systemvariable (z.B. "Programmsperre"), die mit der Taste verUNDet (Bedingung: "Programmsperre ist FALSCH") ist auf WAHR setzen und nach Ablauf der Laufzeit der Aktionen auf FALSCH setzen. Somit ist ein erneutes Triggern gesperrt, solange das Programm oder die Geräte brauchen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Programme ausführen - warten bis fertig bei erneuter Tas

Beitrag von NilsG » 22.06.2018, 14:09

Ah ok, cool
Werde dahingehend mal testen und berichten
Direktverknüpfung zur Keymatic ist ja ok

In dem Programm frage ich aber ALLE 4 Keymatics ab und verriegele die ggf
dann

Somit würde eine Direktverknüpfung nur bedingt Sinn machen
Außerdem möchte ich aus jeder Tür gehen können und dann schalten/anschließen können

Nils
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Programme ausführen - warten bis fertig bei erneuter Tas

Beitrag von NilsG » 23.06.2018, 11:36

JRiemann hat geschrieben:
NilsG hat geschrieben:Das mit lange zeitverzögert, ändert ja aber im Prinzip nix, an der Sache, denn das Programm läuft dann ja noch immer bzw. länger.
Naja, es kommt darauf an was alles abgearbeitet wird und wie lange das dauert.

Aber im Prinzip kommt Dein Problem daher das Du den Fehler machst das Programm direkt über die Taste auszulösen.
Bei solchen Dingen ist es immer besser über Variablen zu schalten.
Ich habe mit in Programm die KeyMatics und in dem anderen alle anderen Anzeigen/Dinge.
Bildschirmfoto 2018-06-22 um 22.47.12.JPG
Bildschirmfoto 2018-06-22 um 22.44.48.JPG
Hier kann ich zusätzlich noch über über eine "Retro"-Anzeige aus der Garage schalten, wenn ich das Haus mit dem auto über die Garage verlasse:
Bildschirmfoto 2018-06-22 um 22.45.57.JPG
Wie sollten/könnte ich hier denn dann die Variablen einbauen?!
Ich habe gerade selbst gemerkt, dass ggf. die Abstände der Sendebefehle nicht ganz zueinander passen ...
Also KeyMatics schliessen UND Anzeigen schalten etc.!

DANKE!!!

Nils
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Programme ausführen - warten bis fertig bei erneuter Tas

Beitrag von JRiemann » 23.06.2018, 15:10

Ich würde die Variable in jedem Programm in dem die Taste als Auslöser dient in jedem WENN-Block und wenn vorhanden auch in jedem SONST-WENN als zu prüfende Bedingung einfügen. Das liegt aber ganz bei Dir in welchem Programm Du verhindern möchtest das innerhalb der Sperrzeit auf die Taste reagiert wird.
Zum setzen der Sperre reicht es aus die Variable in einem der Programme im DANN einzufügen.

Allerdings finde ich den gesamten Ablauf etwas ungünstig weil Du gleich mehrere Programme "gleichzeitig" mit der Taste auslöst. Da weiß man ja nie welches als erstes ausgeführt wird.

Code: Alles auswählen

WENN - Taste kurz
UND - NEUE VARIABLE - Zustand Tastensperre nicht aktiv - nur prüfen
UND - Türkontakt Hof - geschlossen - nur prüfen
UND - xyz - ...
DANN - NEUE VARIABLE - sofort Zustand Tastensperre aktiv
DANN - verzögert um 1 Sek - mache was weiß ich
DANN - verzögert um 2 Sek - noch mehr Aktion
DANN - NEUE VARIABLE - verzögert um 10 Minuten - Zustand Tastensperre deaktiviert 
Viele Grüße!
Jörg

Antworten

Zurück zu „HomeMatic allgemein“