Powerfox liefert keine aktuellen Daten an FHEM

Begonnen von uron, 27 März 2023, 11:33:36

Vorheriges Thema - Nächstes Thema

uron

Hallo,
die Datenbelieferung ist äußerst schleppend.
Beispiel: Heute Nacht finde ich unter den Readings um 00:11:42 die letzten. Das ist beileibe kein Einzelfall.
Im Log erscheint
powerfox: Read callback: Error: read from https://backend.powerfox.energy:443 timed outWeiterhin sind unter "STATE" 3x Fragezeichen angegeben.
Hier das list des Device:
Internals:
   BUSY       0
   DEF        https://xxx%40xxx.xxx:xxxx%zzzzzz@backend.powerfox.energy/api/2.0/my/yyyyyyyyyyyy/current 300
   FUUID      6077fe25-f33f-aab4-b615-c1ae47baa9c89b0e
   Interval   300
   MainURL    https://xxx%40xxx.xxx:xxxx%zzzzzz@backend.powerfox.energy/api/2.0/my/yyyyyyyyyyyy/current
   ModuleVersion 4.1.15 - 17.12.2022
   NAME       powerfox
   NOTIFYDEV  global
   NR         1689
   NTFY_ORDER 50-powerfox
   STATE      ???
   TYPE       HTTPMOD
   value     
   HttpUtils:
     NAME      
     addr       https://backend.powerfox.energy:443
     auth       1
     buf       
     data      
     displayurl https://xxx%40xxx.xxx:xxxx%zzzzzz@backend.powerfox.energy/api/2.0/my/yyyyyyyyyyyy/current
     header    
     host       backend.powerfox.energy
     httpversion 1.0
     ignoreredirects 1
     loglevel   4
     path       /api/2.0/my/yyyyyyyyyyyy/current
     protocol   https
     pwd        aaaaaaaaa
     redirects  0
     timeout    2
     url        https://xxx%40xxx.xxx:xxxx%zzzzzz@backend.powerfox.energy/api/2.0/my/yyyyyyyyyyyy/current
     user       xxx%40xxx.xxx:xxxx%zzz
     sslargs:
   QUEUE:
   READINGS:
     2023-03-27 00:11:42   power           397
     2023-03-27 00:11:42   total_consumption 7223100
     2023-03-27 00:11:42   total_feed      562372
   REQUEST:
     context    reading
     data      
     header    
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://xxx%40xxx.xxx:xxxx%zzzzzz@backend.powerfox.energy/api/2.0/my/yyyyyyyyyyyy/current
Attributes:
   alias      powerfox
   reading01JSON Watt
   reading01Name power
   reading02JSON A_Plus
   reading02Name total_consumption
   reading03JSON A_Minus
   reading03Name total_feed
   room       Keller,PV-Anlage
   verbose    3

Hat sich irgendetwas an der API geändert, die App ist stets aktuell, im ioBroker stammen die Daten vom 22.3.2023?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

mobiljoe123

Diese Log Einträge habe ich auch sehr, sehr oft.  :(
Heute war um 10.33 Uhr Schluss.

Hier mein List:
Internals:
   BUSY       0
   DEF        https://XXX%40XXX:ZZZ@backend.powerfox.energy/api/2.0/my/YYY/current 300
   FUUID      605b5ffc-f33f-95bd-877a-95e7437f1a0734a0
   FVERSION   98_HTTPMOD.pm:0.270650/2023-01-15
   Interval   300
   MainURL    https://XXX%40XXX:ZZZ@backend.powerfox.energy/api/2.0/my/YYY/current
   ModuleVersion 4.1.15 - 17.12.2022
   NAME       powerfox
   NOTIFYDEV  global
   NR         451
   NTFY_ORDER 50-powerfox
   STATE      Stromverbrauch:
23834.5 kWH


Hour: 0.0 Day: 2.3 Month: 154.0 Year: 613.2


Einspeisung:
81182.4 kWh


Hour: 0.0 Day: 13.0 Month: 431.9 Year: 1035.5

   TYPE       HTTPMOD
   eventCount 4712
   value     
   HttpUtils:
     NAME       
     addr       https://backend.powerfox.energy:443
     auth       1
     buf       
     data       
     displayurl https://XXX%40XXX:ZZZ@backend.powerfox.energy/api/2.0/my/YYY/current
     header     
     host       backend.powerfox.energy
     httpversion 1.0
     ignoreredirects 1
     loglevel   4
     path       /api/2.0/my/YYY/current
     protocol   https
     pwd        ZZZ
     redirects  0
     timeout    2
     url        https://XXX%40XXX:ZZZ@backend.powerfox.energy/api/2.0/my/YYY/current
     user       XXX
     sslargs:
   QUEUE:
   READINGS:
     2023-03-28 17:04:11   Input           23834.5
     2023-03-28 17:04:11   Output          81182.4
     2023-03-28 10:33:01   power           -4473
     2023-03-28 17:04:11   statInput       Hour: 0.0 Day: 2.3 Month: 154.0 Year: 613.2
     2023-03-28 17:04:11   statInputDay    2.3
     2023-03-27 23:59:55   statInputDayLast 5.5
     2023-03-28 17:04:11   statInputHour   0.0
     2023-03-28 16:59:55   statInputHourLast 0.0
     2023-03-28 16:59:55   statInputLast   Hour: 0.0 Day: 5.5 Month: 185.4 Year: 291.4 (since: 2022-11-28 )
     2023-03-28 17:04:11   statInputMonth  154.0
     2023-02-28 23:59:55   statInputMonthLast 185.4
     2023-03-28 17:04:11   statInputYear   613.2
     2022-12-31 23:59:55   statInputYearLast 291.4
     2023-03-28 17:04:11   statOutput      Hour: 0.0 Day: 13.0 Month: 431.9 Year: 1035.5
     2023-03-28 17:04:11   statOutputDay   13.0
     2023-03-27 23:59:55   statOutputDayLast 27.6
     2023-03-28 17:04:11   statOutputHour  0.0
     2023-03-28 16:59:55   statOutputHourLast 0.0
     2023-03-28 16:59:55   statOutputLast  Hour: 0.0 Day: 27.6 Month: 489.4 Year: 136.6 (since: 2022-11-28 )
     2023-03-28 17:04:11   statOutputMonth 431.9
     2023-02-28 23:59:55   statOutputMonthLast 489.4
     2023-03-28 17:04:11   statOutputYear  1035.5
     2022-12-31 23:59:55   statOutputYearLast 136.6
     2023-03-28 17:04:11   statPowerDay    Min: -7197 Avg: -2312 Max: 2417
     2023-03-27 23:59:55   statPowerDayLast Min: -8658 Avg: -1474 Max: 1961
     2023-03-28 17:04:11   statPowerMonth  Min: -9160 Avg: -473 Max: 3845
     2023-02-28 23:59:55   statPowerMonthLast Min: -9109 Avg: -453 Max: 4829
     2023-03-28 17:04:11   statPowerYear   Min: -9160 Avg: -225 Max: 5027
     2022-12-31 23:59:55   statPowerYearLast Min: -5819 Avg: 228 Max: 6403 (since: 2022-10-15_14:37:59 )
     2023-03-28 10:33:01   total_consumption 23834522
     2023-03-28 10:33:01   total_feed      81182425
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://XXX%40XXX:ZZZ@backend.powerfox.energy/api/2.0/my/YYY/current
   defptr:
     readingBase:
       power      reading
       total_consumption reading
       total_feed reading
     readingNum:
       power      01
       total_consumption 02
       total_feed 03
     readingOutdated:
     requestReadings:
       update:
         power      reading 01
         total_consumption reading 02
         total_feed reading 03
   helper:
     _98_statistics StromStatistik
Attributes:
   reading01JSON Watt
   reading01Name power
   reading02JSON A_Plus
   reading02Name total_consumption
   reading03JSON A_Minus
   reading03Name total_feed
   room       Haus
   stateFormat Stromverbrauch:
Input kWH


statInput


Einspeisung:
Output kWh


statOutput

   userReadings Input { sprintf("%.1f",ReadingsNum("powerfox","total_consumption",0)/1000.0);}, Output { sprintf("%.1f",ReadingsNum("powerfox","total_feed",0)/1000.0);}

Irgendwie bekommen die das nicht richtig gebacken.
Raspi 2; HM; MAX!; RFXtrx

uron

#2
Ich glaube, ich bin einen Schritt weiter und habe einen Erkenntnisgewinn:
Powerfox liefert (etwa 1x wöchentlich) keine Daten mehr, so dass ich das device neu starten muss
set powerfox stop.
Wenn ich das Device nach ein paar Minuten mit
set powerfox start wieder starte, kommen aktuelle Werte.
Da ich das nicht immer wieder händisch machen will, wäre eine Abfrage des Timestamps des letzten Readings und ein Vergleich mit dem Systemdatum sinnvoll. Bei einem Unterschied von ca. 1h wären dann die bereits genannten Befehle, mit einem sleep von z.B. 300 Sekunden dazwischen auszuführen - soweit die Theorie!

Ansich müsste das ja mit
readingsage zu machen sein. Das wäre dann mit dem aktuellen Systemdatum zu vergleichen ... weiter, siehe oben.
Allein, ich weiß nicht, wie ich das in ein notify einzubauen ist?
Müsste ja so etwa gehen mit
define powerfoxNEUSTART notify (wenn (aktuelle Zeit) minus (readingsage(powerfox)) > 3600 dann (set powerfox stop;sleep 300;set powerfox start)M.W. liefert liefert readingsage ja Sekunden!
Kann mir jemand bei der korrekten Syntax helfen?

Möglich wäre vielleicht auch ein userreadings anzulegen
attr powerfox userReadings Dauer {ReadingsAge("powerfox","power",121)}Das userreading wird offenbar aber immer nur erstellt, wenn irgend ein Reading (auch eines anderen Device?) aktualisiert wird. Anscheinend werden aber immer alle zeitgleich aktualisiert, daher gibt ReadingsAge eine 0 zurück und deswegen wird dem Vernehmen nach das userreadings nicht angelegt.


Auflösung:
Am Ende führte dann doch der Ansatz über 'readingsage' als userreadings zum Ziel.
Das userreadings wird in Sekunden ausgegeben und kann somit gut in einem notify abgearbeitet werden.
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

uron

#3
Nun komme ich mit der Abfrage von 'Readingsage' doch nicht weiter:
Das userreadings habe ich 'Readingsalter' genannt und möchte je nach "Alter" eine Aktion auslösen, es will aber nicht klappen!
define powerfoxZ2NEUSTART at +00:02:00 {if (Value("powerfox_Z2:Readingsalter") > 150) {fhem ("set powerfox_Z2 stop;;sleep 300;;set powerfox_Z2 start")}}Nachdem ich die Definition in die Eingabezeile eingegeben habe, kann ich sie unter "Everything" zwar sehen, nach dem Auslösen der Aktion verschwindet sie wieder.
Ist die Abfrage falsch - mit
at +00:02:00 müsste doch immer wieder alle 2 Minuten das Readingsalter abgefragt werden?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

rudolfkoenig

+00:02 bedeutet einmal in zwei Minuten was ausfuehren.
Damit es _alle_ 2 Minuten ausgefuehrt wird, muss es +*00:02 heissen.

Value("powerfox_Z2:Readingsalter") ist sicher falsch, vermutlich sollte es ReadingsNum("powerfox_Z2", "Readingsalter", 0) heissen.

Den Alter eines Readings per userreadings zu speichern ist aber an sich schon falsch, da userreadings nur beim Aenderung eines Readings im gleichen Geraet evaluiert werden, damit ist dieser Wert schlimmstenfalls immer 0.
Stattdessen wuerde ich im at direkt mit ReadingsAge operieren.

uron

#5
Oh je, wie konnte mir dieses Basic mit '*' nur durchgehen!?
Im 2. Punkt zum Readingsage muss ich allerdings widersprechen: Mit
attr powerfox_Z2 userReadings Readingsalter {ReadingsAge("powerfox_Z2","power",121)} bekomme ich einen Readingsalterwert >0!
Testweise habe ich ein Mail bei Readingsalter > 150 ausgelöst, das klappt wunderbar.
define MailReadingsalterZ2 at +*00:02 { if (ReadingsNum("powerfox_Z2","Readingsalter",0) > 150) {DebianMail('xxx@yyyyy.com','Readingsalter Powerfox Z2','Das Readingalter Z2 liegt länger als 2,5 Minuten hinter der Systemzeit, der Neustart müsste eingeleitet worden sein!')}}Soll FHEM jedoch eine Aktion (Stop/Start) des Device auslösen, will das nicht funktionieren:
define powerfoxZ2NEUSTART at +*00:02 {if (ReadingsNum("powerfox_Z2","Readingsalter",0) > 150) {fhem ("set powerfox_Z2 stop;;sleep 300;;set powerfox_Z2 start")}}Was übersehe ich denn hier wieder?

Im EventMonitor finde ich folgende Einträge
2023-08-26 15:14:09.619 HTTPMOD powerfox_Z2 stop
2023-08-26 15:14:09.647 at powerfoxZ2NEUSTART Next: 15:16:09
2023-08-26 15:15:09.651 HTTPMOD powerfox_Z2 start
2023-08-26 15:15:11.816 HTTPMOD powerfox_Z2 Readingsalter: 1077

Die Befehle (Stop/Start) händisch ausgeführt, führen zu einem Deviceneustart!?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

uron

Zitat von: rudolfkoenig am 26 August 2023, 12:36:27Stattdessen wuerde ich im at direkt mit ReadingsAge operieren.
Nun habe ich es einmal wie empfohlen mit
define powerfoxZ2NEUSTART at +*00:05 { if (ReadingsAge("powerfox_Z2","power",0) >= 600) {fhem ("set powerfox_Z2 stop;;sleep 60;;set powerfox_Z2 start;;sleep 60;;set powerfox_Z2 stop;;sleep 60;;set powerfox_Z2 start")}}Das Device will wirklich nicht automatisch starten. Wer hat eine Idee, warum das nicht klappt.
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

uron

Nach längerem Wirktest hier das Fazit:
Powerfox startet nun doch zuverlässig und erfüllt die gewünschten Dienste in dem die Daten regelmäßig geliefert werden!
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker