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
Was hast du denn vor? Normalerweise nutzt man IF in einem DOIF oder Notify.
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
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.
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
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
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