Ich probiere gerade Rollos in eine structure einzubinden, was auch grundsätzlich funktioniert. Problem habe ich mit dem Reading state.
defmod RolloGruppe1 structure RolloGruppe1 RolloBad RolloBuero RolloSZ
attr RolloGruppe1 async_delay 10
attr RolloGruppe1 clientstate_behavior relative
attr RolloGruppe1 room Steuerung-Rollos
Ich führe aus:
set RolloGruppe1 sunAutomatic on
Das kommt auch bei den Rollos an und der Befehl wird umgesetzt. Von den Rollos selbst kommt allerdings, zu sehen unter Probably associated with als Status eine Zahl die den öffnungs Grad angibt.
Das das dann 3 verschiedene sind geht der Status der structure auf undefined.
Da ich allerdings auf den Status der structure Triggern möchte kann ich damit nichts anfangen.
Gerne hätte ich das die structure dann den Status sunAutomatic on annimmt.
Lässt sich das umsetzen?
LG
Tom
Dann musst du bei den Rollodevices ein mapping machen.
attr RolloBad RolloGruppe1_map state:^[1-9][0-9]{0,2}:on state:^0$:off
define n_RolloGruppe1 notify RolloGruppe1:sunAutomatic.on setreading st_RolloGruppe1 sunAutomatic on
Zitat von: betateilchen am 21 Juli 2018, 13:51:26
define n_RolloGruppe1 notify RolloGruppe1:sunAutomatic.on setreading st_RolloGruppe1 sunAutomatic on
Völlig unnötig Udo. Dafür gibt es doch das Attribut _mapping aus der structure
Gegen Deine Lösung sprechen aber einige Gründe.
- Das Mapping muss in jedem in der structure enthaltenen device gepflegt werden
- Das notify muss nur einmal angelegt werden
- Die gestellte Forderung
ZitatGerne hätte ich das die structure dann den Status sunAutomatic on annimmt
wird mit Deinem Mapping auch nicht erfüllt. Mit meiner Lösung gibt es zumindest eine Chance, den Status aus einem zusätzlichen reading zu ermitteln.
Zitat von: betateilchen am 21 Juli 2018, 15:46:35
- Die gestellte Forderung
wird mit Deinem Mapping auch nicht erfüllt. Mit meiner Lösung gibt es zumindest eine Chance, den Status aus einem zusätzlichen reading zu ermitteln.
Alleine durch das mapping nicht. Dazu muss man dann noch
clientstate_priority
setzen.
VIELEN DANK
das notify war für mich der Denkanstoß, da ich aber doch zwei Stati brauche habe ich es mit einem DOIF gelöst.
defmod RolloGruppe1Status DOIF (["RolloGruppe1:^sunAutomatic on$"]) (\
setreading RolloGruppe1 sunAutomatic on)\
DOELSEIF (["RolloGruppe1:^sunAutomatic off$"]) (\
setreading RolloGruppe1 sunAutomatic off)
attr RolloGruppe1Status do always
attr RolloGruppe1Status room Steuerung-Rollos
LG
Tom
Zitat von: tomspatz am 21 Juli 2018, 19:09:41
da ich aber doch zwei Stati brauche habe ich es mit einem DOIF gelöst.
das ist noch lange kein Grund für ein DOIF, das hätte man auch in einem (!) notify und ganz ohne Fallunterscheidung lösen können.
define n_RolloGruppe1 notify RolloGruppe1:sunAutomatic.* setreading st_RolloGruppe1 sunAutomatic $EVTPART1
@Betateilchen
Das ist ja mal geil. :P notify und ich sind leider keine Freunde, daher das mit dem DOIF umgesetzt, aber dein "Einzeiler" ist top.
Hoffe das ich den verwenden darf ?? ;)
Wobei wenn DOIF $EVTPART könnte wäre ich dabei geblieben.
schönen Sonntag
DOIF und ich sind bekanntermaßen natürliche Feinde 8)
Das Schöne ist: notify gibt es schon sehr viel länger in FHEM und es gibt definitiv nichts, das man nicht auch ohne DOIF lösen könnte (und das man auch in drei Jahren noch syntaktisch versteht)
Zitat von: tomspatz am 22 Juli 2018, 17:53:50
@Betateilchen
Das ist ja mal geil. :P notify und ich sind leider keine Freunde, daher das mit dem DOIF umgesetzt, aber dein "Einzeiler" ist top.
Hoffe das ich den verwenden darf ?? ;)
Wobei wenn DOIF $EVTPART könnte wäre ich dabei geblieben.
schönen Sonntag
Bei DOIF heißt es einfach $EVENT (steht übrigens in der Commandref ;) ). $event ist dagegen eine echte Perlvariable, die man beliebig im Ausführungsteil auswerten kann.
defmod RolloGruppe1Status DOIF (["RolloGruppe1:^sunAutomatic"]) (setreading RolloGruppe1 sunAutomatic $EVENT)
oder wie wäre es mit Perl (Perl-Modus):
defmod RolloGruppe1Status DOIF {fhem "setreading RolloGruppe1 [RolloGruppe1:sunAutomatic]"}
Zitat von: Damian am 22 Juli 2018, 21:50:01
Bei DOIF heißt es einfach $EVENT
Genau wegen solcher Dinge finde ich DOIF zum Erbrechen.
Zitat von: betateilchen am 22 Juli 2018, 22:15:03
Genau wegen solcher Dinge finde ich DOIF zum Erbrechen.
DOIF orientiert sich nicht an Syntax anderer Module und das z. T. bewusst.
Die Syntax von notify hat kaum etwas mit DOIF-Syntax zu tun und umgekehrt.
Wer notify benutzt sollte in der Commandref unter notify nachschauen, wer DOIF benutzt, sollte unter DOIF nachschlagen - und da stehen die Sachen auch noch in drei Jahren, vorausgesetzt die Commandref oder fhem gibt es dann noch ;)