Hilfe Grundverständnis Bedingungen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Ondas[tm]
Beiträge: 712
Registriert: 09.04.2017, 10:16
System: CCU
Wohnort: Nierstein [D]
Hat sich bedankt: 90 Mal
Danksagung erhalten: 68 Mal

Hilfe Grundverständnis Bedingungen

Beitrag von Ondas[tm] » 06.06.2019, 10:55

Hallo zusammen,
irgendwie fand ich das Handbuch "20.2.1.5 Bedingungen definieren" nur bedingt hilfreich und eine Forensuche ist immer nur so gut, wie der gewählte Suchbegriff.
Mein Problem:
Aktuell baue ich relativ verschachtelte Programme um Auslöser und Prüfgrößen abzufragen. Die Variablen / Geräte / Whatever können aber auch beides sein.
Ein Beispiel:
1.JPG
Würde ich, wenn ich mir den 2. Prüfbaum spare und beide Geräte (hier Sensoren) auf "Auf Änderung auslösen" setze, das gleiche Ergebnis erzielen? Sind also Bedingungen, die auf "auf Änderungen auslösen" stehen auch gleichzeitig zu erfüllende Prüfbedingungen?

Vielen Dank für Eure Hilfe.
Ralf
Aufgrund wiederholter nerviger Werbung und "product placement" würde ich mein Haus eher entsmarten als Mediola/NEO zu kaufen.

manfredh
Beiträge: 4155
Registriert: 09.09.2012, 10:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 78 Mal
Danksagung erhalten: 301 Mal

Re: Hilfe Grundverständnis Bedingungen

Beitrag von manfredh » 06.06.2019, 11:51

Ja!

Begründung:
Gemäß der Logik der WebUi-Programm wird ein Programm abgearbeitet (und wirklich nur dann - es wird nicht ständig geprüft!), wenn eine einzige Bedingungszeile mit "bei Änderung auslösen" ihren Inhalt ändert.

Erst dann läuft das Programm ab und prüft von oben nach unten, ob ein Bedingungsblock wahr ist, führt diesen ggfls. aus und geht wieder schlafen.

Die "Auslöser" am Ende jeder zeile könnte man so ausführlicher beschreiben:

nur prüfen = erst wenn das Programm getriggert wird (einmalig abläuft) wird diese zeile in die Prüfung mit eingebunden
bei Änderung auslösen = das Programm auslösen, wenn sich der Wahrheitsgehalt dieser einzelnen Zeile ändert
bei aktualisierung auslösen = das Programm jedesmal auslösen, wenn der Wert dieser einzelnen Zeile aktualisiert wird (z.B. bei einem Temperatursensor, auch wenn der Wert gleich bleibt)
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

Ondas[tm]
Beiträge: 712
Registriert: 09.04.2017, 10:16
System: CCU
Wohnort: Nierstein [D]
Hat sich bedankt: 90 Mal
Danksagung erhalten: 68 Mal

Re: Hilfe Grundverständnis Bedingungen

Beitrag von Ondas[tm] » 06.06.2019, 12:14

Super,
vielen Dank für die Rückmeldung!
Dann werde ich mal nach & nach die ganzen Programme verschlanken.
Ralf
Aufgrund wiederholter nerviger Werbung und "product placement" würde ich mein Haus eher entsmarten als Mediola/NEO zu kaufen.

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Hilfe Grundverständnis Bedingungen

Beitrag von dtp » 06.06.2019, 12:34

Was ich auch erst kürzlich lernen musste ist, dass "bei Akualisierung auslösen" selbst dann das Programm triggert, wenn die Nebenbedingung überhaupt nicht erfüllt ist.

Beispiel: Bei einem Fenster-Drehgriffsensor mit den Zuständen "offen", "gekippt" und "geschlossen" erfolgt selbst dann ein Triggern des Programms, wenn sich der Zustand von "offen" auf "gekippt" ändert, obwohl die Bedingung "geschlossen" "bei Aktualisierung auslösen" lautet. Wenn nun irgendwo ein Programmzweig mit der Bedingung "gekippt" "nur prüfen" existiert, wird dieser ausgelöst.

Bei deinem obigen Programm musst du übrigens aufpassen, ob du die beiden "bei Änderung auslösen"-Bedingungen veroderst oder verundest.

"A" "bei Änderung auslösen" UND "B" "bei Änderung auslösen" bedeutet, dass im Falle einer erfüllten Änderung der Nebenbedingung "A" oder "B" die jeweils andere "B" oder "A" geprüft wird. Das Programm löst also nur aus, wenn sich "A" oder "B" ändert UND "B" oder "A" zutrifft.

Bei "A" "bei Änderung auslösen" ODER "B" "bei Änderung auslösen" wird die jeweils andere Nebenbedingung nicht geprüft. Da genügt es, wenn sich "A" oder "B" ändern unabhängig vom Zustand der jeweils anderen Nebenbedingung.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Hilfe Grundverständnis Bedingungen

Beitrag von Gluehwurm » 06.06.2019, 13:05

Kap. 18 im aktuellen WebUI-Handbuch.

"18.2.1.1 Grundsätzliches zur Programmerstellung" erklärt das Verhalten.


Gruß
Bruno

Benutzeravatar
robbi77
Beiträge: 13858
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 739 Mal

Re: Hilfe Grundverständnis Bedingungen

Beitrag von robbi77 » 06.06.2019, 13:06

Wieso sollte hier nichts zu finden sein?
Das dürfte ja sogar angepinnt sein ...
viewtopic.php?f=31&t=4251
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Hilfe Grundverständnis Bedingungen

Beitrag von dtp » 06.06.2019, 13:25

Gluehwurm hat geschrieben:
06.06.2019, 13:05
"18.2.1.1 Grundsätzliches zur Programmerstellung" erklärt das Verhalten.
Entweder ich habe es überlesen, oder es steht eben leider doch nicht explizit drin, wie sich die folgenden Verknüpfungen im Einzelnen auf das Triggern eines Programms auswirken:
  1. "Bedingung A" "auf Änderung auslösen" UND "Bedingung B" "auf Änderung auslösen"
  2. "Bedingung A" "auf Aktualisierung auslösen" UND "Bedingung B" "auf Aktualisierung auslösen"
  3. "Bedingung A" "auf Änderung auslösen" UND "Bedingung B" "auf Aktualisierung auslösen"
  4. "Bedingung A" "auf Änderung auslösen" ODER "Bedingung B" "auf Änderung auslösen"
  5. "Bedingung A" "auf Aktualisierung auslösen" ODER "Bedingung B" "auf Aktualisierung auslösen"
  6. "Bedingung A" "auf Änderung auslösen" ODER "Bedingung B" "auf Aktualisierung auslösen"
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Ondas[tm]
Beiträge: 712
Registriert: 09.04.2017, 10:16
System: CCU
Wohnort: Nierstein [D]
Hat sich bedankt: 90 Mal
Danksagung erhalten: 68 Mal

Re: Hilfe Grundverständnis Bedingungen

Beitrag von Ondas[tm] » 06.06.2019, 14:32

Vielen Dank für die vielen Hinweise, mein Handbuch war veraltet, auch wenn sich der Inhalt nicht verändert hat.
Aber offensichtlich bin ich ja nicht der einzige der mit den Bedingungen etwas kämpft.
"A" "bei Änderung auslösen" UND "B" "bei Änderung auslösen" bedeutet, dass im Falle einer erfüllten Änderung der Nebenbedingung "A" oder "B" die jeweils andere "B" oder "A" geprüft wird. Das Programm löst also nur aus, wenn sich "A" oder "B" ändert UND "B" oder "A" zutrifft.
Das ist genau das gewünschte Verhalten: In Prosa:
Wenn EIN Fenster geschlossen wird, prüfe ob das ANDERE Fenster auch geschlossen ist, dann setze Variable auf zu, sonst auf offen.
(Gemeinsam angesteuerte Dachflächenfenster viewtopic.php?f=18&t=37420)
Ralf
Aufgrund wiederholter nerviger Werbung und "product placement" würde ich mein Haus eher entsmarten als Mediola/NEO zu kaufen.

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Hilfe Grundverständnis Bedingungen

Beitrag von Gluehwurm » 06.06.2019, 16:58

dtp hat geschrieben:
06.06.2019, 13:25
1 "Bedingung A" "auf Änderung auslösen" UND "Bedingung B" "auf Änderung auslösen"
Ändert sich Bedingung A oder B wird das Programm gestartet
2 "Bedingung A" "auf Aktualisierung auslösen" UND "Bedingung B" "auf Aktualisierung auslösen"
Aktualisierung von A oder B startet das Programm
3 "Bedingung A" "auf Änderung auslösen" UND "Bedingung B" "auf Aktualisierung auslösen"
Änderung von A oder Aktualisierung von B startet Programm
4 "Bedingung A" "auf Änderung auslösen" ODER "Bedingung B" "auf Änderung auslösen"
Siehe 1
5 "Bedingung A" "auf Aktualisierung auslösen" ODER "Bedingung B" "auf Aktualisierung auslösen"
Siehe 2
6 "Bedingung A" "auf Änderung auslösen" ODER "Bedingung B" "auf Aktualisierung auslösen"
Siehe 3

Die Auswertung der Bedingungen, usw., wird erst im Programmlauf (Programm ist gestartet) durchgeführt.

Das ist die Aussage z.B. dieses Auszugs aus dem WebUI-Handbuch:
"Die Trigger-Ereignisse sind komplett losgelöst von den logischen Abfrage-Bedingungen der
Programme zu betrachten ...
Das Ereignis „Änderung“ ist selbst also nicht Teil der logischen Abfrage, sondern dient lediglich als ein Auslöser,
um die Prüfung und Abarbeitung des gesamten Programms zu starten."
Zuletzt geändert von Gluehwurm am 06.06.2019, 20:00, insgesamt 1-mal geändert.

Benutzeravatar
robbi77
Beiträge: 13858
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 739 Mal

Re: Hilfe Grundverständnis Bedingungen

Beitrag von robbi77 » 06.06.2019, 19:25

Die „Verknüpfung“ ist egal, wenn sich eine Bedingung ändert oder aktualisiert, wird das Programm gestartet.
Wenn es durch eine Änderung oder Aktualisierung gestartet wurde, erst dann greift die „Verknüpfung“ mit UND/ODER.
Weil nach dem Start des Programmes werden die Bedingungen „geprüft“, ob die „Verknüpfungen“ passen oder eben nicht.
Und danach wird entschieden ob DANN oder SONST.
.....
Es ist eigentlich gar nicht so schwer, das schwere ist die Bedingungen so zu verknüpfen das hinten was gescheites raus kommt .... da die ccu die Eigenheit besitzt, sobald eine Bedingung zu trifft das zugehörige DANN/SONST ausgeführt wird und das Programm beendet wird. Deshalb auch immer mal der Hinweis, lieber viele kleine Programme als ein Monsterprogramm.

Nochmal zum eigentlichen Programm:

Wenn
F1 zu auf änderung
Und
F2 zu auf änderung
Dann
SV-F zu
Sonst
SV-F auf
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

Antworten

Zurück zu „HomeMatic allgemein“