[gelöst] userReadings monotonic wird nicht aktualisiert

Begonnen von WhyTea, 01 November 2018, 12:07:54

Vorheriges Thema - Nächstes Thema

WhyTea

Hallo
Ich lese das Webinterface meiner Solaranlager per HTTPMOD aus und fülle drei Readings (SNR, Watt, kwh) per Regex.
Bei den anfänglichen Problemen wurde mir auch wunderbar geholfen.
https://forum.fhem.de/index.php/topic,92460.0.html

Da das enstandene Folgeproblem nichts mehr mit dem eigentlichen zu tun hat starte ich einen neuen Thread.

Da der Wert kwh immer Tageswert ist und täglich auf Null gestellt wird habe ich noch folgene userReadings definiert.

Preis_pro_kwh ***hier habe ich einmalig einen Wert eingetragen.
kwh_Monat ***soll kwh trotz Nullstelllung weiterzählen und monatlich auf Null gestellt werden
kwh_Jahr  ***soll kwh trotz Nullstelllung weiterzählen und jährlich auf Null gestellt werden
kwh_gesamt  ***soll kwh trotz Nullstelllung weiterzählen
Gesamtertrag ***soll das Ergebnis aus kwh_gesamt * Preis_pro_kwh sein

zunächst einmal das List des HTTPMOD Device:
[code]Internals:
   BUSY       0
   CFGFN      /var/fhem/FHEM/OG2_Dachboden.cfg
   DEF        http://192.168.6.101/home.cgi 900
   Interval   900
   LASTSEND   1540910069.11135
   MainURL    http://192.168.6.101/home.cgi
   ModuleVersion 3.5.1 - 5.7.2018
   NAME       Solaranlage
   NR         1067
   STATE      ???
   TRIGGERTIME 1540910969.11069
   TRIGGERTIME_FMT 2018-10-30 15:49:29
   TYPE       HTTPMOD
   addr       http://192.168.6.101:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.6.101/home.cgi
   header     
   host       192.168.6.101
   httpbody   1
1
EAB961723105
QN6PAX3SS4VHW8AX
M11
17A31-727R+17829-719R
15:34 30/10/2018
0
1
BS15006011720112
28
0.72
OK
Error

   httpheader HTTP/1.1 200 OK
Server: MXCHIP
Connection: close
Cache-Control: max-age=36000
Expires: Wed, 31 Dec 2070 23:00:00 GMT
Last-Modified: Fri, 17 Feb 2017 06:10:54 GMT
Content-Type: text/html
Content-Length: 116
   httpversion 1.1
   hu_blocking 0
   hu_filecount 7
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /home.cgi
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.6.101/home.cgi
   value      0
   Helper:
     DBLOG:
       Preis_pro_kwh:
         mylogdb:
           TIME       1540908203.67375
           VALUE      0.28
       SNR:
         mylogdb:
           TIME       1540910069.14053
           VALUE      BS15006011720112
       Watt:
         mylogdb:
           TIME       1540910069.14053
           VALUE      28
       kwh:
         mylogdb:
           TIME       1540910107.99533
           VALUE      0.72
       kwh_Jahr:
         mylogdb:
           TIME       1540905793.0181
           VALUE      0
       kwh_Monat:
         mylogdb:
           TIME       1540907207.30829
           VALUE      95.08
       kwh_gesamt:
         mylogdb:
           TIME       1540906228.33862
           VALUE      2416
       state:
         mylogdb:
           TIME       1540906627.24925
           VALUE      kwh 1
   QUEUE:
   READINGS:
     2018-10-30 15:03:23   Preis_pro_kwh   0.28
     2018-10-30 15:34:29   SNR             BS15006011720112
     2018-10-30 15:34:29   Watt            28
     2018-10-30 15:35:07   kwh             0.72
     2018-10-30 14:23:13   kwh_Jahr        0
     2018-10-30 14:46:47   kwh_Monat       95.08
     2018-10-30 14:30:28   kwh_gesamt      2416
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.6.101/home.cgi
     value      0
   defptr:
     readingBase:
       SNR        reading
       Watt       reading
       kwh        reading
     readingNum:
       SNR        01
       Watt       02
       kwh        03
     readingOutdated:
     requestReadings:
       update:
         SNR        reading 01
         Watt       reading 02
         kwh        reading 03
   sslargs:
Attributes:
   enableControlSet 1
   enableCookies 1
   httpVersion 1.1
   reading01Name SNR
   reading01Regex (?:[^\r\n]*(?:\r|\rn|\n)){27}([^\r\n]*)(?:\r|\rn|\n).*
   reading02Name Watt
   reading02Regex (?:[^\r\n]*(?:\r|\rn|\n)){28}([^\r\n]*)(?:\r|\rn|\n).*
   reading03Name kwh
   reading03Regex (?:[^\r\n]*(?:\r|\rn|\n)){29}([^\r\n]*)(?:\r|\rn|\n).*
   room       OG2_Dachboden
   showBody   1
   timeout    2
   userReadings Preis_pro_kwh, kwh_Monat monotonic {ReadingsVal("Solaranlage","kwh",0)}, kwh_Jahr monotonic {ReadingsVal("Solaranlage","kwh",0)}, kwh_gesamt monotonic {ReadingsVal("Solaranlage","kwh",0)}, Gesamtertrag {ReadingsVal("Solaranlage","kwh_gesamt",0) * ReadingsVal("Solaranlage","Preis_pro_kwh",0)}
   userattr   reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex
[/code]

Zuletzt habe ich versucht einen expliziten Trigger zu verwenden aber das veränderte leider auch nichts.
userReadings  Preis_pro_kwh, kwh_Monat:kwh.* monotonic {ReadingsVal("Solaranlage","kwh",0)}, kwh_Jahr:kwh.* monotonic {ReadingsVal("Solaranlage","kwh",0)}, kwh_gesamt:kwh.* monotonic {ReadingsVal("Solaranlage","kwh",0)}, Gesamtertrag:kwh.* {ReadingsVal("Solaranlage","kwh_gesamt",0) * ReadingsVal("Solaranlage","Preis_pro_kwh",0)}

Zusätzlich habe ich mir eine Testnotify gemacht um zu überpüfen ob ein Event ausgelöst wird und ob der Inhalt von kwh eine Zahl ist.
Und ja es wird ein Event ausgelöst und der übergebene Wert ist eine Zahl.

define not.Solaranlage_test notify Solaranlage:kwh.* {\
if (ReadingsVal("Solaranlage","kwh",0) >= 0) {\
Log 3, "Solartest = 1";;\
}\
}


Auszuga aus dem Eventlog:
2018-11-01 11:38:15 HTTPMOD Solaranlage reread
2018-11-01 11:38:15 HTTPMOD Solaranlage SNR: BS15006011720112
2018-11-01 11:38:15 HTTPMOD Solaranlage Watt: 107
2018-11-01 11:38:15 HTTPMOD Solaranlage kwh: 0.35


Auszug aus dem Log:
2018.11.01 11:38:15 3: Solartest = 1

Hier sieht man das die Readings aktualisiert werden aber die Userreadings nicht:
Preis_pro_kwh 0.28 2018-10-30 15:03:23
SNR BS15006011720112 2018-11-01 11:38:15
Watt 107 2018-11-01 11:38:15
kwh 0.35 2018-11-01 11:38:15
kwh_Jahr 0 2018-10-30 14:23:13
kwh_Monat 95.08 2018-10-30 14:46:47
kwh_gesamt 2416 2018-10-30 14:30:28


Die aktuellen Werte in den Userreadings habe ich manuall per setreading eingetragen.

Ich verstehe ehrlich gesagt nicht warum die Userreadings nicht aktualisiert werden und hoffe auf Hilfe.

Gruß
Daniel

frank

was soll das erste userreading sein?
Preis_pro_kwh,

vielleicht solltest du erst einmal mit nur einem userreading beginnen, bis dieses funktioniert. danach ein zweites dranhängen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

WhyTea

wow das war schnell!  ;D

Ich habe zwischenzeitlich meinen Beitrag noch bearbeitet. Sorry!
Preis_pro_kwh ***hier habe ich einmalig einen Wert eingetragen.

WhyTea

Der Wahnsinn!
Das genau war das Problem!

Ich habe nun das erste userReading entfernt und die restlichen werden nun aktualisiert.
userReadings  kwh_Monat:kwh.* monotonic {ReadingsVal("Solaranlage","kwh",0)}, kwh_Jahr:kwh.* monotonic {ReadingsVal("Solaranlage","kwh",0)}, kwh_gesamt:kwh.* monotonic {ReadingsVal("Solaranlage","kwh",0)}, Gesamtertrag:kwh.* {ReadingsVal("Solaranlage","kwh_gesamt",0) * ReadingsVal("Solaranlage","Preis_pro_kwh",0)}

2018-11-01 12:28:07 HTTPMOD Solaranlage reread
2018-11-01 12:28:07 HTTPMOD Solaranlage SNR: BS15006011720112
2018-11-01 12:28:07 HTTPMOD Solaranlage Watt: 95
2018-11-01 12:28:07 HTTPMOD Solaranlage kwh: 0.44
2018-11-01 12:28:07 HTTPMOD Solaranlage kwh_Monat: 95.08
2018-11-01 12:28:07 HTTPMOD Solaranlage kwh_Jahr: 0
2018-11-01 12:28:07 HTTPMOD Solaranlage kwh_gesamt: 2416
2018-11-01 12:28:07 HTTPMOD Solaranlage Gesamtertrag: 676.48


Kann mir das bitte jemand erklären?

frank

weil das eben kein userreading ist.
bei eingabe über das frontend gibt es keine fehlermeldung?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

WhyTea

Zitat von: frank am 01 November 2018, 13:17:03
weil das eben kein userreading ist.
bei eingabe über das frontend gibt es keine fehlermeldung?
Nein, es gab kein Fehlermeldlung.

Das heisst also ein userReading muß etwas tun und kann kein statisches Reading sein?
Ein statisches Reading sollte ich dann einmalig per setreading setzen?
Habe ich das so richtig verstenden?

frank

ein userreading ist wie ein notify, das aber nur auf events von seinem "herrchen" lauscht. wird es getriggert, legt es das entsprechende reading an und füllt es über die anweisung, die in den geschweiften klammern steht.

bei dir fehlen die geschweiften klammern, was wohl zum abbruch aller userreadings führt.

für einen konstanten wert wäre ein userreading die falsche wahl, da es unnötigerweise ständig ausgefürt wird.

wenn du einen festen wert zum rechnen brauchst, würde ich ein userattribut nehmem und mit AttrVal() darauf zugreifen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

WhyTea

Okay das ist jetzt soweit klar. Danke!

Zitat von: frank am 01 November 2018, 14:32:13
wenn du einen festen wert zum rechnen brauchst, würde ich ein userattribut nehmem und mit AttrVal() darauf zugreifen.
Ich habe bisher immer mit einem setreading gearbeitet um einem Device ein zusätzliches Reading zu geben. Und dann eben per ReadingsVal darauf zugegriffen.

Würdest Du mir sagen worin der Unterschied / Vorteil in Deiner Variante liegt?