kWH Zähler für Solarthermie

Begonnen von g.carls, 21 März 2014, 08:11:12

Vorheriges Thema - Nächstes Thema

devien

hab ich getestet, leider keine Änderung, oder gut, keine Änderung, je nachdem was du mit diesem Versuch bezwecken wolltest?
FHEM + UniPi + Arduino = gute Lösung

amenomade

#31
Du solltest mindestens ein neues userReading "solarzs" haben, sobald Counter sich ändert!... was aber Nachts vermutlich nicht passiert.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

devien

sollte man denken, aber weder das noch zuvor ein reading d_volumen oder ein anderes außer   READINGS:
     2017-07-08 23:05:32   Counter         32837
     2017-07-08 10:22:33   Dblclick        on
     2017-07-08 23:21:05   Pinlevel        high
     2017-07-08 23:05:32   Toggle          off
     2017-07-08 23:19:38   solargesamtertrag 0
     2017-07-08 23:19:38   solarjahresertrag 0
     2017-07-08 23:19:38   solarmonatsertrag 0
     2017-07-08 23:19:38   solartagesertrag 0
     2017-07-08 23:19:38   state           on


wobei Solargesamtertrag, solarjahresertrag, solarmonatsertrag und solartagesertrag die einzigen sind welche durch die Konfig aus diesem Thread / wiki hinzugekommen sind, Counter funktionierte bereits vorher schon....

PS.: ich kann die Pumpe manuell zuschalten, dann zählt der Conter trotzdem
FHEM + UniPi + Arduino = gute Lösung

amenomade

Das heisst, irgendwie funktioniert Counter als Trigger nicht.

Was hast Du in der Log, wenn Counter aktualisiert wird?

Ansonstens, probier mal mit ":Counter.*" statt ":Counter" im userReadings
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

devien

#34
habe nun das Userreading mal entsprechend geändert und siehe da:
Internals:
   CFGFN      FHEM/unipi_inputs.cfg
   DEF        4
   EXCEPT_FD  10
   GPIO_Basedir /sys/class/gpio
   NAME       i01
   NR         74
   RPI_pin    4
   STATE      V: 649.80m3 E: 0.05kWh P: 0.00 kW
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   lasttrg    1499590013.42932
   Helper:
     DBLOG:
       Counter:
         myDbLog:
           TIME       1499590013.4413
           VALUE      33799
       d_volumen:
         myDbLog:
           TIME       1499590013.4413
           VALUE      0.000999999999976353
       solargesamtertrag:
         myDbLog:
           TIME       1499590013.4413
           VALUE      0.0461953333331788
       solartagesertrag:
         myDbLog:
           TIME       1499590013.4413
           VALUE      0.0461953333331788
       volumenstrom:
         myDbLog:
           TIME       1499590013.4413
           VALUE      7.00727484162154e-05
   READINGS:
     2017-07-09 10:46:53   Counter         33799
     2017-07-08 10:22:33   Dblclick        on
     2017-07-09 10:46:53   Pinlevel        low
     2017-07-09 10:46:53   Toggle          off
     2017-07-09 10:46:53   d_volumen       0.000999999999976353
     2017-07-09 10:46:53   solargesamtertrag 0.0461953333331788
     2017-07-09 10:46:53   solarjahresertrag 0.0461953333331788
     2017-07-09 10:46:53   solarmonatsertrag 0.0461953333331788
     2017-07-09 10:46:53   solartagesertrag 0.0461953333331788
     2017-07-09 10:46:53   state           off
     2017-07-09 10:46:53   volumenstrom    7.00727484162154e-05
   fhem:
     interfaces switch
Attributes:
   DbLogInclude 1
   active_low no
   alias      Solarzähler
   ctsperm3   1000
   dichte     1042
   direction  input
   event-on-update-reading Counter,volumenstrom,d_volumen,solarleistung,solartagesertrag,solargesamtertrag
   icon       sani_solar
   interrupt  falling
   offset     616
   poll_interval 5
   pud_resistor up
   restoreOnStartup no
   room       Solarsteuerung,UniPi
   stateFormat {sprintf("V: %.2fm3",solarzaehlerstand("i01","Counter",0)).sprintf(" E: %.2fkWh",ReadingsVal("i01","solartagesertrag",0)).sprintf(" P: %.2f kW",ReadingsVal("i01","solarleistung",0));}
   userReadings volumenstrom:Counter.* differential {solarzaehlerstand('i01', 'Counter');}, d_volumen:Counter.* difference {solarzaehlerstand('i01', 'Counter');}, solarleistung:volumenstrom { get_solarleistung('i01', 'DS18B20_Vorlauf_S', 'DS18B20_Ruecklauf_S');}, solargesamtertrag {get_solarertrag('i01','DS18B20_Vorlauf_S', 'DS18B20_Ruecklauf_S'); }, solartagesertrag { get_d_solarertrag('i01', 'D_SOLARCNTATMIDNIGHT');}, solarmonatsertrag { get_d_solarertrag('i01', 'D_SOLARCNTAT1STDAYOFMONTH');}, solarjahresertrag {  get_d_solarertrag('i01','D_SOLARCNTAT1STDAYOFYEAR');}
   verbose    5
   waermekapazitaet 3.8


im Original wurde die Countervariable auch mit "counters.A" deklariert:
userReadings volumenstrom:counters.A differential {solarzaehlerstand('C_SOLARZAEHLER', 'counters.A');;}

ebenso auch im event-on-update-reading, hier musste ich natürlich an meine verfügbare Countervariable angleichen, verstehe jedoch nicht wieso hier offenbar diese Änderung nun greift (besonders weil ich es im event-on-update-reading noch nicht korrigiert habe.

das Reading Solarleistung ist leider bislang noch nicht aufgetaucht, das irritiert mich noch etwas.

im Logfile taucht bei Statusänderung des Counters:
2017.07.09 10:43:06 5: i01, in fileaccess: edge
2017.07.09 10:43:06 5: Toggle war auf on
2017.07.09 10:43:06 5: Toggle ist jetzt off
2017.07.09 10:43:06 5: Zaehler ist jetzt 33783


erstunlicher Weise aulso Zaehler anstelle von Counter....
FHEM + UniPi + Arduino = gute Lösung

amenomade

Interessant... aber schon mal besser ;)

Was aber hilfreich wäre, ist nicht die Log (mein Schuld!) sondern eher der Eventmonitor.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

devien

kein Problem, Eventmonitor sagt:

2017-07-09 20:10:40 FRM_AD Solar_temp_04 Temp: 67.5257103077262
2017-07-09 20:10:40 RPI_GPIO i01 Counter: 36796
2017-07-09 20:10:40 RPI_GPIO i01 volumenstrom: 8.70904367673255e-05
2017-07-09 20:10:40 RPI_GPIO i01 d_volumen: 0.00100000000009004
2017-07-09 20:10:40 RPI_GPIO i01 solargesamtertrag: 41.8394296180577
2017-07-09 20:10:40 RPI_GPIO i01 solartagesertrag: 41.8394296180577
2017-07-09 20:10:40 FRM_AD Solar_temp_02 reading: 455
2017-07-09 20:10:40 FRM_AD Solar_temp_02 Temp: 64.947273443956

FHEM + UniPi + Arduino = gute Lösung

amenomade

Also das Event sieht so aus: 2017-07-09 20:10:40 RPI_GPIO i01 Counter: 36796
Er hätte m.A. auch das Trigger "Counter" verstehen müssen. Naja, wenn es mit "Counter.*" geht, lass es so.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

#38
Wegen Solarleistung, was ergibt in Fhemweb:
{(ReadingsVal("DS18B20_Vorlauf_S", "temperature",0)-ReadingsVal("DS18B20_Ruecklauf_S", "temperature",0));}

Sonst probier mal auch mit
solarleistung:volumenstrom.*   {}

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

amenomade

Ich glaube, ich hab den Grund gefunden: https://forum.fhem.de/index.php/topic,52165.msg440466.html#msg440466

vom 17 April 2016

Das Codeschnipsel hier ist vom 21 März 2014

Wenn ich das richtig interpretiere, musst Du  .* am Ende des Triggers immer addieren, weil er seit dieser Änderung "Counter" als regexp "^Counter$" interpretiert.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

devien

correcte Sache, das war die Ursache.

Internals:
   CFGFN      FHEM/unipi_inputs.cfg
   DEF        4
   EXCEPT_FD  10
   GPIO_Basedir /sys/class/gpio
   NAME       i01
   NR         74
   RPI_pin    4
   STATE      V: 653.07m3 E: 42.32kWh P: 2.15 kW
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   lasttrg    1499632204.48435
   Helper:
     DBLOG:
       Counter:
         myDbLog:
           TIME       1499632204.50179
           VALUE      37073
       d_volumen:
         myDbLog:
           TIME       1499632204.50179
           VALUE      0.000999999999976353
       solargesamtertrag:
         myDbLog:
           TIME       1499632248.89224
           VALUE      42.3222808402772
       solarleistung:
         myDbLog:
           TIME       1499632204.50179
           VALUE      2.14965055645456
       solartagesertrag:
         myDbLog:
           TIME       1499632248.89224
           VALUE      42.3222808402772
       volumenstrom:
         myDbLog:
           TIME       1499632204.50179
           VALUE      7.48821913900937e-05
   READINGS:
     2017-07-09 22:30:04   Counter         37073
     2017-07-08 10:22:33   Dblclick        on
     2017-07-09 22:31:30   Pinlevel        high
     2017-07-09 22:30:04   Toggle          off
     2017-07-09 22:30:04   d_volumen       0.000999999999976353
     2017-07-09 22:30:48   solargesamtertrag 42.3222808402772
     2017-07-09 22:30:48   solarjahresertrag 42.3222808402772
     2017-07-09 22:30:04   solarleistung   2.14965055645456
     2017-07-09 22:30:48   solarmonatsertrag 42.3222808402772
     2017-07-09 22:30:48   solartagesertrag 42.3222808402772
     2017-07-09 22:30:48   state           on
     2017-07-09 22:30:04   volumenstrom    7.48821913900937e-05
   fhem:
     interfaces switch
Attributes:
   DbLogInclude 1
   active_low no
   alias      Solarzähler
   ctsperm3   1000
   dichte     1042
   direction  input
   event-on-update-reading Counter,volumenstrom,d_volumen,solarleistung,solartagesertrag,solargesamtertrag
   icon       sani_solar
   interrupt  falling
   offset     616
   poll_interval 5
   pud_resistor up
   restoreOnStartup no
   room       Solarsteuerung,UniPi
   stateFormat {sprintf("V: %.2fm3",solarzaehlerstand("i01","Counter",0)).sprintf(" E: %.2fkWh",ReadingsVal("i01","solartagesertrag",0)).sprintf(" P: %.2f kW",ReadingsVal("i01","solarleistung",0));}
   userReadings volumenstrom:Counter.* differential {solarzaehlerstand('i01', 'Counter');}, d_volumen:Counter.* difference {solarzaehlerstand('i01', 'Counter');}, solarleistung:volumenstrom.* { get_solarleistung('i01', 'DS18B20_Vorlauf_S', 'DS18B20_Ruecklauf_S');}, solargesamtertrag {get_solarertrag('i01','DS18B20_Vorlauf_S', 'DS18B20_Ruecklauf_S'); }, solartagesertrag { get_d_solarertrag('i01', 'D_SOLARCNTATMIDNIGHT');}, solarmonatsertrag { get_d_solarertrag('i01', 'D_SOLARCNTAT1STDAYOFMONTH');}, solarjahresertrag {  get_d_solarertrag('i01','D_SOLARCNTAT1STDAYOFYEAR');}
   verbose    3
   waermekapazitaet 3.8


Vielen Dank das du so unermüdlich geholfen hast. Danke auch den anderen die auch versucht haben zu helfen ;)
FHEM + UniPi + Arduino = gute Lösung

devien

so, ich habe den Zähler am laufen, heute hab ich leider ein Missgeschick gehabt, hab versehentlich die Stromversorgung am RasperryPi zerbohrt.
1h später hatte ich das Teil wieder geflickt und Fhem startette wieder artig und machte dort weiter wo er aufgehört hat.

Mit einer Außnahme:
die tagesertragsleistung wurde durch den unkrontrollierten kaltstart von Fhem wieder bei Null gestartet anstelle bei den bereits eingefahrenen 33,5 kwh weiter zu machen.
Gibt es einen Weg Fhem beizubiegen das er in so einem Fall den letzten Wert nutzen soll?
FHEM + UniPi + Arduino = gute Lösung

amenomade

Leider werden beim unkontrollierten Kaltstart einige Werte im state File evtl. nicht gespeichert. Ich weiss nicht, wie es zu lösen.
Du kannst aber jetzt manuell das Reading auf 33,5 setzten (setreading device reading wert)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

devien

hm, readings werden ja (zumindest bei mir) in einer db gespeichert, das gilt auch für eben diesen Wert. ich nehme an es sollte sich realisieren lassen : bei neustart -> prüfe letzten Wert im DBLog nach 0 Uhr -> "If letzter Wert > aktueller Wert" Do "setreading device reading [letzter Wert im DBLog]".
die Sache müsste allein in Perl abgehandelt werden, leider bin ich da noch zu unbedarft.

Kniffelig

FHEM + UniPi + Arduino = gute Lösung