Seite 1 von 1

Bedingung für Programmausführung

Verfasst: 21.03.2024, 10:22
von pawi
Hallo, ich habe längere Zeit gebraucht, um ein Problem zu lösen, welches mit dem Ausführen eines Programs, bzw. mit der Bedingung zum Ausführen zusammen hängt. Ich habe das Problem zwar durch trial-und-error lösen können, verstehe jedoch noch nicht, was tatsächlich das Problem war.

Und zwar habe ich einen Bewegungssensor im Einsatz und möchte bei Bewegung ein Licht für eine bestimmte Zeit einschalten. Zusätzlich habe ich zwei Systemvariablen, welche den Status zuhause/abwesend für mich und meine Frau abbilden. Diese habe ich in die Bedingung als zusätzliche Auslöser hinzugefügt. Das Licht sollte also entweder durch den Bewegungssensor, oder wenn jemand von uns nach Hause kommt auslösen.

Das nicht erwartete Verhalten war jedoch folgendes: Das Licht wurde in allen Fällen wie erwartet eingeschaltet. Wenn jedoch jemand das Licht innerhalb der 'Zeit nach der erkannte Bewegung zurückgesetzt wird' vom Bewegungsmelder (30 Sekunden) über den Taster ausgeschaltet hat, wird das Licht nach den 30 Sekunden wieder eingeschaltet. Das Program wird also beim Übergang von 'Bewegung erkannt' UND "Keine Bewegung erkannt" ausgeführt, was ich nicht erwartet hätte. Es macht diesbezüglich keinen Unterschied, ob ich 'bei Aktualisierung' oder 'bei Änderung auslösen' eingestellt habe.

Nehme ich die beiden Trigger der Systemvariablen für die Anwesenheit heraus, funktioniert alles wie erwartet. Wer kann mir erklären warum diese beiden zusätzlichen Trigger, welche offenbar das Programm ausführen lassen, wenn sich der Bewegungssensor auf den Status 'keine Bewegung erkannt' ändert? Und wie kann ich die Auslösung durch die Anwesenheit sauber ergänzen?

Re: Bedingung für Programmausführung

Verfasst: 21.03.2024, 10:57
von NickHM
Hallo

beantworten kann ich Dir die Frage nicht.

Ich kann aber Tips zur Fehleranalyse bzw. zur Erklärung des Verhaltens liefern.

- stell die 3 Bedingungen in den Geräteeinstellungenn auf "protokolliert" Dann kannst Du im Systemprotokoll sehen, welchen Zustand der BM und die beiden SysVar zum fraglichen Zeitpunkt haben und ggf. das Verhalten des Programms erklären.

- zum Einschalten würde mir noch einfallen, nur einen Befehl zu schicken, der das Licht für 1min einschaltet.
"einschaltdauer 1min"
"einschalten sofort"
Dann läuft der Timer im Gerät und das Programm ist beendet.

Grundsätzlich funktioniert sowas immer besser, wenn man eine Direktverknüpfung nutzt. Zumindest für BM und Aktor.

PS. jemand kommt nach hause
der BM schaltet das Licht an
später kommt erst die Sysvar "zuHause" und löst das Programm noch mal aus. das Licht wurde manuell abgeschaltet. Dann geht es durch die SysVar noch mal an. Deshalb die Protokollierung, um den Ablauf nachvollziehbar zu machen.

Re: Bedingung für Programmausführung

Verfasst: 21.03.2024, 10:58
von MichaelN
pawi hat geschrieben:
21.03.2024, 10:22
Das Program wird also beim Übergang von 'Bewegung erkannt' UND "Keine Bewegung erkannt" ausgeführt,
Das ist richtig, da beides eine Änderung ist. Das Programm startet und dann werden die Bedingung geprüft. Bewegung ist dann zwar nicht wahr, aber wohl die Anwesenheit.

Re: Bedingung für Programmausführung

Verfasst: 21.03.2024, 11:02
von NickHM
MichaelN hat geschrieben:
21.03.2024, 10:58



Das ist richtig, da beides eine Änderung ist. Das Programm startet und dann werden die Bedingung geprüft. Bewegung ist dann zwar nicht wahr, aber wohl die Anwesenheit.
Also zwei Programme oder eine Direktverknüpfung für den BM und ein Programm für die SysVar.

Danke Micha. Es kann so einfach sein :)

Re: Bedingung für Programmausführung

Verfasst: 21.03.2024, 12:08
von frd030
pawi hat geschrieben:
21.03.2024, 10:22
Nehme ich die beiden Trigger der Systemvariablen für die Anwesenheit heraus, funktioniert alles wie erwartet. Wer kann mir erklären warum diese beiden zusätzlichen Trigger, welche offenbar das Programm ausführen lassen, wenn sich der Bewegungssensor auf den Status 'keine Bewegung erkannt' ändert? Und wie kann ich die Auslösung durch die Anwesenheit sauber ergänzen?
Du hast alle Bedingungen verODERt! D.h. sobald das Program getriggert wird, und nur eine der drei Bedingungen wahr ist, wird das Licht angeschaltet.

Der Bewegungsmelder triggert das Programm auf "Änderung" - also auch wenn er in den Zustand "keine Bewegung erkannt" geht. Die erste Bedingung ist dann unwahr, aber wenn jemand anwesend ist, egal wer -> tadaaa -> Licht geht an <- eine der beiden anderen Bedingungen ist in dem Moment eben wahr, damit der gesamte WENN Block!

Trggern und Bedingungsprüfung sind zwei sequentielle Vorgänge -> siehe Thread zu Zentralenlogik!

Re: Bedingung für Programmausführung

Verfasst: 21.03.2024, 12:29
von rentier-s
NickHM hat geschrieben:
21.03.2024, 11:02
Also zwei Programme oder eine Direktverknüpfung für den BM und ein Programm für die SysVar.
Mehrere "oder" Auslöser in einem Programm sind in den meisten Konstellationen ungünstig. Deshalb in Deinem Fall ein Programm/Direktverknüpfung für den BM und zusätzlich jeweils ein Programm für jede SysVar. Sonst geht das Licht nämlich auch an, wenn einer zuhause ist (bleibt) und der andere abwesend wird.

Von welchen Geräten reden wir, HM oder HmIP? Kanal 1 schalten klingt nach HM und damit kann es nämlich nochmal mehr tricky werden, weil man keine Kanalaktionen hat und deshalb das ausschalten über die Verzögerung machen muss. Außerdem fehlen die virtuellen Kanäle, man muss also zusätzlich dafür sorgen, dass sich manuelles und automatisches Ein- und Ausschalten nicht in die Quere kommen.

Re: Bedingung für Programmausführung

Verfasst: 22.03.2024, 08:29
von frd030
Es könnte schonmal helfen, aus dem ersten ODER ein UND zu machen. Je nachdem, was das Programm machen soll, erscheint mir das sinnvoll.

Re: Bedingung für Programmausführung

Verfasst: 22.03.2024, 11:12
von rentier-s
frd030 hat geschrieben:
22.03.2024, 08:29
Je nachdem, was das Programm machen soll
Steht doch oben:
pawi hat geschrieben:
21.03.2024, 10:22
Das Licht sollte also entweder durch den Bewegungssensor, oder wenn jemand von uns nach Hause kommt auslösen.
"Und" ist also nicht sinnvoll.

Re: Bedingung für Programmausführung

Verfasst: 22.03.2024, 12:28
von frd030
rentier-s hat geschrieben:
22.03.2024, 11:12
"Und" ist also nicht sinnvoll.
Stimmt, muss man in dem vielen Text erstmal finden...
Ich würd's dann ggf. aufteilen: Steuerung durch BWM kann auch per DV erfolgen.
Die Anwesenheit steuern über ein (separates) Programm. Das erste ODER ist der Knackpunkt.

Re: Bedingung für Programmausführung

Verfasst: 04.04.2024, 10:29
von pawi
Hallo Leute,

Sorry für die späte Rückmeldung! Und herzlichen Dank für eure Unterstützung bzw. Erläuterungen. Nun macht alles Sinn :-)

Ich war mir nicht bewusst, dass das Programm bei jeder Änderung gestartet (getriggert) wird, und erst dann die Bedingungen geprüft werden.

Direktverknüpfung geht leider nicht, da der BM HomeMaticIP ist und der Switch ein traditioneller HM (classic). Ich mache also zwei Programme draus.

Danke nochmals! Gruss