FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: gadget am 31 Juli 2016, 15:29:22

Titel: [Erledigt] Zählerinpulse Wasseruhr aufsummieren -> Ideensuche
Beitrag von: gadget am 31 Juli 2016, 15:29:22
Hallo,

Ich bräuchte mal einen Denkanstoss. Ich habe einen Wasserzähler, den ich ich ähnlich wie in diesem Blogartikel http://blog.steveundkristin.de/2015/09/13/fhem-wasserzaehler-auslesen-mit-hilfe-von-mysensors/ (http://blog.steveundkristin.de/2015/09/13/fhem-wasserzaehler-auslesen-mit-hilfe-von-mysensors/) auslesen will. Ich verwende allerdings keinen Arduino mit mysensors sondern einen ESP8226 mit ESP Easy per wifi. In fhem erhalte ich dann per mqtt jede Minute die gezählten Impulse. Wenn man das mqtt device in ein Filelog mitschreiben lässt sieht das in etwa so aus:


2016-07-31_14:30:37 ESP8266_3 transmission-state: incoming publish received
2016-07-31_14:30:37 ESP8266_3 Count: 10.00
2016-07-31_14:31:37 ESP8266_3 transmission-state: incoming publish received
2016-07-31_14:31:37 ESP8266_3 Count: 0.00
2016-07-31_14:32:37 ESP8266_3 transmission-state: incoming publish received
2016-07-31_14:32:37 ESP8266_3 Count: 0.00
2016-07-31_14:33:37 ESP8266_3 transmission-state: incoming publish received
2016-07-31_14:33:37 ESP8266_3 Count: 0.00
2016-07-31_14:34:37 ESP8266_3 transmission-state: incoming publish received
2016-07-31_14:34:37 ESP8266_3 Count: 0.00
2016-07-31_14:35:37 ESP8266_3 transmission-state: incoming publish received
2016-07-31_14:35:37 ESP8266_3 Count: 0.00


In der ersten Minute sind also 10 Impulse gezählt worden (entspricht 10l Wasserverbrauch), in den weiteren Intervallen wurde nichts verbraucht. Wie löse ich jetzt am besten in fhem die Aufgabe die Impulse über die Zeit auzusummieren und zu einem Initialwert (Zählerstand zu Beginn der Messung) zu addieren ? Das Ganze soll natürlich Reboot-safe sein und später ansprechend visualisiert werden. Mit HourCounter klappts wohl nicht, ich habe jedenfalls keine Idee wie ich da "10 Liter in den letzten 60 Sekunden verbraucht" als Eingabe rein bekomme. Ich bräuchte so was wie einen "PulseCounter" der auch gleich x Pulse auf einmal verarbeiten kann.

Grüße, gadget
Titel: Antw:Zählerinpulse Wasseruhr aufsummieren -> Ideensuche
Beitrag von: gadget am 31 Juli 2016, 16:36:31
Hallo,

Hab´s selber gefunden. Modul average mit attr .. computeMethod counter.

Grüße, gadget
Titel: Antw:[Erledigt] Zählerinpulse Wasseruhr aufsummieren -> Ideensuche
Beitrag von: zwehn am 02 Februar 2018, 16:43:46
Hallo gadget, ich habe ebenso nach der Vorlage den wasserzaehl gebaut und wuerde gerne mqtt nutzen, stehe aber noch am anfang. Koenntest du dein arduino script und fhem implementierung sharen? Gerne auch per private message. Ware super, danke dir
Titel: Antw:[Erledigt] Zählerinpulse Wasseruhr aufsummieren -> Ideensuche
Beitrag von: gadget am 03 Februar 2018, 23:41:29
Hallo,

Von MQTT bin ich wieder abgekommen, ich verwende jetzt das espeasy modul (in esp easy Protocol -> FHEM HTTP).

Im Wesentlichen ist dann in fhem das hier definiert:


defmod ESPEasy_esp82266_4_Water ESPEasy 192.168.178.123 80 espBridge esp82266_4_Water
attr ESPEasy_esp82266_4_Water IODev espBridge
attr ESPEasy_esp82266_4_Water Interval 300
attr ESPEasy_esp82266_4_Water group ESPEasy Device
attr ESPEasy_esp82266_4_Water presenceCheck 1
attr ESPEasy_esp82266_4_Water readingSwitchText 1
attr ESPEasy_esp82266_4_Water room ESPEasy
attr ESPEasy_esp82266_4_Water stateFormat m3_total m3
attr ESPEasy_esp82266_4_Water userReadings m3_total:Total.* monotonic {ReadingsVal($name,"Total",0)/1000.0}


Entscheidend für das Aufsummieren (über einen Reboot des ESP hinweg) ist das "monotonic".

Das Device in ESP Easy ist als "pulse Counter" definiert, Counter Type Delta/Total/Time, Delay 60, Debounce Time 10 msec. Die Rückgabewerde sind
Delta
Total
Time

Weil es noch rum lag und im Gehäuse Platz war habe ich am ESP noch ein OLED Display angeschlossen und gebe da auch Delta und Total lokal aus, das ist aber für die prinzipielle Funktion der Anbindung nicht erforderlich.

Grüße, gadget

Titel: Antw:[Erledigt] Zählerinpulse Wasseruhr aufsummieren -> Ideensuche
Beitrag von: zwehn am 17 Februar 2018, 13:02:54
Hallo Gadget,
hat etwas gedauert (Job, Urlaub), funktioniert nun aber schon einmal prinzipiell (noch nicht am Wasserähler angeschlossen, metallimpuls simuliert).
Habe im espeasy (version mega) bei Devices Sensor den Mode-Typ auf "Falling" gesetzt.
Habe keinen Wiederstand zwischen Inputpin und ground, hatte es vorher in einer Arduino Schaltung über den eingebauten Pullup laufen lassen.
Hoffe dass hier ohne dies nichts kaputt geht.
Jedenfalls wird hier gezählt und dank monotonic auch nach stromlosen ESP aufaddieren auf den letzten Wert. Super!

Wie kann ich nun am Sinnvollsten den offset setzen, also den Anfangswert meines Wasserzählers, bspw 150 m3 als Ausgangswert?
Hast Du auch eine Grafische Auswertung / Plot, deren Konfiguration du teilen kannst?
Danke Dir, zwehn
Titel: Antw:[Erledigt] Zählerinpulse Wasseruhr aufsummieren -> Ideensuche
Beitrag von: gadget am 18 Februar 2018, 12:13:33
Hallo,

den Ausgangswert habe ich einmalig mit https://fhem.de/commandref_DE.html#setreading (https://fhem.de/commandref_DE.html#setreading) manuell gesetzt. Das plotten des Werts mache ich mit einem handelsüblichen SVG, da ist nichts spannendes dabei. Wenn Du spezielle Anforderungen hast schau dir mal https://wiki.fhem.de/wiki/Neues_Charting_Frontend (https://wiki.fhem.de/wiki/Neues_Charting_Frontend) an.

Grüße, gadget