Hauptmenü

IN-Z62 zählt zuviel

Begonnen von mrbreil, 14 November 2019, 08:47:02

Vorheriges Thema - Nächstes Thema

mrbreil

Habe mir einen IN-Z62 und einen NodeMCU gekauft um dem Gaszähler/Gasverbrauch auszuwerten.
Auf dem NodeMCU habe ich ESPeasy geflasht.

Unter "Hardware" habe ich beim ESPeasy Pin mode GPIO-2 (D4) auf INPUT

Unter "Devices"

Device:                       Generic - Pulse counter
Enabled:                        True
GPIO ← Pulse:                GPIO-4 (D2)
Debounce Time (mSec):  250
Counter Type:                Delta/Total/Time
Mode Type:                    Falling
Send to Controller         True
Intervall                         60


Habe dan den ESPBridge in Fhem definiert.
defmod ESP_Bridge ESPEasy bridge 8383
attr ESP_Bridge authentication 0
attr ESP_Bridge combineDevices 0
attr ESP_Bridge group ESPEasy Bridge
attr ESP_Bridge room ESPEasy

setstate ESP_Bridge 2019-11-12 09:18:09 state Initialized


Dann den Pulscounter eingebunden
defmod ESPEasy_ESP_Therme_Gastherme ESPEasy 192.168.6.233 80 ESP_Bridge ESP_Therme_Gastherme
attr ESPEasy_ESP_Therme_Gastherme IODev ESP_Bridge
attr ESPEasy_ESP_Therme_Gastherme Interval 300
attr ESPEasy_ESP_Therme_Gastherme disable 0
attr ESPEasy_ESP_Therme_Gastherme group ESPEasy Device
attr ESPEasy_ESP_Therme_Gastherme presenceCheck 1
attr ESPEasy_ESP_Therme_Gastherme readingSwitchText 1
attr ESPEasy_ESP_Therme_Gastherme room ESPEasy
attr ESPEasy_ESP_Therme_Gastherme setState 3
attr ESPEasy_ESP_Therme_Gastherme userReadings Total_Speicher monotonic {ReadingsVal("ESPEasy_ESP_Therme_Gastherme","Total",0)}

setstate ESPEasy_ESP_Therme_Gastherme Cou: 2 Tim: 25553 Tot: 621
setstate ESPEasy_ESP_Therme_Gastherme 2019-11-14 08:37:56 Count 2
setstate ESPEasy_ESP_Therme_Gastherme 2019-11-14 08:37:56 Time 25553
setstate ESPEasy_ESP_Therme_Gastherme 2019-11-14 08:37:56 Total 621
setstate ESPEasy_ESP_Therme_Gastherme 2019-11-14 08:37:56 Total_Speicher 621
setstate ESPEasy_ESP_Therme_Gastherme 2019-11-14 08:34:25 presence present
setstate ESPEasy_ESP_Therme_Gastherme 2019-11-14 08:37:56 state Cou: 2 Tim: 25553 Tot: 621


Um den Zähler nach einem Reboot des Nodemcu zu sischern habe ich das Userreading Total_Speicher erstellt.
attr ESPEasy_ESP_Therme_Gastherme userReadings Total_Speicher monotonic {ReadingsVal("ESPEasy_ESP_Therme_Gastherme","Total",0)}

Mein Gascalculator sieht so aus.
defmod Gaszaehler GasCalculator ESPEasy_ESP_Therme_Gastherme:Total_Speicher.*
attr Gaszaehler BasicPricePerAnnum 0
attr Gaszaehler Currency €;
attr Gaszaehler GasCounterOffset 25482.86
attr Gaszaehler GasCubicPerCounts 0.01
attr Gaszaehler GasNominalHeatingValue 10
attr Gaszaehler GasPricePerKWh 0.0654
attr Gaszaehler GaszValue 1
attr Gaszaehler MonthOfAnnualReading 5
attr Gaszaehler MonthlyPayment 0
attr Gaszaehler ReadingDestination CalculatorDevice
attr Gaszaehler SiPrefixPower W
attr Gaszaehler Volume m³;
attr Gaszaehler room ESPEasy

setstate Gaszaehler active
setstate Gaszaehler 2019-11-14 08:39:56 .ESPEasy_ESP_Therme_Gastherme_Total_Speicher_LastDV 0.000
setstate Gaszaehler 2019-11-14 08:39:56 .ESPEasy_ESP_Therme_Gastherme_Total_Speicher_LastDt 30
setstate Gaszaehler 2019-11-14 08:39:56 .ESPEasy_ESP_Therme_Gastherme_Total_Speicher_PowerDayCount 613
setstate Gaszaehler 2019-11-14 08:39:56 .ESPEasy_ESP_Therme_Gastherme_Total_Speicher_PowerDaySum 4216.594
setstate Gaszaehler 2019-11-14 08:39:56 .ESPEasy_ESP_Therme_Gastherme_Total_Speicher_PrevRead 25489.070
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyCostDay 2.289
setstate Gaszaehler 2019-11-14 00:00:30 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyCostDayLast 2.498
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyCostMeter 4.794
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyCostMonth 4.794
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyCostYear 4.794
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyDay 35.000
setstate Gaszaehler 2019-11-14 00:00:30 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyDayLast 38.200
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyMeter 73.300
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyMonth 73.300
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_EnergyYear 73.300
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_FinanceReserve -4.794
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_Meter 25489.070
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_MonthMeterReading 7
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_PowerCurrent 0.000
setstate Gaszaehler 2019-11-14 08:39:56 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_PowerDayAver 6.879
setstate Gaszaehler 2019-11-14 04:27:30 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_PowerDayMax 684.000
setstate Gaszaehler 2019-11-14 00:01:30 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_PowerDayMin 0
setstate Gaszaehler 2019-11-14 00:00:30 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_Vol1stDay 25485.57
setstate Gaszaehler 2019-11-13 12:13:18 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_Vol1stMeter 25481.74
setstate Gaszaehler 2019-11-13 12:13:18 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_Vol1stMonth 25481.74
setstate Gaszaehler 2019-11-13 12:13:18 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_Vol1stYear 25481.74
setstate Gaszaehler 2019-11-14 00:00:30 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_VolLastDay 25485.560
setstate Gaszaehler 2019-11-13 12:13:18 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_VolLastMeter 25481.740
setstate Gaszaehler 2019-11-13 12:13:18 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_VolLastMonth 25481.740
setstate Gaszaehler 2019-11-13 12:13:18 ESPEasy_ESP_Therme_Gastherme_Total_Speicher_VolLastYear 25481.740



GasCounterOffset und GasCubicPerCounts eingestellt.

Erst jetzt habe ich angefangen impulse zu erfassen damit der Counter im Nodemcu nicht schon was gezählt hat.

Soweit funktioniert das auch, aber nach einiger Zeit, weichen der Zählerstand am Gaszähler ESPEasy_ESP_Therme_Gastherme_Total_Speicher_Meter von einander ab.
Fhem hat mehr auf der Uhr als der Gaszähler. Habe auch schon eine Entprellzeit von bis zu 10.000 mSec ausprobiert, wird aber auch nicht besser.
Vielleicht liest das hier jemand der das auch einsetzt und mir seine Einstellungen mitteilen kann.
Bin auch für jede andere Idee dankbar.

Gruß Christian

Pfriemler

Ich versuche ähnliches gerade mit meinem Wasserzähler und habe daher zuvor mit einem kleinen alten Taster viel in ESPeasy experimentiert. Mein Fazit ist, das beim PulseCounter in der aktuellen Version das Debouncing eigentlich überhaupt nicht funktioniert, völlig egal was man einstellt, egal ob man mit dem Taster nach + oder GND tastet und RISING, FALLING oder CHANGE einstellt (LOW funktioniert überhaupt nicht). Besonders beim Loslassen des (schlechten) Tasters werden Geisterimpulse gezählt. Aber nicht mal CHANGE (also gezielte Auswertung beider Flanken) arbeitet sauber.

Mein stattdessen verwendeter Test-Reed prellt glücklicherweise so gut wie gar nicht. Weitere Erkenntniss habe ich noch keine, derzeit nutze ich ein Homematic-Kontaktinterface - bei 10l/imp ist das selten genug. Sollte es beim Umstieg auf ESPeasy wieder prellen, werde ich ein Hardwaredebouncing einbauen, eine kleine R-C-Kombination sollte dafür reichen.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

majorshark

Ich habe den gleichen Kontakt an meiner Gasuhr. Allerdings benutze ich eine etwas ältere Version von ESPEasy (V1 Build 147). Daher kann ich nicht genau sagen ob das Software Debounce in der von Dir benutzten Version richtig funktioniert. Allerdings stelle ich auf meinem Blog fest das die meisten Probleme durch viel zu lange Leitungen zu den ESP's entstehen. Ich habe ein ESP direkt in den IN-Z62 eingebaut, ohne jegliche Hardwarefilter. Das funktioniert mit der oben genannte Firmware einwandfrei.   
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

mirror

Habe ähnliches Problem - ebenfalls R147. Habe schon sehr kurze Leitung (ca. 50cm), 100ms Debounce Time und 10k pull-up am gpio-4 von der nodeMCU. Vermute auch daß der debounce time Parameter ignoriert wird.
Bei Dir fällt mir noch auf, daß Du 60s Intervall auf dem esp hast und 300s für den Counter.
Geht das?

majorshark

Ich würde auch mal das attr ESPEasy_ESP_Therme_Gastherme Interval 300 auf Null setzen. Also kein Polling. Es reicht wenn der ESP die Daten aller 60 Sekunden sendet.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

Pfriemler

Zitat von: majorshark am 15 November 2019, 08:40:50
Ich würde auch mal das attr ESPEasy_ESP_Therme_Gastherme Interval 300 auf Null setzen. Also kein Polling. Es reicht wenn der ESP die Daten aller 60 Sekunden sendet.

Meines Wissens gehört Interval zu presenceCheck: kommt innerhalb von 5min kein Wert, wird auf absent erkannt. Macht mehr bei Sensoren Sinn. Gepollt wird doch so oder so nicht?
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

mrbreil

@majorshark Stimmem bei dir beide Zähler zu 100 % Prozent überein?
Eine ältere Version zu nutzen wäre ja nun nicht das Problem.

Ist das dein Blog http://www.frank-schuetz.de/index.php/1-gaszaehler-mit-espeasy-und-fhem ?

Auf deinen Bildern sehe ich gar keine Einstellungsmöglichkeit für den Mode-Typ, spielt das nicht eine Rolle was ich zähle?
Entschuldigt wenn das eine Dumme Frage ist, aber bin in so was wirklich nicht fit.

Aber danke das ihr euch meiner annehmt  :)

Gruß Christian 

Pfriemler

#7
Die ESPeasy 1.xx kennen die Typeinstellung noch nicht. Dafür gibt es in 2.xx kein Delay mehr. Wann sich also Count zurücksetzt, ist mehr oder weniger Glückssache.
In jedem Fall ist für mich der Pulse Counter bestenfalls Alphastadium. Eine Formel, die bei mir Time in Sekunden umrechnen soll (%value%/1000) wird zwar bei der Übermittlung an FHEM berücksichtig, nicht aber in der Device-Ansicht im Webinterface.
Aber meckern ist nicht angesagt - besser machen.

Nachtrag: Die Frage ist, ob es ein einfacher Switch und eine direkt eventbasierte Auswertung in FHEM nicht sinnvoller ist bei so relativ langsamen Events (gut - kommt drauf an wie oft Impulse kommen - bei meinem Wasserzähler maximal 3 pro Minute. Für S0-Ausgänge an Zählern bleibt der Counter natürlich erste Wahl...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

mirror

@mbreil: Nochmal - gab es einen Grund für die 60 (delay) - 300 (interval) Einstellung?
Ich habe die ESPEasy interval Einstellung auf 0 gesetzt und bekomme jetzt korrekte log Daten alle 5 min so wie im ESP eingestellt. (Vorher liefen da auch zwischendurch falsche Werte ein.)
Ob da meine Differenz zwischen Zähler und fhem Anzeige sich auflöst kann ich erst morgen sehen.
Gruß,
Dietmar

majorshark

100% tig stimmen meine Zählerstände auch nicht überein. Seit meiner letzten Kontrolle habe ich ca. 500 Impulse mehr auf der Uhr als in FHEM. Leider weiß ich nicht wann ich das das letzte mal abgeglichen habe. Das kann schon 1,5 bis 2 Jahre her sein. Das die Bastellösung den einen oder andere Impuls verschluckt kann ich tolerieren.

Ja das ist mein Block. Und wie Dietmar schreibt scheint es doch einen Zusammenhang mit dem Intervall und den mehrfachen Log Einträgen zu geben. Nach Kontrolle meiner DbLog kann ich sagen, dass ich keine doppelten Einträge mit den Einstellungen von meinem Blog habe.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

mirror

Es werden noch immer zuviel Pulse vom nodeMCU (50cm Kabel an GPIO-4, 10k pull-up an 3,3V) an den fhem Server übertragen.
Ich habe jetzt einen Osci im segmented mode laufen lassen und sehe bei den low-high Flanken erhebliches Prellen.
Ca. jeder 10. Impuls weist Prellen auf. Die high-low Flanken sind in Ordnung. Leider wirkt, wie hier schon gesagt, debouncing überhaupt nicht und man kann mit der Release 147 nicht auf fallende Flanke stellen.
Werde morgen mal eine RC-Kombi parallel schalten.

Knallfrosch

Hallo,

das Thema interessiert mich auch.
Ich habe mit der Zählung auch so meine liebe Mühe.

Ich hatte bisher nur einen einfachen Reedkontakt am Gaszähler. Der verschluckte aber viele Signale.
Nun setze ich so etwas https://www.amazon.de/HALJIA-Reed-Sensor-Modul-Magnetron-Modul-Reed-Schalter-Magswitch/dp/B07548RZW5/ref=sr_1_6?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=5Y12T66RSFPU&keywords=reedkontakt+arduino&qid=1573979399&sprefix=Reedkontakt+ar%2Caps%2C178&sr=8-6 ein.

Hilfreich, da man über die LED´s (Power/Impuls) gut die Funktion erkennt.
Mit diesem Sensor werden nun aber über ein kurze Zeit schon zu viele Imp. gezählt. (Mit der Imp-LED nicht zu erkennen)

Eine geringe Abweichung wäre sicherlich zu verschmerzen, aber bei mir sind es nach 1-2h teilweise schon mehr als 0,5m³.

Ich benutze v2.0.0-dev12_dev auf dem NodeMCU.

-FHEM auf Raspm B+ mit FHEM2FHEM auf einem weiteren Rasp B+
-LaCrosse über Jeelink-Clone und diverses HM über HM-USB.
-S0-Stromzähler und Reed-Gaszähler

mirror

Ich glaube die LED Versionen sind "nice to see" - aber helfen für das Prellproblem nicht wirklich weiter.
Aber eine Frage: Du hast ja eine neuere ESP Firmware Version. Kannst Du da den debounce Parameter einstellen und vor allen Dingen  - hat er Wirkung? Z.B. 200ms.
Gruß,
Dietmar

Pfriemler

#13
da melde ich mich auch kurz ... mit der Version kann ich nichts anfangen - ich habe einen nigthly 20191104 aufm Wemos D1 laufen und da kann ich mit dem Debouncing absolut nichts anfangen. Es gibt diverse Beschwerden im Netz darüber dass es nicht funktioniert, ich mag nicht glauben, dass das Problem noch immer ungelöst ist, ich übersehe irgendwas.

Edit: https://github.com/letscontrolit/ESPEasy/issues/2366
Das Problem wird dort anschaulich erklärt, gilt ab Mitte Mai als gefixt, der Fix wurde aber wieder zurückgestellt wegen irgendwelcher Interrupt-Probleme und möglicherweise bis jetzt nicht reaktiviert?

Ob das verlinkte Reed-Modul überhaupt irgendwas hilft? Ist das nicht der allgegenwärtige Komparator für analoge Eingangsgrößen, praktisch völlig sinnfrei für einen digitalen Sensor wie einen Reedkontakt? Gut, jetzt noch einen Kondensator statt des Reed und den den Reed mit einem Serienwiderstand dazu parallel (1k), so dass das Eingangssignal anständig verschliffen wird, und den Komparator mittig eingestellt - der richtet es dann wieder und das sollte das Prellen schon verhindern. Größe kommt auf die genaue Schaltung an. Muss ich mal ausprobieren ...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

majorshark

Ich habe jetzt auch noch einmal genau nachgesehen. Auf meinem ESP werkelt ein R142'er ESP-Easy. Damit habe ich tatsächlich keine Probleme bezüglich zu vieler Impulse. Eher zu wenig wie oben schon beschrieben. Aber das schreibe ich den Neustarts, Stromausfällen etc. zu.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch: