Hallo,
Ich versuche krampfhaft in einem Dummy ein Reading einzubauen. Kriege es aber nicht hin:
attr Tageslicht userReadings {sunset("HORIZON=-6")}
Das Reading wird nicht angelegt. Ich möchte auf diese Weise SA un Su in einem Reading ablegen und Gleichzeitig den State vom Dummy auf hell bzw. dunkel andern.
Jemand eine Idee? Geht das überhaupt mit einem Dummy?
Christian
Hallo Christian,
hast du es schon mal ohne geschweifte Klammern versucht? Ist wohl ein fhem-Befehl - nicht perl.
Gruß Jens
Dein Userreading hat keinen Namen
[auote author=commandref]
http://fhem.de/commandref#readingFnAttributes (http://fhem.de/commandref#readingFnAttributes)
userReadings
A comma-separated list of definitions of user-defined readings. Each definition has the form:
<reading>[:<trigger>] [<modifier>] { <perl code> }
After a single or bulk readings update, the user-defined readings are set by evaluating the perl code { <perl code> } for all definitions and setting the value of the respective user-defined reading <reading> to the result. If <trigger> is given, then all processing for this specific user reading is only done if one of the just updated "reading: value" combinations matches <trigger>, which is treated as a regexp.
Zitat
Allerdings wird das Reading erzeugt, wenn sich ein reading des Dummy ändert, du möchtest es ja genau umgekehrt haben.
Grüße
Igami
Hallo,
irgendwie bin ich zu blöd!
Weder mit, noch ohne {} funktioniert es. Er legt auch nicht einmal das Reading an...
Internals:
CFGFN config/Dienste.cfg
NAME Tageslicht
NR 59
STATE hell
TYPE dummy
Readings:
2014-12-17 15:41:34 state hell
Attributes:
room 98-Dummy
userReadings Test sunrise("HORIZON=-6")
@igami:
das Userreading hat schon einen Namen. Habe diesen offenbar im obigen bsp. vergessen zu kopieren..
Christian
Hallo,
Ich habe das mal bei mir eingebaut (in eine reelles Gerät). Mit "Userreadings Test {sunrise("HORIZON=-6")} bekomme ich einen Wert. Dieser Wert wird aber erst angezeigt, wenn sich ein reeles Reading beim Gerät änder. Wenn Dein Dummy also On:Off kann, müsstest Du einmal schalten, um die Veränderung zu sehen. Eine Aktualisierung geschieht ebenfalls nur bei einer Veränderung.
Gruß Christoph
Hallo,
hast du mal versucht, es nicht über die fhem.cfg, sondern über die Eingabe zu machen - wird glaub ich allgemein sowieso eher empfohlen:
setreading Dummy userreading value
Dann wirds richtig angelegt.
Gruß,
Markus
Zitat von: m2th3o am 17 Dezember 2014, 20:25:21
Hallo,
hast du mal versucht, es nicht über die fhem.cfg, sondern über die Eingabe zu machen - wird glaub ich allgemein sowieso eher empfohlen:
setreading Dummy userreading value
Dann wirds richtig angelegt.
Gruß,
Markus
Hi,
nö! habe das als attribut gesetzt, mit setreading habe ich das noch nicht versucht! Bin jetzt auch verwirrt!
Wenn ich aber
setreading Tageslicht Untergang {sunset("HORIZON=-6")}
schreibt er "{sunset("HORIZON=-6")}" oder sunset("HORIZON=-6")"als Text hinein. Aber nicht den Wert
Christian
Hab es hierzu eine Lösung?
userReadings scheinen bei Dummy Devices generell nicht erzeugt zu werden.
Hallo,
Nach
{fhem("setreading Tageslicht Untergang ". sunset('HORIZON=-6'))}
steht bei mir im Reading 'Untergang' die Uhrzeit.
Gruß
Hans
Also bei mir funktionieren userReadings bei Dummy-Devices generell problemlos!
Wenn ich bspw. mit
attr devTimerDummy userReadings tst-horizon-6 {sunset('HORIZON=-6')}
ein userReading definiere, so wird dies auch erzeugt, aber natürlich erst, wenn der dummy dann auch mal geschaltet wird, bzw. mit set ein Wert zugewiesen wird.
natürlich funktionieren userReadings auch in dummys. aber weil sie grundsätzlich nur dann getriggert werden wenn sich ein anderes reading im gleichen device ändert sind sie in dummys oft nicht sinnvoll.
gruß
andre
Danke euch.
Mir ist klar, dass es einen Trigger für die Neuberechnung braucht, sprich man den Dummy verändern muss.
Ich konnte/wollte meinem Dummy zu dem Zeitpunkt keinen neuen Wert zuweisen und habe also den gleichen Wert nochmals gesetzt. Da ich kein event-on-* Attribut gesetzt habe und sich der Zeitstempel auch aktualisiert nahm ich natürlich an, dass dies als Trigger für die Neuberechnung ausreichend wäre. Dem ist wohl offenbar nicht so, es klappt nur, wenn ich ein anderes Value setze.
Aber immerhin, es tut. :-)