Hallo ,
meine Rollos geben den Endlagenstatus oben bzw unten nicht aus. Die Aktoren liefern nur die Laufzeit.
Ich möchte über FHEM die Endlagen "errechnen". Aus einem anderen Beitrag habe habe ich mir die Laufzeit errechnet
define ZM_r_og_schlafen_erker_heben DOIF ([r_og_schlafen_erker_heben] eq "on") (setreading ZM_r_og_schlafen_erker_heben start {(time)}) DOELSEIF ([r_og_schlafen_erker_heben] eq "off") (setreading ZM_r_og_schlafen_erker_heben stop {(time)})
attr ZM_r_og_schlafen_erker_heben stateFormat {ReadingsVal("ZM_r_og_schlafen_erker_heben","stop","0")-ReadingsVal("ZM_r_og_schlafen_erker_heben","start","0")}
Die Laufzeit steht danch im STATE und nicht im state.
Wie kann ich jetzt die errechnete Laufzeit weiterverarbeiten ?
wenn ZM_r_og_schlafen_erker_heben > 30s (dann ist das Rollo sicher oben) & r_og_schlafen_erker_senken ist "off" DANN setstate Rollo oben
Wie löst man das ? Denke ich zu kompliziert ? Geht es einfacher ? Was übersehe ich ?
Zitat von: prenzela am 29 November 2024, 14:46:36Die Laufzeit steht danch im STATE und nicht im state.
Natürlich, Du hast ja im Attribut stateFormat angegeben, dass Du das genau so haben möchtest.
Warum schreibst Du den Wert nicht in das reading 'state', wenn Du den Wert dort haben möchtest?
In state steht ja bereits cmd_1 bzw. cmd_2
Wenn ich das so eingebe
attr ZM_r_og_schlafen_erker_heben state {ReadingsVal("ZM_r_og_schlafen_erker_senken","stop","0")-ReadingsVal("ZM_r_og_schlafen_erker_senken","start","0")}
Dann steht die "Formel" im state und nicht das Ergebnis.
mit einem Userreading klappt es
attr ZM_r_og_schlafen_erker_heben userReadings Laufzeit {ReadingsVal("ZM_EnO_05206F8D","stop","0")-ReadingsVal("ZM_EnO_05206F8D","start","0")}
Das state-Attribut arbeitet mit FHEM-Befehlen, die Perlebene wird durch {( eingeleitet.