Bedingung für Programmausführung

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
pawi
Beiträge: 2
Registriert: 21.03.2024, 09:47
System: Alternative CCU (auf Basis OCCU)

Bedingung für Programmausführung

Beitrag von pawi » 21.03.2024, 10:22

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?
Dateianhänge
Bildschirmfoto 2024-03-21 um 10.16.49.png
Zuletzt geändert von Roland M. am 21.03.2024, 10:31, insgesamt 1-mal geändert.
Grund: Thema verschoben

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Bedingung für Programmausführung

Beitrag von NickHM » 21.03.2024, 10:57

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.
Zuletzt geändert von NickHM am 21.03.2024, 11:01, insgesamt 1-mal geändert.

MichaelN
Beiträge: 9684
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: Bedingung für Programmausführung

Beitrag von MichaelN » 21.03.2024, 10:58

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.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Bedingung für Programmausführung

Beitrag von NickHM » 21.03.2024, 11:02

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 :)

frd030
Beiträge: 3625
Registriert: 14.07.2019, 20:49
System: CCU
Hat sich bedankt: 847 Mal
Danksagung erhalten: 543 Mal

Re: Bedingung für Programmausführung

Beitrag von frd030 » 21.03.2024, 12:08

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!

rentier-s
Beiträge: 378
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 67 Mal

Re: Bedingung für Programmausführung

Beitrag von rentier-s » 21.03.2024, 12:29

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.

frd030
Beiträge: 3625
Registriert: 14.07.2019, 20:49
System: CCU
Hat sich bedankt: 847 Mal
Danksagung erhalten: 543 Mal

Re: Bedingung für Programmausführung

Beitrag von frd030 » 22.03.2024, 08:29

Es könnte schonmal helfen, aus dem ersten ODER ein UND zu machen. Je nachdem, was das Programm machen soll, erscheint mir das sinnvoll.

rentier-s
Beiträge: 378
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 67 Mal

Re: Bedingung für Programmausführung

Beitrag von rentier-s » 22.03.2024, 11:12

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.

frd030
Beiträge: 3625
Registriert: 14.07.2019, 20:49
System: CCU
Hat sich bedankt: 847 Mal
Danksagung erhalten: 543 Mal

Re: Bedingung für Programmausführung

Beitrag von frd030 » 22.03.2024, 12:28

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.

pawi
Beiträge: 2
Registriert: 21.03.2024, 09:47
System: Alternative CCU (auf Basis OCCU)

Re: Bedingung für Programmausführung

Beitrag von pawi » 04.04.2024, 10:29

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

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“