Ja, das habe ich inzwischen auch bemerkt. Deshalb ist die Steuerung etwas umfangreicher geworden, bewährt sich aber seit vielen Wochen sehr gut. Insbesondere habe ich eine neue Variable "Display_WZ_wird_geladen" eingeführt. Diese Variable ist nicht mit dem powerPlugged reading von WVC zu verwechseln, sondern "ja", wenn FHEM meint, dass geladen werden sollte und sonst eben "nein". Da ich das Ladegerät über eine Intertechnodose ohne Rückmeldung steuere, frage ich sogar alle 15 Minuten ab, ob powerPlugged und Display_WZ_wird_geladen im Einklang sind und gleiche das gegebenenfalls ab.
Außerdem habe ich eine Funktion "Display_WZ_Ladeumschalter" eingebaut, mit der ich den Ladezustand definiert umkehren kann. Das wird interessant, wenn man z.B. mehrere Wochen im Urlaub ist und das Display währenddessen komplett abschalten möchte. Dann kann man einfach auf "wird nicht geladen" stellen und das Display herunterfahren. Täte man das nicht, würde die Intertechnodose alle Viertelstunde von FHEM ein "on" bekommen.
Mit meinen Kommentaren sieht das nun so aus:
define Display_WZ webViewControl 12345
##
# jede glatte halbe Stunde Seitenrefresh
define Display_WZ_refresh at +*00:30:00 set Display_WZ reload
attr Display_WZ_refresh alignTime 00:30
##
# Ladeautomatik
define Display_WZ_wird_geladen dummy
define Display_WZ_laden notify Display_WZ { if (ReadingsVal("Display_WZ","powerLevel","") < 35) { fhem("set Display_WZ_power on;;set Display_WZ_wird_geladen ja") if (Value("Display_WZ_power") ne "on");;} \
if (ReadingsVal("Display_WZ","powerLevel","") > 85) { fhem("set Display_WZ_power off;;set Display_WZ_wird_geladen nein") if (Value("Display_WZ_power") ne "off");; }}
##
# jede glatte viertel Stunde Kontrolle hat die Steckdose geschaltet?
define Display_WZ_Kontrolle_Ladezustand at +*00:15:00 {if(($value{Display_WZ_wird_geladen} eq "ja") && (ReadingsVal("Display_WZ","powerPlugged","") ne "true")) {fhem("set Display_WZ_power on ;; trigger Display_WZ_wird_geladen")} ;; \
if(($value{Display_WZ_wird_geladen} eq "nein") && (ReadingsVal("Display_WZ","powerPlugged","") ne "false")) {fhem("set Display_WZ_power off ;; trigger Display_WZ_wird_geladen")}}
attr Display_WZ_Kontrolle_Ladezustand alignTime 00:15
##
# Um im urlaub das Display abzuschalten muss powerPlugged auf false UND Display_WZ_wird_geladen auf off stehen.
# Sonst würde die viertelstündliche Kontrolle dauernd schalten.
define Display_WZ_Ladeumschalter dummy
attr Display_WZ_Ladeumschalter devStateIcon on:FS20.on:off off:FS20.off:on
attr Display_WZ_Ladeumschalter webCmd on:off
define Display_WZ_LU_ein notify Display_WZ_Ladeumschalter:on set Display_WZ_power on;;set Display_WZ_wird_geladen on
define Display_WZ_LU_aus notify Display_WZ_Ladeumschalter:off set Display_WZ_power off;;set Display_WZ_wird_geladen off
##
# Lautstärkeregelung: Slider
define Display_WZ_volume dummy
attr Display_WZ_volume setList state:slider,0,1,15
attr Display_WZ_volume webCmd state
define Display1_volume notify Display_WZ_volume {fhem "set Display_WZ volume ".ReadingsVal("Display_WZ_volume","state","13") }
##########
# Display aktiv
define Display_WZ_aktiv dummy
attr Display_WZ_aktiv devStateIcon on:FS20.on:off off:FS20.off:on
attr Display_WZ_aktiv webCmd on:off
##
define Display_WZ_einschalten notify Display_WZ_aktiv:on {if (Value("Display_WZ_power") ne "on") {fhem("set Display_WZ_power on-for-timer 4;;define verz2 at +00:00:09 set Display_WZ keepScreenOn on")} \
else {fhem("set Display_WZ_power off-for-timer 4;;define verz3 at +00:00:09 set Display_WZ keepScreenOn on")} }
define Display_WZ_ausschalten notify Display_WZ_aktiv:off set Display_WZ keepScreenOn off
define Display_WZ_bleibso notify Display_WZ_wird_geladen {if (Value("Display_WZ_aktiv") eq "on") {fhem("define verz1 at +00:00:09 set Display_WZ keepScreenOn on")} else {fhem("set Display_WZ_aktiv off")}}
##