(gelöst) rechnen mit Readings

Begonnen von dihe85, 27 Juli 2023, 12:59:14

Vorheriges Thema - Nächstes Thema

dihe85

Hallo Beta-user,
danke für die Erläuterung.
Ich denke mir erscheint das trennen der Berechnung logischer.

Dann erläutert sich das Addieren von zwei Readings auch von alleine.

Das doppelte Semikolon steht für die Trennung der Befehle?
Wenn ich im notify dann zwei verschiedene Befehle ausführen würde, müsste ich dann wieder mit ;; trennen?
Gruß Dirk

betateilchen

Zitat von: dihe85 am 01 August 2023, 17:10:39Ich denke mir erscheint das trennen der Berechnung logischer.

Kann man so machen, ist aber unnötig.

Zitat von: dihe85 am 01 August 2023, 17:10:39Dann erläutert sich das Addieren von zwei Readings auch von alleine.

Das Addieren von readings hat nix mit dem Punkt zu tun.

Zitat von: dihe85 am 01 August 2023, 17:10:39Das doppelte Semikolon steht für die Trennung der Befehle?
Wenn ich im notify dann zwei verschiedene Befehle ausführen würde, müsste ich dann wieder mit ;; trennen?

Da sind wir wieder bei der Unterscheidung von perl-Code und FHEM-"Code".
Das Semikolon ist perl-Syntax. Ob Du ein oder zwei Semikolon braucht, kommt darauf an, an welcher Stelle in FHEM Du den perl-Code eingeben möchtest.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

dihe85

Zitat von: betateilchen am 01 August 2023, 17:14:29
Zitat von: dihe85 am 01 August 2023, 17:10:39Ich denke mir erscheint das trennen der Berechnung logischer.

Kann man so machen, ist aber unnötig.

Ja
defmod MQTT2_Tester_notify_3 notify MQTT2_Tester:POWER:.on { fhem("setreading tester Niederschlag_h ".ReadingsNum("tester","Niederschlag_h",0)+1) }defmod MQTT2_Tester_notify_3 notify MQTT2_Tester:POWER:.on { fhem("setreading tester Niederschlag_h ".ReadingsNum("tester","Niederschlag_h",0)+1) }Führte aber zu einer Fehlermeldung im log.
Ich habe bis jetzt nicht herausgefunden wieso.
Zusätzliche Klammern lösen zwar den Fehler, aber ich verstehe nicht wieso
defmod MQTT2_Tester_notify_3 notify MQTT2_Tester:POWER:.on { fhem("setreading tester Niederschlag_h ".(ReadingsNum("tester","Niederschlag_h",0)+1))}
Zitat von: betateilchen am 01 August 2023, 17:14:29
Zitat von: dihe85 am 01 August 2023, 17:10:39Dann erläutert sich das Addieren von zwei Readings auch von alleine.

Das Addieren von readings hat nix mit dem Punkt zu tun.
Jupp verstanden der . ist das Verkettungszeichen.
Daher muss der vorranstehende Text auch mit einem Leerzeichen enden, damit die Fhem-Syntax stimmt.

Zitat von: betateilchen am 01 August 2023, 17:14:29
Zitat von: dihe85 am 01 August 2023, 17:10:39.... müsste ich dann wieder mit ;; trennen?

Da sind wir wieder bei der Unterscheidung von perl-Code und FHEM-"Code".
Das Semikolon ist perl-Syntax. Ob Du ein oder zwei Semikolon braucht, kommt darauf an, an welcher Stelle in FHEM Du den perl-Code eingeben möchtest.
Und das hab ich noch nicht verstanden.
Ein Semikolon steht für das Ende eines Statements. OK soweit so gut also Ende der Befehlszeile. Und das zweite?

betateilchen


Zitat von: dihe85 am 01 August 2023, 21:31:41Ein Semikolon steht für das Ende eines Statements. OK soweit so gut also Ende der Befehlszeile. Und das zweite?

Langsam wird es langweilig.

Lies doch einfach in der FHEM commandref nach, da ist das unter "FHEM command types" exakt beschrieben.

ZitatMultiple FHEM commands are separated by semicolon (;). In order to use semicolon in perl code or shell programs, they have to be escaped by the double semicolon (;;). See the Notes section of the notify chapter on command parameters and escape rules.

Manchmal braucht man ja auch 4 Semikolon.
Aber das erkläre ich jetzt nicht auch noch.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!