[gelöst] Anfängerprobleme mit HTTPMOD

Begonnen von WhyTea, 26 Oktober 2018, 09:16:38

Vorheriges Thema - Nächstes Thema

WhyTea

Da sich die Anlage automatisch abschaltet wenn es dunkel ist und ich dann Fehlermeldungen im Log habe.
2018.10.30 07:30:34 3: Solaranlage: Read callback: Error: connect to http://192.168.6.101:80 timed out

Habe ich zusätzlich ein DOIF-Device erstellt welches meine Helligkeitssensoren prüft und emsprechend den Lichtverhältnissen das HTTPMOD-Device startet bzw. stoppt.
defmod di.Solaranlage_on DOIF ([OG1_AZ_Helligkeitssensor:luminosity] >= 50 or [OG2_KZ_Helligkeitssensor:luminosity] >= 50) (set Solaranlage start) DOELSE (set Solaranlage stop)


Eine paar Sachen fehlen mir jetzt allerdings noch.  Die Anlage teilt mir mit wie viel kwh diesen Tag produziert wurden. Ich möchte also jeweils den letzten Rückgabewert des Tages zu einem Monatswert aufsummieren. Und diese dann wiederum auf einen Jahreswert. Schlussendlich möchte ich dann noch die erzeugten kwh mit dem Preis pro kwh multiplizieren um den täglichen , monatlichen und jährlichen Ertrag zu sehen.

Den Preis pro kwh habe ich schon per Userreading eingetragen.  Allerdings fehlt mir eine Idee wie ich die kwh aufsummieren kann.

Ich hoffe dabei kann mir noch jemand helfen. :-)

Gruß
Daniel

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

WhyTea

Ich glaube das kann ich mit Statistics nicht abbilden da am Ende eines Tages der Wert "kwh" wieder auf Null gesetzt wird.
Wenn er einfach weiter Zählen würde könnte ich mit Deltas arbeiten aber so?  ???

Trotzdem vielen Dank für den Tipp!

WhyTea

#33
Ich habe das commandref durchstöbert und bin auf etwas gestoßen.
https://fhem.de/commandref.html#userReadings

Wenn ich nun Userreadings mit dem modifier monotonic benutze müsste das doch eigentlich gehen.

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)}

Aber mein Versuch schlug fehl. Obwohl sich das Reading kwh positiv geändert hat addiert er die Differenz nicht zu den anderen Werten.
:-\

WhyTea

Ich google und probiere komme aber nicht weiter. Daher hier nochmal das List.
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

amenomade

Versuch mal explizit ein Trigger zu definieren.
kwh_Monat:kwh monotonic {ReadingsVal("Solaranlage","kwh",0)}
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

WhyTea

Hab ich probiert. Leider ebenfalls kein Erfolg.

amenomade

Sorry, hatte vergessen, dass es irgendwann mal eine Änderung gab.
kwh_Monat:kwh.* monotonic {ReadingsVal("Solaranlage","kwh",0)}

Im Denkkonzept musst Du aber auch überlegen, wie am Ende des Monats, kwh_Monat wieder auf 0 gesetzt wird. Und das gleiche beim Jahreswechsel.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

WhyTea

#38
Ich habe das entsprechend Deinem Vorschlag geändert.
Leider wieder ohne den erhofften Erfolg.
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 werden 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


Zu dem zurücksetzen von Monat und Jahr habe ich schon eine Idee aber zunächst muss es ja erst einmal gezählt werden. :-(

WhyTea

Danke für die Hilfe!
Da das ursprüngliche Problem gelöst wurde schließe ich diesen Thread und eröffne mit dem aktuellen Problem einen Neuen.
https://forum.fhem.de/index.php/topic,92696.0.html

WhyTea

Zitat von: amenomade am 31 Oktober 2018, 16:50:31
Im Denkkonzept musst Du aber auch überlegen, wie am Ende des Monats, kwh_Monat wieder auf 0 gesetzt wird. Und das gleiche beim Jahreswechsel.

Dazu habe mir flgendes Überlegt:
define Solaranlage_at.kwh_Monat_reset at *00:00:01 {\
if ($mday = 1 ) {\
fhem("setreading Solaranlage:kwh_Monat 0")\
}\
}
attr Solaranlage_at.kwh_Monat_reset room OG2_Dachboden

define Solaranlage_at.kwh_Jahr_reset at *00:00:01 {\
if ($yday = 1 ) {\
fhem("setreading Solaranlage:kwh_Jahr 0")\
}\
}
attr Solaranlage_at.kwh_Jahr_reset room OG2_Dachboden


Das sollte funktionieren denke ich.