Guten Tag zusammen,
ich versuche nun seit Stunden die Bedingungen in einem notify zu setzen aber es wird einfach nicht akzeptiert.
RegEXP1:.* {
fhem("define TEST at +00:00:10 { if (Value("Dummy1") eq "off") { fhem("set Dummy2 on")}fhem("set Dummy3 on")}")
}
Daher meine Frage: Kann es sein, dass es nicht erlaubt ist beliebig oft fhem und Perl Befehle zu kombinieren?
Ich habe auch bereits versucht dutzende Semikolons an geeigneten Stellen zu platzieren (...wobei ich mir nicht sicher bin, ob ich bei diesem Szenario überhaupt Escapen muss...")
der define Befehl funktioniert übrigens wunderbar, wenn ich diesen direkt in die fhem Kommandozeile schreibe.
Vielen Dank im Voraus!
Bin auch kein Perl-Held, aber versuch mal das:
RegEXP1:.* defmod TEST at +00:00:10 { fhem "set Dummy2,Dummy3 on" if (Value("Dummy1") eq "off")}
oder:
RegEXP1:.* defmod TEST at +00:00:10 { if (Value("Dummy1") eq "off") { fhem "set Dummy2 on";;fhem "set Dummy3 on"}}
Wenn Du mehrere "" ineinander verschachtelst (und das wirklich brauchst), mußt Du escapen, manchmal reicht es auch, zwischen " und ' zu wechseln.
Gruß, Beta-User
Internals:
CFGFN
DEF testDummy:.* {
fhem("define TEST at +00:00:10 { fhem\(\"set testDummy2 on;; set testDummy3 on\"\) if\( Value\(\"testDummy2\"\) ne \"on\") }");
}
NAME testNotify
NOTIFYDEV testDummy
NR 31
NTFY_ORDER 50-testNotify
REGEXP testDummy:.*
STATE 2017-07-17 13:47:32
TYPE notify
READINGS:
2017-07-17 13:47:13 state active
Attributes:
Getestet und für funktional befunden
Hallo.
Danke euch beiden für die Antworten aber wenn ich mir euren Quellcode anschaue, erreicht dieser nicht das, was ich eigentlich wollte, oder?
Geplant gewesen ist folgendes: Wenn trigger, dann "define at" welches nach Zeit X den Zustand von Y ändert und den Zustand von Z nur ändert, wenn die zusätzliche Bedingung erfüllt ist.
Bei eurem Code wird die hat die if-Schleife Auswirkung auf beide Dummys...
Nun kann man natürlich darauf warten das jemand daher kommt und einen genau für Deine Anforderung fertigen Code liefert, Oder aber man nimmt den gegebenen Code und versucht diesen Anhand vorhandener Gegebenheiten an zu passen.
Deine Entscheidung. Ich kann sagen das mein Code funktioniert. Er legt ein at an und das at führt den Befehl inklusive Bedingungsabfrage nach X Minuten aus.
Danke CoolTux.
Der Ansatz mit den backslashs war genau richtig. Damit konnte ich meine Herausforderung umsetzen. Die Lösung, falls jemand diese mal brauchen sollte, lautet schlussendlich:
fhem("define TEST at +00:00:10 { fhem\(\"set dummy1 on\"\);; fhem\(\"set dummy2 on\"\) if\( Value\(\"dummy3\"\) ne \"on\") }");
Danke nochmal...