IF-Bedingung richtig programmieren - aber wie???

Begonnen von kblc, 05 Oktober 2017, 12:31:26

Vorheriges Thema - Nächstes Thema

kblc

Hallo.
Ich habe eine, wohl eher kleine Frage.

Ich habe nun viel über die IF-Bedingung im Commandref und der Einsteiger-PDF von UliM gelesen. Nun läuft mein FHEM nun auch schon ein paar Jahre (zu Beginn noch auf der FB). Es ist schon fast peinlich, aber mir ist immer noch nicht klar, wie ich ein IF-Bedingung programmiere.
Also wie ich die schreibe, verstehe ich und das bekomme ich bestimmt auch hin oder erarbeite es mir, aber wohin ist die Frage? Wo schreibe ich die IF-Bedinging rein?

Kann mir diese (wohl leichte) Frage jemand beantworten oder mir sagen, wo ich dazu antworten finde.

Dann kann ich nämlich mit den IF-Programmierungen mich einmal auslassen und in dieser Richtung mein FHEM wieder etwas "perfektionieren".

Vielen vielen Dank für Euere Geduld und Hilfe.

KBLc
SPS, Arduino, Controllino, Sensortechnik, Elektronik

gloob

Was hast du denn vor? Normalerweise nutzt man IF in einem DOIF oder Notify.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

viegener

Ja vielleicht wäre es gut rauszufinden, wofür das IF genutzt werden soll, grundsätzlich schreibst due beim IF aber einfach zwei in Klammern eingeschlossene Teile nach dem IF, zuerst die Bedingung als perl-Ausdruck, wobei auch set-Logik verwendet werden kann um Device-Infos einzubeziehen und dann eine Klammer mit FHEM-Befehlen also

IF ( bedingung ) ( fhem-kommandos )

Ausserdem kann noch ELSE und weitere Kommandos in Klammern folgen, generell macht das aber normalerweise nur sinn innerhalb eines anderen Konstruktes - notify, wathcdog etc
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Beta-User

Sind denn die Beispiele zu perl-if im Einsteiger-pdf (ab S. 37) nicht verständlich :o ?
Auch in der commandref zu IF (Modul) gibt es einfach anzupassende Beispiele...

Vielleicht solltest du dir diese nochmal ansehen und ggf. auf deine Bedarfe anpassen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

kblc

Hallo,
@Beta-User
ja das stimmt, das ist gut beschrieben, das habe ich auch mehrmals gelesen. Aber manchmal taucht eine Frage auf die eigentlich logisch ist. Das wollte ich eben klären. Denn ich fragte mich ob ich kann das IF auch so verwenden kann wie in C. Aber danke für den Hinweis




Aber...jetzt ist es mir klarer.

Also kann ich nicht wie bei C oder Python oder so im Ablauf die IF-Bedingungn einfach beginnen, ich brauche dazu einen "Grund" also beispielsweise ein Notify.

Vielen Dank für die schnelle Auskunft. Das hilft mir schon sehr viel weiter.

Nein ein Vorhaben hatte ich noch keines. Die Frage brannte allerdings schon lange, da ich immer wieder mal vor dem Problem stand mit dem IF. Aktuell kein Vorhaben. Aber ich denke, das wird sich nun ändern.

Vielen Dank

KBLc
SPS, Arduino, Controllino, Sensortechnik, Elektronik

Otto123

Hi kblc,

vielleicht soviel zum Unterschied "normales Programm" und FHEM.

Ein normales Programm startest Du, machst etwas und verwendest IF z.B. direkt in Schleifen zur Entscheidung.
FHEM läuft schon ständig und erzeugt Events, Dein "Programm" in FHEM ist also immer eine Art Event Handler. Du fängst mit Deiner Definition/Gerät den Event ein und reagierst.
Es gibt in Deinem FHEM keine Warteschleifen, die wären töricht.
IF dient Dir dann wieder dazu Entscheidungen zu treffen wie der Event verarbeitet werden soll.

IF oder if ist also immer Teil des Codes hinter dem define, das define reagiert auf Events oder sagt FHEM welchen Event es erzeugen soll.

Ich weiß, die Erklärung ruft bestimmt jede Menge Kritiker auf den Plan, sie ist einfach nur so als Gedankenbrücke gedacht.  ;)

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

kblc

Hallo Otto123,

vielen Dank auch für die klasse Erklärung. Genau das war mein Problem. Wenn man nicht viel programmiert und dennoch etwas mehr mit C, Java und Python, AWL und FUB als mit FHEM zu tun hat, ist die Umstellung, bei mir zumindest, immer mit einer Herausforderung gepaart.

Danke nochmal. Es hilft mir immer Stück für Stück weiter.

KBLc
SPS, Arduino, Controllino, Sensortechnik, Elektronik