HomeMatic WebUI: Unterschied zwischen den Versionen
(→die Logik der WebUI Programme) |
(→die Logik der WebUI Programme) |
||
Zeile 6: | Zeile 6: | ||
Merksätze zur WebUI-Logik | Merksätze zur WebUI-Logik | ||
#Es wird immer das ganze Programm ausgeführt, also von oben nach unten jeder Dann-Teil, wenn der jeweilige Wenn-Teil zutrifft. Die Bezeichnung "Sonst..." oder "Sonst Wenn..." ist falsch, es müsste heißen "Sonst..." und "Außerdem Wenn..." (so korrekt?) | #Es wird immer das ganze Programm ausgeführt, also von oben nach unten jeder Dann-Teil, wenn der jeweilige Wenn-Teil zutrifft. Die Bezeichnung "Sonst..." oder "Sonst Wenn..." ist falsch, es müsste heißen "Sonst..." und "Außerdem Wenn..." (so korrekt?) | ||
− | #Das Programm wird immer gestartet, wenn eine der Auslösebedingungen | + | #Das Programm wird immer gestartet, wenn eine der Auslösebedingungen am Ende der Wenn Bedingung erfüllt ist, egal wie die Wenn Bedingung an sich ausieht. |
+ | |||
+ | |||
+ | Bei Auslösen bei Änderung oder Aktualisierung achtet die CCU also nicht auf die Bedingung, sondern legt zunächst nur fest, wann das Programm gestartet werden soll. "bei ''offen'' '''auslösen auf Änderung'''" bedeutet '''nicht''': "bei ''öffnen''", sondern den Start des Programmes immer wenn sich der Zustand ändert! Die Wenn Bedingung sorgt danach nur dafür, das nur der Dann Teil ausgeführt wird (also beim öffnen der Dann Teile, beim schliessen der Sonst Teil. | ||
== Wann werden Programme gestartet ? == | == Wann werden Programme gestartet ? == |
Version vom 7. September 2014, 19:05 Uhr
Die HomeMatic Benutzeroberfläche HomeMatic WebUI ist die über einen beliebigen Web-Browser erreichbare Bedienoberfläche der CCU. Sie kann im lokalen Netz unter http://homematic-ccu2 erreicht werden. Über diese Bedienoberfläche können Geräte angelernt, konfiguriert, Statusinformationen abgerufen, Direktverknüpfungen und WebUI-Programme angelegt werden. Das Handbuch findet sich hier.
Inhaltsverzeichnis
die Logik der WebUI Programme
Die Logik der Programme gibt Anfängern immer wieder Rätsel durch die merkwürdige Darstellung auf. Deshalb hier die Grundsätze:
Merksätze zur WebUI-Logik
- Es wird immer das ganze Programm ausgeführt, also von oben nach unten jeder Dann-Teil, wenn der jeweilige Wenn-Teil zutrifft. Die Bezeichnung "Sonst..." oder "Sonst Wenn..." ist falsch, es müsste heißen "Sonst..." und "Außerdem Wenn..." (so korrekt?)
- Das Programm wird immer gestartet, wenn eine der Auslösebedingungen am Ende der Wenn Bedingung erfüllt ist, egal wie die Wenn Bedingung an sich ausieht.
Bei Auslösen bei Änderung oder Aktualisierung achtet die CCU also nicht auf die Bedingung, sondern legt zunächst nur fest, wann das Programm gestartet werden soll. "bei offen auslösen auf Änderung" bedeutet nicht: "bei öffnen", sondern den Start des Programmes immer wenn sich der Zustand ändert! Die Wenn Bedingung sorgt danach nur dafür, das nur der Dann Teil ausgeführt wird (also beim öffnen der Dann Teile, beim schliessen der Sonst Teil.
Wann werden Programme gestartet ?
- Allgemein
- nach dem Start oder Neustart der Zentrale
- Manuell über "Status->Bedienung->Programme"
- Geräte
- bei "Änderung auslösen": Immer wenn sich der Zustand des Sensors ändert
- bei "Aktualisierung auslösen": Immer wenn sich der Sensor meldet.
- Bei Fensterkontakten ist das mindestens einmal am Tag und bei Zustandsänderung, bei Sabotagemeldung, bei Batterie leer, ...
- Bei Bewegungsmeldern alle paar Minuten und bei Bewegung erkannt
- Bei Messsensoren entsprechend öfter (z.B. bei Messsteckdose alle 2..3 Minuten)
- bei "nur prüfen": nie
- Zeitmodul
- Zeitintervall: alle x Sekunden/Minuten/Stunden sofort nach letztem Speichern/Aktivierung des Programmes, danach immer zur vollen Zeit (z.B. bei stündlich 9:00:00, 10:00:00, ... , bei alle 10 Minuten 9:00:00, 9:10:00, 9:20:00, ...)
- zu Zeitpunkt auslösen: zum entsprechendem Zeitpunkt (Achtung, eine entsprechende wenn Bedingung in einem Programm ist nur wahr, wenn das Programm durch dieses Zeitmodul ausgelöst wurde. Bei Auslösung durch ein anderes Ereignis, zum Beispiel Zentrale startet neu, ist dieses immer falsch)
- in Zeitspanne auslösen: am Anfang und am Ende der Zeitspanne (Falls das Programm durch ein anderes Ereignis ausgelöst wurde, ist eine entsprechende wenn Bedingung innerhalb dieses Zeitraumes immer wahr, ansonsten falsch)
- Astrofunktion tagsüber/nachts: Das Programm wird bei Sonnenaufgang und Sonnenuntergang (also zweimal am Tag) gestartet, jedoch ist die Wenn Bedingung nur wahr bei Eintritt in Tag/Nacht. Wird das Programm durch ein anderes Ereignis ausgelöst, ist die Bedingung entsprechend tagsüber/nachts wahr
- ganztags: ??? (Wird das Programm durch ein anderes Ereignis ausgelöst, ist die Bedingung immer wahr)
Beispiele
Was tut dieses beispielhafte Programm?
Bedingung: Wenn... Geräteauswahl Fenster bei offen auslösen auf Änderung ODER Geräteauswahl Lampe bei Schaltzustand: ein auslösen auf Änderung Aktivität: Dann... Systemzustand Wohnmodus bei Wach
Das Programm liest sich zunächst so, als würde der Wohnmodus beim Öffnen des Fensters oder beim Einschalten der Lampe auf Wach gesetzt. Dies ist zwar richtig, aber nicht die ganze Wahrheit. Warum verdeutlicht die folgende fiktive Schreibweise (fiktiv, weil das WebUI das so nicht darstellt, aber eigentlich so meint):
Ausführung: Immer wenn... Geräteauswahl Fenster wird Geändert ODER Geräteauswahl Lampe wird Geändert Bedingung: ...dann prüfe ob... Geräteauswahl Fenster bei offen ODER Geräteauswahl Lampe bei Schaltzustand: ein Aktivität: Wenn Bedingung wahr, dann... Systemzustand Wohnmodus bei Wach
Hier wird der Unterschied deutlich: Das Programm wird auch dann ausgeführt, wenn die Lampe bereits eingeschaltet ist und das Fenster geschlossen wird, oder wenn das Fenster offen ist und die Lampe ausgeschaltet wird!
Das "Auslösen auf Änderung/Aktualisierung" bezieht sich immer nur auf das Gerät, nicht auf die dort angegebene Bedingung!
Rezepte
Rezepte sind kleine Schnipsel oder Hinweise, wie bestimmte Probleme gelöst werden können.
Eine variable Umschalten (Toggeln)
Bedingung: Wenn... 'Geräteauswahl' 'z.B. Taste einer Fernbedienung' bei 'Tastendruck kurz' und 'Systemzustand' Systemvariable bei 'wahr' 'nur prüfen' + + 'oder' ------------------------------------------------------------------- Aktivität: 'Dann' [X] Vor dem Ausführen alle laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern). 'Systemzustand' Systemvariable 'sofort' 'nicht wahr' + ------------------------------------------------------------------- Aktivität: 'Sonst...' [X] Vor dem Ausführen alle laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern). 'Systemzustand' Systemvariable 'sofort' 'wahr' +
Aktor für eine bestimmte Zeit einschalten (Treppenlichtautomat)
Was bei einer Direktverknüpfung einfach ist, bereitet in einem WebUI-Programm Schwierigkeiten. Der erste Fallstrick ist das Verständnis über das Setzen der Einschaltdauer, das man anstelle des "sofort an" bei Aktoren auswählen kann. Dies setzt wirklich nur die Einschaltdauer für den nächsten Einschaltvorgang, aber schaltet den Aktor nicht ein. Man muss also die Einschaltdauer setzen und dann zusätzlich den Aktor einschalten. Es sind deshalb dafür immer zwei Aktionen notwendig und zwar genau in dieser Reihenfolge (Dauer setzen, dann einschalten), da sich die Dauer ansonsten auf das nächste folgende Einschalten beziehen würde. Einige Autoren berichten zusätzlich, dass dies nur zuverlässig funktioniert wenn der Einschaltbefehl nicht sofort, sondern verzögert gesendet wird (hab ich persönlich nicht mit der Firmware 2.9.12 gegengeprüft). Da die CCU bei der Verzögerung nur minimal 1 Sekunde erlaubt, wird man nur mit dieser Verzögerung eine Aktion auslösen können. Dies kann bei Funktionen wie einer Lampenschaltung mit einem Bewegungsmelder störend sein, was es notwendig machen könnte anstelle des hier beschriebenen Weges für das ausschalten zusätzliches timergesteuertes Programm zum Ausschalten der Lampe anstelle der Einschaltdauer zu programmieren.
siehe auch
- Anzeige des Sende- und Empfangspegels (versteckte Konfigurationsseite)
- Tipps
- Hinweise für Anfänger