at - verschiedene IFs hintereinander

Begonnen von IcedEarth, 12 Mai 2020, 19:50:44

Vorheriges Thema - Nächstes Thema

IcedEarth

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

rischbiter123

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
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

rabehd

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
Auch funktionierende Lösungen kann man hinterfragen.

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

IcedEarth

#4
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

Otto123

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()(..)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

IcedEarth

Au-Backe... Das wollte ich natürlich nicht. Mit zwei Semikolon sollte sich das dann ja geklärt haben.

Viele Grüße