FHEM Forum

FHEM => Automatisierung => Thema gestartet von: cocojambo am 13 April 2025, 12:06:59

Titel: Verbrauchsvergleich mit diffpsec kriege ich nicht gelöst
Beitrag von: cocojambo am 13 April 2025, 12:06:59
Ich habe ein Ladegerät an dem unsere USB Geräte geladen werden. Da dort aber manchmal ein Gerät und auch mal 4 Geräte dran hängen läßt sich nicht genau festlegen wann diese voll sind und die Ladestation abgeschaltet werden kann.
Darauf hin bin ich auf diffpsec gestossen und habe mir überlegt, wenn sich die Leistungsaufnahme des Ladeteils nur noch sehr gering oder garnicht mehr ändert sind alle angeschlossenen Geräte voll, egal welche Restleistung das Ladegerät noch aufnimmt.

Folgendes habe ich probiert:

defmod Handy_Ladekontrolle_di DOIF ([Handy_Ladekontrolle_Pwr:power:diffpsec]*1000 < -1.2)(set Handy_Ladekontrolle_Pwr off)\
Folgende Rechnung habe ich dabei zu Grunde gelegt:
6W Leisungsaufnahme langsam fallend bis 2,8W, danach nur noch Änderung im 0,2W Stellenbereich auf 2,6W.
ergibt:
letzter Wert - vorletzter Wert = 2,6-2,8=-0,2 / Zeitspanne dazwischen 180sek = -0,0011 * 1000 = -1.11 (funktioniert nicht)
Dann habe gedacht wenn der Unterschied kleiner wird, wird auch das Ergebniss kleiner, aber negativen Bereich, also rechnerisch positiver und habe statt < -1.2 mal > -1.2 eingegeben, geht auch nicht.

Was mache ich da für einen gedanklichen oder echnerischen Fehler?

Gruß aus Köln
Norbert

Titel: Aw: Verbrauchsvergleich mit diffpsec kriege ich nicht gelöst
Beitrag von: Damian am 19 April 2025, 09:36:38
Du kannst [Handy_Ladekontrolle_Pwr:power:diffpsec] als DOIF_Reading definieren, dann kannst du den errechneten Wert beobachten.
Titel: Aw: Verbrauchsvergleich mit diffpsec kriege ich nicht gelöst
Beitrag von: cocojambo am 19 April 2025, 12:54:40
@Damian

Das ist toll, das du dich zu meinem Problem gemeldet hast, aber ich habe inzwischen so lange daran herumprobiert, das ich eine änliche Lösung gefunden habe.
Die scheint mit meinen Vorstellungen zu funktionieren, zu mindest bis jetzt.
So sieht es jetzt aus:
erst ein attr ReadingsVal in den Schalter:

attr Handy_Ladekontrolle_Pwr userReadings power_old:power.* { OldReadingsVal("Handy_Ladekontrolle_Pwr","power",undef) }, \
power_diff difference { ReadingsVal("Handy_Ladekontrolle_Pwr","power",0)*100}


Dann das DOIF:

defmod Handy_Ladekontrolle_di DOIF ([Handy_Ladekontrolle_Pwr:power_diff]>-10 and [Handy_Ladekontrolle_Pwr:power_diff]<1 and [Handy_Ladekontrolle_Sw:state] eq"on") (set Handy_Ladekontrolle_Sw off)\
DOELSEIF([Handy_Ladekontrolle_Pwr:power]>50 and [Handy_Ladekontrolle_Sw:state] eq"on")(set Handy_Ladekontrolle_Sw Aus)\
DOELSE
attr Handy_Ladekontrolle_di disable 0
attr Handy_Ladekontrolle_di event-on-change-reading power_diff
attr Handy_Ladekontrolle_di wait 200:10

BIs jetzt haben alle Möglichkeiten funktioniert, auch mit Wechsel von verschiedenen Lasten.
Gruß
Nobbi
Titel: Aw: Verbrauchsvergleich mit diffpsec kriege ich nicht gelöst
Beitrag von: Damian am 19 April 2025, 13:02:35
Das DOIF_Reading kannst du spaßeshalber trotzdem definieren und mit deinem userReading vergleichen, ohne die eigentliche DOIF-Definition zu ändern.

Damit kannst du die Unterschiede sehen und das Problem einkreisen.