Hallo Zusammen,
ich versuche gerade erfolgelos den "STATE" meiner Somfy Devices auf den "STATE" des zentralen Somfy Devices zu setzen.
z.b:
setstate Raffstore_Aussen_Links [Alle_Raffstores:state]
mit dem Ergebnis, dass der String "[Alle_Raffstores:state]" als STATE von Raffstore_Aussen_Links gesetzt wird und nicht der tatsächliche Wert.
Ich hab schon einige Syntax Varianten und Ansprechmöglichkeiten wie ReadingsVal usw. durch und steh jetzt ein bisschen an.
Auf den Readings funktioniert der ähnliche Code einwandfrei setreading Raffstore_Aussen_Links postion [Alle_Raffstores:position]
Hintergrund des Anwendungsfalls:
Jede meiner Somfy Raffstores hat ein eigenes Devices um sie individuell ansprechen zu können. Alle Raffstores sind in einem gemeinsamen Device zusammengefasst. Somit muss nur eine Fahrbefehl abgesetzt werden um alle Raffstores gemeinsam fahren zu lassen. Daher versuche ich mittels Notify die Werte des zentralen Devices an die Einzeldevices zu übergeben. Nicht nur um den Status in der Visu parat zu haben sondern auch speziell in Verbindung mit dem "ASC" Modul. Dieses verwendet in meinem Fall das Zentraldevice um die Raffstores morgens und Abends zu fahren und die Einzeldevices um die "Lockout" Funktion zu realisieren.
Ich wäre für eure Hilfe Dankbar
lg
Christian
OK ... habs jetzt doch hinbekommen...
Mit der Variante wird der STATE nun korrekt gesetzt:
{ my $master_position = Value("Alle_Raffstores");; fhem("setstate Raffstore_Aussen_Links $master_position") }
Warum die Handhabe zwischen "setreading" und "setstate" nicht konsistent ist kann ich mir allerdings nicht erklären...
Hi,
was Du machen willst, nennt sich set magic. Dazu steht die der Doku:
ZitatFrom featurelevel 5.7 on the set and setreading command replaces:
[device:name] with the reading, internal or attribute of the device, if both device and the reading, internal or attribute exists.
You can use the r:, i: or a: prefix to restrict the search to one type, analogue to the devspec filtering.
The suffix :d retrieves the first number
The suffix :i retrieves the integer part of the first number.
The suffix :r<n> retrieves the first number and rounds it to <n> decimal places. If <n> is missing, then rounds it to one decimal place.
The suffix :t returns the timestamp (works only for readings)
The suffix :sec returns the number of seconds since the reading was set.
Example:
set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]
[device:name:d] same as above, but only the number is retrieved
[device:name:sec] same as above, but only the number is retrieved
{(perlExpression)} with the result of perlExpression. The $DEV variable is additionally available, designating the set device name.
These replacements are also known as "set magic".
Und es steht nichts von
setstate.
Ich kann nix dafür, ich wollte es nur erklären. ;)
Gruß Otto
Danke! War mir dessen nicht bewusst.
Das erklärts natürlich warums mit "setstate" nicht klappt.