Durch das zitieren von RettungsTim habe ich die notifys gesehen. Wer es nachbauen möchte: schaut euch mal DOIF an, da lässt sich das deutlich zusammenfassen. Den folgenden Teil der Config kann man erheblich verkürzen.
##
# 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
Folgendes DOIF vermeidet die Prüfung, ob die Steckdosen geschalten sind. Denn mit do=always wird bei jedem neuen Wert-Eingang der Befehl ausgeführt wenn die Bedingung erfüllt ist. Also jedes Mal, wenn der Akku-Stand von WVC gemeldet wird. Somit dürften dutzende bis hunderte Möglichkeiten bestehen, das Tablet vor dem Strom-Ausbleiben zu schützen, auch wenn die Steckdose nicht gleich jeden Befehl annimmt.
Den Dummy Display_WZ_wird_geladen braucht man dann nicht mehr.
define DOIF_Ladeschaltung_Tablet DOIF ([Display_WZ:powerLevel] <35 and [Display_WZ_Ladeumschalter] ne "on") (set Display_WZ_power on) DOELSEIF ([Display_WZ:powerLevel] >85) (set Display_WZ_power off)
attr DOIF_Ladeschaltung_Tablet do always
Folgendes macht das DOIF und ersetzt damit den zitierten Code, insofern ich diesen inhaltlich verstanden habe:
Wenn das Tablet unter 35% Strom kommt und der dummy Display_WZ_Ladeumschalter nicht auf "on" steht, dann wird die Steckdose eingeschalten. Bei jedem neuen Werteingang wird geprüft und die Steckdose ggf. ein paar Minuten später geschalten.
Und wenn mehr als 85% Ladezustand erreicht sind, dann wird wird die Steckdose abgeschalten. Wenn ich das richtig verstanden habe, soll im Urlaub ohnehin nicht geladen werden, so dass die Prüfung beim Ausschalten der Steckdose nicht sinnvoll scheint. Ob so eine Tiefentladung für den Tablet-Akku gut ist, sei mal dahin gestellt.
@topfi
Grundlegend glaube ich, passt bei deinem Code zudem was nicht:
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");; }}
Was soll
if (Value("Display_WZ_power") ne "on") und
off bewirken? Du gibst eine Wenn-dann-Prüfung vor, aber nach der Prüfung keinen Befehl der auszuführen ist wenn die Bedingung wahr ist.
Eventuell hast du deine Config ohnehin nicht mehr so, dennoch wollte ich das für andere zusammenfassen.