Ich habe jetzt schon tagelang in der Commandref, dem Forum und sonstwo gelesen, und ich bekomme es einfach nicht hin.
Ich muss einen Wert zwischenspeichern, bevor er sich ändert. Dazu habe ich ein Dummydevice erzeugt und will ihm den Wert eines anderen Devices zuweisen. Aber das klappt irgendwie nicht. Auf einfache Verhältnisse runter gestrippt sieht es folgendermaßen aus:
define dummy1 dummy
define dummy2 dummy
define alarm notify dummy1 set dummy2 ReadingsVal("dummy1", "state", "0")
set dummy1 1
Ich hätte erwartet, dass bei "set dummy1 1" sich auch dummy2 ändert und den Status "1" erhält. Stattdessen erhält dummy2 den Status "ReadingsVal("dummy1", "state", "0")", also einen String.
Wo ist mein Denkfehler bzw. wie würde es richtig aussehen?
Hallo,
ein notify wird mit "trigger" getestet, da es auf ein EVENT reagiert. Ein set ist kein EVENT, deshalb wird der notify nicht angesprochen. Habe gerade kein Beispiel parat,
müsste aber "trigger name Wert" sein - einfach in die Befehlszeile eingeben, am besten wenn der Eventmonitor offen ist.
Gruß Christoph
natürlich löst ein set ein event aus. genau so wie set reading. (siehe event monitor oder inform.)
dein code geht nicht weil du die fhem und perl ebene mischst. du solltest deswegen auch einen fehler im log sehen.
entweder fhem:define alarm notify dummy1 set dummy2 $EVENT
oder perl:define alarm notify dummy1 {fhem("set dummy2 ". ReadingsVal("dummy1", "state", "")}
gruss
andre
Hi Andre,
super, VIIIIEEELEN DANK !!! Beides funktioniert perfekt - wobei die fhem-Lösung mit $EVENT für meinen Fall (im Vollausbau, den ich hier nicht geschildert hatte) nicht klappt. Ich habe deshalb die perl-Lösung verwendet.
[confused]
Ich hatte nicht erwartet, dass ReadingsVal ein perl Kommando ist. Ich habe es bei allen Googeleien immer nur in Zusammenhang mit fhem gefunden. Und in meinen bisher durchlaufenen perl Crashkursen tauchte es auch nicht auf. Aber das erklärt auch, warum ReadingsVal in der Commandref nicht dokumentiert ist.
[/confused]
{fhem("set dummy2 ". ReadingsVal("dummy1", "state", "")} hatte ich im Prinzip auch versucht, allerdings so:
{fhem("set dummy2 ReadingsVal("dummy1", "state", "")")}
So allmählich dämmert mir, warum man mit dem . den ersten Teil des Kommandos mit dem ReadingsVal verbinden muss.
Besten Dank nochmal :)
Willy
es ist kein perl kommando sondern eine perl funktion. die ist aber nur auf der perl ebene verfügbar. in die perl ebene wechselst du mit dem {...}. sobald du auf der perl ebene bist stehen die fhem kommandos nur noch über den aufruf von fhem(...) zur verfügung.
gruss
andre
letzte (wahrscheinlich dumme :-[ ) Frage: woran erkenne ich, ob es eine perl-Funktion oder ein fhem Kommando ist - try & error wirds wohl nicht sein (?).
kommandos sind nur das was du siehst wenn du help eingibst.
alles andere ist perl.
gruss
andre
Hallo,
oder anders gesagt:
Alles was nicht in einem Perl-Buch als Befehl gelistet ist ist ein FHEM-Kommando ;)
Grüße
nein. eben nicht. ReadingsVal ist z.b. kein fhem kommando sondern eine perl funktion und gehört in {...}. auch wenn sie in keinem perl buch steht.
gruss
andre
Hallo,
ok - Beitrag von vorhin bitte vergessen.
War mal wieder Blödsinn.
Danke andre für den Hinweis.
Grüße
P.S.: Mann oh mann, man lernt echt nie aus 8)