Gaszähler smart machen & Auswertung

Begonnen von Dracolein, 18 Februar 2020, 08:52:26

Vorheriges Thema - Nächstes Thema

Dracolein

Guten morgen zusammen,

ich verfolge derzeit das Ziel, eine schöne jährliche Gasverbrauchsanzeige in einem Balkendiagramm auf meinem FHEM Dashboard zu realisieren.
Dass meine persönlichen Skills bei Weitem nicht ausreichen werden, ist mir bewusst, aber man wächst (hoffentlich) mit den Aufgaben  8)
Diverse Projekte, die das bereits erfolgreich umgesetzt haben, fand ich - auch hier im Forum - schon einiges.

Ausgangslage:
1x Reedkontakt
1x ESP8266 auf nodeMCU
1x WLAN im Keller

Das ganze Projekt inkl. Hard & Software ist für mich Neuland. Zunächst habe ich gestern erfolgreich ESP Easy geflasht und die kleine Platine erfolgreich mit fester IP-Adresse und dem Wireless LAN im Keller verbunden. Somit befindet sich das Dingen bereits im Netzwerk. Das ging einfach und schnell. 
Danach ging es an einen Testaufbau, um einen Reedkontakt per "Pulse Counter" zum laufen zu bekommen. Als dies halbwegs zuverlässig funktionierte, verbrachte ich weitere 2 Stunden damit, eine vernünftige Position an unserem Gaszähler zu finden; letztlich auch mit Erfolg.

Ein erstes Problem, für das ich trotz trial & error keine Lösung finde: (wobei ich auch nicht weiß, ob es überhaupt ein Problem im weiteren Verlauf wird...)
Der Zählvorgang erfolgt derzeit auf "Total". Gestern im Testbetrieb erfolgte dies auf "Count". Dazwischen lag lediglich 1-2 Neustarts des ESP8266. Egal welche Einstellungen ich im Setup tätige, es hat irgendwie keinen Einfluss auf die Ausgabe.
Seither wird jeder Kontakt zwar zuverlässig mitgezählt, aber ausschließlich auf "Total".

Warum ist das so?



Danke vorab für Eure Hilfe.




Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Nobbynews

Das ist normal.
Unter Count werden nur die Impulse bis zur nächsten Übermittlung an FHEM gezählt und dann wieder auf Null gesetzt, bei Dir also gemäß Angabe Interval alle 60 Sekunden.

Dracolein

Herzlichen Dank, das erklärt es natürlich.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Dracolein

Ich hätte noch eine Anschlussfrage aus aktuellem Anlass:

Die Zählwerte des ESP8266 werden im 30-Sek-Takt zu FHEM übertragen und dort in folgendem Device gezählt. Nun habe ich die vergangenen Tage regelmäßig alle Zählstände händisch notiert, um Abweichungen zu finden und Optimierungen durchzuführen.
Heute abend ist mir der FHEM-Rechner kurzzeitig abgestürzt und nach dem Restart war der Zählwert dieses unten genannten Devices anstelle von ca. 12.000 bei den hier gezeigten Total=9341 Inits.

Meine Frage(n):
- Wird dieser Zähler irgendwie "ausfallsicher" zwischengespeichert?
- Und falls (vermiutlich) nicht: besteht eine Möglichkeit dazu?
- Angenommen es gab keine Zwischenspeicherung o.ä., weshalb startete FHEM nicht mit u.g. Total = 0, sondern mit Total = 9341 ?


Zitat
Internals:
   DEF        192.168.178.100 80 ESP_Bridge ESP_Easy1_reedkontakt
   ESP_BUILD  20104
   ESP_BUILD_GIT mega-20200204
   ESP_BUILD_NOTES  - Mega
   ESP_Bridge_MSGCNT 136
   ESP_Bridge_TIME 2020-03-02 21:18:32
   ESP_NODE_TYPE_ID ESP Easy Mega
   ESP_SLEEP  0
   ESP_UNIT   ESP Easy
   ESP_VERSION 2
   FUUID      5e4b9e12-f33f-4dec-70a4-577ccbaeae8b3b8d
   HOST       192.168.178.100
   IDENT      ESP_Easy1_reedkontakt
   INTERVAL   300
   IODev      ESP_Bridge
   LASTInputDev ESP_Bridge
   MAX_CMD_DURATION 1
   MSGCNT     136
   NAME       ESPEasy_ESP_Easy1_reedkontakt
   NOTIFYDEV  global
   NR         86
   NTFY_ORDER 50-ESPEasy_ESP_Easy1_reedkontakt
   PORT       80
   STATE      ree: 0 ree: 72571 ree: 2217
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    2.18
   READINGS:
     2020-03-02 21:18:32   Total           9341
     2020-03-02 21:16:22   presence        present
     2020-03-02 21:18:32   reedkontakt_Count 0
     2020-03-02 21:18:32   reedkontakt_Time 72571
     2020-03-02 21:18:32   reedkontakt_Total 2217
     2020-03-02 21:18:32   state           ree: 0 ree: 72571 ree: 2217
   helper:
     fpc        1583176248
     pm:
       Encode     1
       JSON       1
     received:
       reedkontakt_Count 1583180312
       reedkontakt_Time 1583180312
       reedkontakt_Total 1583180312
   sec:
     admpwd     
Attributes:
   IODev      ESP_Bridge
   Interval   300
   alias      Gaszaehler_Hardware
   group      ESPEasy Device
   presenceCheck 1
   readingSwitchText 1
   room       ESPEasy
   setState   3
   userReadings Total monotonic {ReadingsVal("ESPEasy_ESP_Easy1_reedkontakt","reedkontakt_Total",0)}
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

kabanett

Hallo Dracolein,
wäre es nicht sinnvoll das Device mit dem GasCalculator- Modul zu verarbeiten? Dann hättest du auch automatisch alle möglichen Auswertungen für dein Diagramm.

Gruß
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Dracolein

Oh das tue ich bereits. Das hier gezeigte Device ist der Zähler, auf welches das Modul zurückgreift.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Nobbynews

Das sollte eigentlich schon über Dein userReading Total erfolgen.
userReadings Total monotonic {ReadingsVal("ESPEasy_ESP_Easy1_reedkontakt","reedkontakt_Total",0)}

Allerdings scheint mir das userreading nicht korrekt zu sein.
Es müsste mMn so lauten:
userReading Total:reedkontakt_Total.* monotonic {ReadingsVal("ESPEasy_ESP_Easy1_reedkontakt","reedkontakt_Total",0)}
Damit bleibt der Wert von Total erhalten, auch wenn reedkontakt_Total wieder auf einen anderen Wert zurückfällt. Es wird ja nur die Differenz des Reading reedkontakt_Total zwischen neuem und alten Wert auf das neue Reading Total aufsummiert.

Beta-User

Der Hinweis auf trigger ist zwar (auch) wichtig, was die Frage nach dem Zählerstand angeht, ist hier aber das "Problem", dass FHEM zwischendurch abgeschmiert war - daher wurde der Readingwert nicht in der statefile gespeichert, sondern beim Start dann der letzte dort zu findende Wert genommen, und der war eben veraltet.

Um die durch sowas entstehenden Differenzen zu verringern, kann man nur zwischendurch "save" durchführen (bei einem shutdown (+restart) wird das automatisch gemacht), oder die statefile mittels "WriteStatefile()"-Aufruf separat abspeichern (kann aber zu Logmeldungen führen wenn cfg und statefile nicht zusammenpassen). Besser wäre es allerdings, die Absturzursache zu finden, normal ist das nämlich nicht...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Gisbert

ZitatAls dies halbwegs zuverlässig funktionierte, verbrachte ich weitere 2 Stunden damit, eine vernünftige Position an unserem Gaszähler zu finden; letztlich auch mit Erfolg.

Hallo Dracolein,

ich hab leider erfolglos versucht einen Reedkontakt am Gaszähler zu plazieren.
Da du 2 Stunden gebrauchst hast, muss es wohl einen besondernen Trick geben - willst du mir den verraten, bzw. wie du vorgegangen bist?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Papa Romeo

Hallo Gisbert,

ich hab´s damals auch vergeblich mit einem Reed-Kontakt versucht.
Mit nem Hall-Sensor hat´s dann schlußendlich funktioniert...
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Gisbert

Zitat von: Papa Romeo am 07 März 2020, 19:01:44
Hallo Gisbert,

ich hab´s damals auch vergeblich mit einem Reed-Kontakt versucht.
Mit nem Hall-Sensor hat´s dann schlußendlich funktioniert...

Hallo Papa Romeo,
das ist ja interessant, Hall-Sensoren hatte ich mir damals auch besorgt, dann aber nicht weitergemacht, da ich damals nicht wußte, wie ich die softwareseitig einbinden könnte; mit ESPs hatte ich da noch nichts gemacht.
Dann werde ich mich mal einlesen und einen Testaufbau realisieren. Ich hab die Siemens TLE 4905 L, hoffentlich sind die geeignet.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Dracolein

Zitat von: Gisbert am 07 März 2020, 18:56:57
Hallo Dracolein,

ich hab leider erfolglos versucht einen Reedkontakt am Gaszähler zu plazieren.
Da du 2 Stunden gebrauchst hast, muss es wohl einen besondernen Trick geben - willst du mir den verraten, bzw. wie du vorgegangen bist?

Viele​ Grüße​ Gisbert​

Leider gibt es da keinen Trick, den ich Dir mitteilen könnte. Man sieht halt als Laie von aussen schlecht, wo der Magnetkontakt seine Runden dreht im Zählwerk. Weiterhin wusste ich auch nicht den maximal möglichen Abstand des Reedkontakts, bei dem selbiger noch zuverlässig schaltet.
Kurzum, es war try and error.

Aber Du kannst gern mal ein Foto von Deinem Zähler hier reinstellen, vielleicht können wir Dir einen Tip geben.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Papa Romeo

Zitat von: Gisbert am 07 März 2020, 19:23:25
Ich hab die Siemens TLE 4905 L, hoffentlich sind die geeignet.

..soviel ich mich erinnern kann, hab ich den auch.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Gisbert

#13
Zitat von: Papa Romeo am 07 März 2020, 22:08:18
..soviel ich mich erinnern kann, hab ich den auch.
Hallo Papa Romeo,

ich hab mal etwas mit dem nackten TLE4905L auf einem Breadboard rumprobiert. Je nach eingesetztem Widerstand und Messort kann man eine Spannung bzw. nahezu keine Spannung bei Ännäherung eines Magneten registrieren. Das funktioniert schon mal soweit, dass ich mit diesem Testaufbau dem Gaszähler auf den Leib rücken werde, um zu sehen, ob es vom Prinzip her funktioniert.

Jetzt kommt aber ein größeres ABER.
Der Hall-Sensor muss mit größer 3.8V betrieben werden, kein Problem ich hab ja 5V. Die Digitalein/ausgänge bei ESP8266 vertragen das aber nicht so doll. Ich bin mir unsicher, wo ich welchen Widerstand anbringen muss, welches V+ an den Ausgang des TLE4905L gehört, etc., damit der ESP überlebt. Meinst du, dass du mir eine Skizze anfertigen kannst, wie der TLE4905L und Widerstand verdrahtet und an den ESP8266 angeschlossen werden? Ich hab versucht das zu googlen und das Datenblatt zum TLE4905L zu verstehen, schaffe es aber nicht alleine. Im Datenblatt unter "Figure 8 Application Circuit" sind auch noch 2 Kondensatoren eingezeichnet, braucht man die wirklich?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Dracolein

Ich habe gestern auch ein 12V Signal am ESP8266 GPIO anschließen müssen und kurzerhand einen Spannungsteiler aus 2 Widerständen gebastelt ,um das Signal auf 3V zu reduzieren.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;