FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: kblc am 05 Oktober 2017, 12:31:26

Titel: IF-Bedingung richtig programmieren - aber wie???
Beitrag von: kblc am 05 Oktober 2017, 12:31:26
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
Titel: Antw:IF-Bedingung richtig programmieren - aber wie???
Beitrag von: gloob am 05 Oktober 2017, 12:32:51
Was hast du denn vor? Normalerweise nutzt man IF in einem DOIF oder Notify.
Titel: Antw:IF-Bedingung richtig programmieren - aber wie???
Beitrag von: viegener am 05 Oktober 2017, 12:44:09
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
Titel: Antw:IF-Bedingung richtig programmieren - aber wie???
Beitrag von: Beta-User am 05 Oktober 2017, 12:49:33
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.
Titel: Antw:IF-Bedingung richtig programmieren - aber wie???
Beitrag von: kblc am 05 Oktober 2017, 12:57:18
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
Titel: Antw:IF-Bedingung richtig programmieren - aber wie???
Beitrag von: Otto123 am 05 Oktober 2017, 13:13:05
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
Titel: Antw:IF-Bedingung richtig programmieren - aber wie???
Beitrag von: kblc am 05 Oktober 2017, 22:56:27
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