Hallo zusammen,
irgendwie komme ich nicht weiter, meine aber von der Logik und Syntax richtig zu liegen.
Warum geht es aber nicht?
Folgendes möchte ich prinzipiell umsetzen:
*8:00
{if ((...) && (...) && (...))
{fhem ("set ... ; set ... ; define Timer at +02:00 {if (ReadingsVal("..."),"value","") ne ("off") {fhem ("set ....")}} ; set ... ; set ... ")}
elsif (.....)
{fhem ("set ... ; set ... ")}
}
Also einen Timer, der schon auf der 1. Ebene Bedingungen wie Wochentage und Values berücksichtigt. Soweit geht das auch.
Jetzt will ich aber bei der Ausführung der Befehle "set ...." bei der Definition eines Timers in +2 Std. in dessen Ausführung ebenfalls nochmals eine "Perl-if" Abfrage einbauen, um in 2 Std den aktuellen Status eines Devices vor dem Ausführen des Timers zu berücksichtigen.
Das geht aber nicht wegen angeblichen Syntaxerros.
Was mache ich falsch?
"define Timer at +2:00 {}" in FHEM cmd eingegeben geht doch auch.
Gruß
Dirk
Ruf doch im Timer/at Define einfach eine Sub in myUtils auf und erledige alles dort (und statt define defmod):
defmod Timer at +02:00:00 {mySub()}
Bzw. (so würde ich das machen / mache ich das) gleich alles in eine Sub packen...
EDIT: aufpassen mit Anführungszeichen "innerhalb" von Anführungszeichen. Da dann "escapen" oder "einfache Anführungszeichen" verwenden, da dann aber "aufpassen" weil dann "darin" KEINE Variablen "ausgewertet" werden, sondern "exakt" das steht/stehen bleibt was eben da drin steht. "$Variable" -> "Inhalt" von $Variable / '$Variable' -> $Variable (als "Text")
EDIT2: https://wiki.fhem.de/wiki/99_myUtils_anlegen
Ansonsten: statt "pseudo-code" besser "Original-Code" und "Original-Fehlermeldung"...
...sonst wird das ein wildes "Ratespiel"...
Gruß, Joachim
Danke für den Tip.
Ich packe das mal in die MyUtils und teste mal so, ob es geht.
Zitat von: MadMax-FHEM am 01 März 2020, 14:08:02
Ruf doch im Timer/at Define einfach eine Sub in myUtils auf und erledige alles dort (und statt define defmod):
defmod Timer at +02:00:00 {mySub()}
Bzw. (so würde ich das machen / mache ich das) gleich alles in eine Sub packen...
EDIT: aufpassen mit Anführungszeichen "innerhalb" von Anführungszeichen. Da dann "escapen" oder "einfache Anführungszeichen" verwenden, da dann aber "aufpassen" weil dann "darin" KEINE Variablen "ausgewertet" werden, sondern "exakt" das steht/stehen bleibt was eben da drin steht. "$Variable" -> "Inhalt" von $Variable / '$Variable' -> $Variable (als "Text")
EDIT2: https://wiki.fhem.de/wiki/99_myUtils_anlegen
Ansonsten: statt "pseudo-code" besser "Original-Code" und "Original-Fehlermeldung"...
...sonst wird das ein wildes "Ratespiel"...
Gruß, Joachim
Danke Joachim, es funktioniert mit der MyUtils.
Prima!
Gerne!
Dann pack doch noch ein [gelöst] oder [erledigt] vor den ersten Post...
Viel Erfolg, Joachim