Hallo zusammen,
ich habe über folgenden define einen Analogeingang meiner S7 Steuerung angebunden:
defmod S7_AWrite_bad_ausschaltzeit_licht_abend S7_AWrite db 132 16 u32
attr S7_AWrite_bad_ausschaltzeit_licht_abend IODev ET200
Um die Zeit jetzt benutzerfreundlich eingeben zu können habe ich ein readingsProxy definiert, der mir aus der ausgewählten Uhrzeit den integer für die S7 berechnet und jetzt:
defmod readingsProxy_bad_ausschaltzeit_licht_abend_bedien readingsProxy S7_AWrite_bad_ausschaltzeit_licht_abend
attr readingsProxy_bad_ausschaltzeit_licht_abend_bedien setFn {\
my ($h,$m,$s) = split(':' , $CMD);;;;\
my $wert = (int($h)*60*60+int($m)*60+int($s))*1000;;;;\
fhem("set S7_AWrite_bad_ausschaltzeit_licht_abend $wert");;;;\
}
attr readingsProxy_bad_ausschaltzeit_licht_abend_bedien setList state:22:00,22:30,22:45,22:50,22:55,23:00,23:05,23:10,23:15
attr readingsProxy_bad_ausschaltzeit_licht_abend_bedien stateFormat ;
attr readingsProxy_bad_ausschaltzeit_licht_abend_bedien webCmd state
Funktioniert soweit auch, mein Problem ist jetzt aber, dass das Drop-Down Feld nicht mehr den zuletzt angegebenen Wert anzeigt sondern stattdessen einfach leer ist. Liegt vermutlich daran, dass ich die Uhrzeit verrechne. dadurch hat "state" z.B. bei 22:30 (Uhr) einen (Int) Wert von 81000000. Ledglich das Reading "LastCmd" hat den richtigen wert. Kann man das Drop-Down Feld umbiegen, dass es den Wert aus "LastCmd" anzeigt? Oder gibt es einen anderen Weg, wie ich immer die zuletzt eingestellte Uhrzeit sehen kann?
Fällt keinem etwas zu dem Problem ein? :o
Vielleicht sowas?
attr <name> valueFn {$LASTCMD}