Autor Thema: Mit Shelly Plug S Acculadung überwachen  (Gelesen 237 mal)

Offline griessbx

  • New Member
  • *
  • Beiträge: 22
Mit Shelly Plug S Acculadung überwachen
« am: 07 Dezember 2021, 09:41:13 »
Hallo,
ich versuche das Laden meiner Fahrradaccus mit Hilfe eines Shelly Plug zu überwachen. Ich habe einen DOIF mit folgendem Code:
([IN_Steckdose_WZ_Switch:power] < 2) (set IN_Steckdose_WZ_Switch off)das klappt auch wie gewünscht, solange ich den Plug manuell einschalte. Wenn ich das ganze über die TabletUI anstoße wird sofort wieder abgeschaltet. Der Shelly liefert den Wert für power wohl etwas verzögert. Wie bekomme ich das hin, das die Abfrage im DOIF erst nach einer Verzögerung startet
Gruß Roland

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20985
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Mit Shelly Plug S Acculadung überwachen
« Antwort #1 am: 07 Dezember 2021, 11:33:17 »
Hallo Roland,

in dem Du erst nach einer Ladeschwelle überhaupt "losläufst". Ich habe das etwas aufwendiger gemacht, meine Dose hat zunächst mal noch einen geglätteten Zusatzwert powerDiff bekommen:
attr PSD3_Pwr event-aggregator powerDiff::none:median:900
attr PSD3_Pwr event-on-change-reading .*
attr PSD3_Pwr userReadings powerDiff:power:.* difference {ReadingsNum("$name","power",0)}
Mein DOIF sieht kompliziert aus: ;)
defmod di_wm DOIF ([$SELF:"^running:.0$"]) (set PSD3_Sw off) DOELSEIF\
([PSD3_Pwr:power] > 10 )(setreading $SELF running 1) DOELSEIF \
( abs([PSD3_Pwr:powerDiff]) < [?$SELF:threshold] and [PSD3_Pwr:power] < 3 and [?$SELF:running] eq '1')\
   (sleep 1;;setreading $SELF running 0)
attr di_wm cmdState Pause|on|off
attr di_wm do resetwait
attr di_wm readingList threshold
attr di_wm room TestPower
attr di_wm setList threshold
attr di_wm wait 0:0:600
setstate di_wm 2021-12-06 05:03:24 running 0
setstate di_wm 2021-08-01 00:20:08 threshold 0.015
Letzlich muss eine gewisse Leistung erreicht werden, am Schluss muss die Ladekurve eine Steigung von nahe null haben, die absolute Schwelle ist mir also egal.
Das Readings threshold muss man setzen, kann man sicher noch besser machen

Gruß Otto
« Letzte Änderung: 07 Dezember 2021, 11:38:28 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline griessbx

  • New Member
  • *
  • Beiträge: 22
Antw:Mit Shelly Plug S Acculadung überwachen
« Antwort #2 am: 07 Dezember 2021, 17:16:23 »
Danke, ich werde mir das mal zu Gemüte führen und vor allen Dingen versuchen zu verstehen
Gruß Roland

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20985
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Mit Shelly Plug S Acculadung überwachen
« Antwort #3 am: 07 Dezember 2021, 17:45:48 »
Die Grundidee stammt aus der Ecke: "Die Waschmaschine ist fertig" ;)
Es gibt drei Bedingungen / Zweige:
  • Es kommt der Event di_wm:running:.0 -> der Vorgang ist zu Ende, schalte ab. Der Befehl dazu steht ganz zum Schluß. Damit das überhaupt einen Event gibt ist sleep 1 vorgesetzt (Stichwort Schleifenverhinderung)
  • Die Leistung ist über den Wert 10 (anpassbar) gestiegen -> starte den Ladeüberwachungsvorgang. Wenn also kein Akku steckt passiert nichts (dein aktuelles Problem)
  • Die Leistung ist unter einem Wert 3 (anpassbar) gefallen und die Ladeleistung ändert sich kaum noch (delta < 15 mW) -> warte 10 min und schalte dann ab.
Ich wollte sicherstellen, dass der Akku wirklich voll geladen ist und es egal ist welcher Akku zum Laden angesteckt wurde. Die Werte sind relativ willkürlich gewählt

Im Anhang siehst Du eine typische Kurve.
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz