Hier habe ich Euch eine kleine Sammlung von ESPEasy Rules.

Online Check

Für diese Beispiel benötigt Ihr einen FHEM Server, mit welchem das ESPEasy kommunizieren kann. Die Idee hinter dem Onlinecheck ist folgende:

  • ESPEasy sendet eine HTTP Anfrage an FHEM http://IP-Adresse:Port/fhem?cmd=set%20FHEM.DEVICE.NAME%20event%20isonline=1
  • Diese Anfrage bewirkt,e dass der FHEM Server dem ESPEasy ein EVENT mit dem WERT 1 sendet.
  • ESPEasy wertet diese EVENT aus, und führt dann einen entsprechende Befehl aus.
  • Wie z.B. Reboot

Damit diese alles funktioniert, benötigt das ESPEasy ein "Dummy" Device. Folgende Konfiguration muss hier gemacht werden:

  1. Device = Dummy Device
  2. Name = dummy
  3. Enabled = Haken setzten, damit der Schalter aktiv ist
  4. Simulate Data Type = SENSOR_TYPE_SINGLE
  5. Send to Controller = Haken setzen, damit der Status an FHEM gesendet wird.
  6. Delay = 60 (Alle 60 sek. wird der Wert an FHEM gesendet) 
  7. Value = isonline (case sensitive beachten)
  8. Decimals = 0 (Hier werden nur ganze Zahlen übertragen)
  9. Speichern der Konfiguration mit "Submit"
  10. Beenden der Konfiguration mit "Close"

Das Skript ist in 4 Bereiche unterteilt

  1. "System#Boot" hier wird der Timer "Rules#Timer=1" in 600 sek. aktiviert
  2. "Rules#Timer=1" der Befehl "TaskValueSet 7,1,2" setzt beim Device mit der ID "7" den Wert mit der ID "1" auf "2". Direkt danach senden wir via "SendToHTTP" unseren Befehl an FHEM. Dieser Befehl soll den zuvor gesetzten Wert "2" auf "1" setzen. Da die Ausführung etwas dauert setzen wir hier einen weiteren Timer "Rules#Timer=3" mit einer Verzögerung von 3 Sekunden.
  3. "Rules#Timer=2" hier wird geprüft, ob unser Dummy device "dummy#isonline" den Wert "2" hat. Wenn hier der Wert "2" ermittelt wurde, ist dies das Zeichen, dass FHEM das ESPEasy nicht erreicht hat. In diesem Beispiel führen wir dann einen Reboot durch.
  4. "isonline" Hiermit kann das Dummy Device von außen gesteuert werden
    1. Die Aktivierung ist über eine URL "http://IPAdresse/control?cmd=event,isonline=<ZAHL>" möglich
    2. Oder über FHEM mit "set <name> event isonline=<ZAHL>"
    3. Der Befehl "TaskValueSet 7,1,%eventvalue%" setzt beim Device mit der ID "7" den Wert "%eventvalue%" mit der ID "1"
On System#Boot do
  timerSet,1,600
endon

On Rules#Timer=1 do
  TaskValueSet 7,1,2
  SendToHTTP IP-Adresse,Port,/fhem?cmd=set%20Gaestezimmer.Klima%20event%20isonline=1
  timerSet,2,3
endon

On Rules#Timer=2 do
  If [dummy#isonline]=2
    reboot
  endif
  timerSet,1,600
endon

on isonline do
  TaskValueSet 7,1,%eventvalue%
endon

Kommentar schreiben

Kommentare: 0