FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: IcedEarth am 12 Mai 2020, 19:50:44

Titel: at - verschiedene IFs hintereinander
Beitrag von: IcedEarth am 12 Mai 2020, 19:50:44
Guten Abend zusammen,
ich denke jetzt schon den ganzen Abend über ein Problem nach. Ziel ist es ein at regelmäßig auszuführen, dass verschiedene Bedingungen nacheinander prüft und bei Bedarf einen Befehl absendet. Sinn dahinter soll eine Art Überwachung sein, die regelmäßig bestimmte Readings prüft und bei Bedarf Befehle ausführt. Gedacht habe ich mir das folgende:
define FHEM_ConstantCheck at +*00:05:00 WENN A0=true > set A1 false, WENN B0=false > set B1 true, etc...
Wie ihr seht, habe ich die verschiedenen IFs durch Kommata getrennt, da ich ja will, dass alle Ifs nacheinander geprüft werden.

Dummerweise habe ich gerade keine Ahnung, wie ich das in FHEM realisieren kann. Kann mir da jemand auf die Sprünge helfen?
Viele Grüße und besten Dank
Titel: Antw:at - verschiedene IFs hintereinander
Beitrag von: rischbiter123 am 12 Mai 2020, 19:55:35
Moin,

ich würde es so lösen, daß ich per at eine Funktion aufrufe und die If-Abfragen in 99_myUtils verarbeiten. Hat auch den Vorteil, daß Änderungen leichter zu machen sind und man Kommentare hinter die Einzelnen Prüfbedingungen schreiben kann.

LG

Andreas
Titel: Antw:at - verschiedene IFs hintereinander
Beitrag von: rabehd am 12 Mai 2020, 21:25:00
Warum prüfst Du die Readings regelmäßig und reagierst nicht einfach per notify auf das Setzen des Reading?
Dann wäre noch das DOIF, welches ich für eine solche Anwendung übersichtlicher finde und ein DOIF erlaubt auch Komentare.
Überwachen von Readings geht auch per https://commandref.fhem.de/commandref_DE.html#readingsWatcher (https://commandref.fhem.de/commandref_DE.html#readingsWatcher)
Titel: Antw:at - verschiedene IFs hintereinander
Beitrag von: Otto123 am 12 Mai 2020, 21:30:04
Sollte so gehen:
define FHEM_ConstantCheck at +*00:05:00 IF (A0=true)(set A1 false);;IF (B0=false)(set B1 true);;IF(etc.)(..)

Doku dazu:
https://fhem.de/commandref_DE.html#command
https://fhem.de/commandref_DE.html#IF

Gruß Otto
Titel: Antw:at - verschiedene IFs hintereinander
Beitrag von: IcedEarth am 13 Mai 2020, 17:23:41
Hallo zusammen,

danke für Euren Input. Der Readingswatcher sieht auch interessant aus. Das ganze in die Utils auszulagern hatte ich auch schon überlegt - irgendwie bin ich da aber aktuell noch zu zögerlich (glaube ich ;-))
Habe das jetzt erstmal nach Otto's Methode gemacht. Schauen, ob das funktioniert. Auf Dauer ist natürlich der readingswatcher eine gute Lösung. AKtuell bastel ich halt noch viel ;-)
Mit define FHEM_ConstantCheck at +*00:05:00 IF (A0=true)(set A1 false) ELSE();IF (B0=false)(set B1 true) ELSE();;IF(etc.) ELSE()(..) klappt es.

Viele Grüße
Titel: Antw:at - verschiedene IFs hintereinander
Beitrag von: Otto123 am 13 Mai 2020, 20:46:03
Zitatdefine FHEM_ConstantCheck at +*00:05:00 IF (A0=true)(set A1 false) ELSE();IF (B0=false)(set B1 true) ELSE();;IF(etc.) ELSE()(..)
Dein Code macht folgendes:
Es definiert ein at
define FHEM_ConstantCheck at +*00:05:00 IF (A0=true)(set A1 false) ELSE()
Dieser Codeteil wird sofort ausgeführt und erscheint nicht im at
IF (B0=false)(set B1 true) ELSE();;IF(etc.) ELSE()(..)
Titel: Antw:at - verschiedene IFs hintereinander
Beitrag von: IcedEarth am 15 Mai 2020, 08:25:31
Au-Backe... Das wollte ich natürlich nicht. Mit zwei Semikolon sollte sich das dann ja geklärt haben.

Viele Grüße