HomeMatic WebUI: Unterschied zwischen den Versionen

Aus Wikimatic
Wechseln zu: Navigation, Suche
(die Logik der WebUI Programme)
(Aktor für eine bestimmte Zeit einschalten (Treppenlichtautomat))
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
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 im hinter der Wenn Bedingung erfüllt ist, egal wie die Wenn Bedingung an sich ausieht. Bei Auslösen bei Änderung oder Aktualisierung achtet 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 immer wenn sich der Zustand ändert!
+
#Das Programm wird immer gestartet, wenn eine der Auslösebedingungen am Ende der Wenn Bedingung (nennen wir es Ereignis) 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 ganze Programm gestartet werden soll.<br />"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 Teil, beim schliessen der Sonst Teil. Wird dieses Programm durch irgend etwas anderes (zum Beispiel durch einen manuellen Start per WebUI) gestartet, dann wird wenn in diesem Moment das Fenster offen ist, der Dann Teil ausgeführt, ansonsten der Sonst Teil.
  
 
== Wann werden Programme gestartet ? ==
 
== Wann werden Programme gestartet ? ==
Zeile 24: Zeile 26:
 
** 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)
 
** 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
 
** 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)
+
** ganztags: einmal täglich um 0:00:00 Uhr (Wird das Programm durch ein anderes Ereignis ausgelöst, ist die Bedingung immer wahr)
  
 
===Beispiele===
 
===Beispiele===
Zeile 74: Zeile 76:
 
  +
 
  +
  
=== Aktor für eine bestimmte Zeit einschalten (Treppenlichtautomat) ===
+
=== Aktor für eine bestimmte Zeit einschalten (Treppenlichtautomat) mit Web UI ===
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.
+
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 (und die Doku sagt es sogar ausdrücklich), 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: [[Einen Aktor für eine Zeitdauer einschalten]]
  
 
== siehe auch ==
 
== siehe auch ==
* [[Anzeige des Sende- und Empfangspegels]] (versteckte Konfigurationsseite)
 
 
* [[Tipps]]
 
* [[Tipps]]
 
* [[Hinweise für Anfänger]]
 
* [[Hinweise für Anfänger]]
 +
* [[Anzeige des Sende- und Empfangspegels]] (versteckte Konfigurationsseite)
 +
* [[WebUI-Programme für den Alltag]]

Aktuelle Version vom 3. Oktober 2014, 08:00 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.

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

  1. 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?)
  2. Das Programm wird immer gestartet, wenn eine der Auslösebedingungen am Ende der Wenn Bedingung (nennen wir es Ereignis) 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 ganze 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 Teil, beim schliessen der Sonst Teil. Wird dieses Programm durch irgend etwas anderes (zum Beispiel durch einen manuellen Start per WebUI) gestartet, dann wird wenn in diesem Moment das Fenster offen ist, der Dann Teil ausgeführt, ansonsten 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: einmal täglich um 0:00:00 Uhr (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) mit Web UI

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 (und die Doku sagt es sogar ausdrücklich), 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: Einen Aktor für eine Zeitdauer einschalten

siehe auch