ArduCounter Support und neue Versionen (war: Stromzähler mit S0 Schnitt...)

Begonnen von StefanStrobel, 26 Januar 2014, 12:08:13

Vorheriges Thema - Nächstes Thema

StefanStrobel

Hallo FunkOdyssey,

Es kann sein, dass devVerbose verloren gegangen ist, wenn Dein Board neu gestartet hat.
Ich habe nochmal eine neue Version angehängt, in der die Debug-Ausgaben erweitert sind.
devVerbose wird jetzt auch nach einem Neustart des Boards neu gesetzt und es gibt ein neues "get History", das (sofern devVerbose >5 ist) die detaillierte pin History nach einer Meldung des Boards lesbarer aufbereitet.

Zitat von: FunkOdyssey am 21 Februar 2019, 20:19:17
Sieht danach aus. Und das kann nicht damit zu haben, dass der Arduino die Pegeländerungen einfach nur nicht erkennt?
Die Frage ist warum er die Pegeländerungen nicht erkennt.
Ich glaube nicht, dass es an der Firmware liegt, aber mit den Debug-Ausgaben sollte sich das klären lassen.
Bitte versuch nochmal verbose 5 und devVerbose 20.
Die Ausgabe der pin-Änderungen ist dabei dann unabhängig vom Interrupt-Händling und dem Zählen.

Zitat von: FunkOdyssey am 21 Februar 2019, 20:19:17
Wäre logisch, aber ich habe es doppelt geprüft. Es läuft ja auch relativ lange und das ohne irgendeine Berührung danach.
Ich haben einen Elster IN-Z65, den ich heute sogar richtig festgeschraubt habe. Vorsichtshalber. :-)
Dann geht es auf den Arduino Nano, Pin D4. Und einen 10uf Kondensator, um das Prellen zu vermeiden. Einen Hardware-Pullup-Widerstand habe ich nicht angeschlossen. Nur die Konfiguration in FHEM.
Aktuell: pind4 = falling pullup 5
Aber auch bereits mit 60 und 30 getestet.
Da muss ich nochmal nachfragen:
der Zähler geht auf D4 und das andere Ende? Auf GND?
Der 10 uF Kondensator hängt wo? Direkt zwischen D4 und GND? Das könnte ungesund sein.
Generell sollte so ein Kondensator gar nicht nötig sein. Die Angabe der minimalen Pulslänge (die letzte Zahl beim Attribut "attr XY pinD4 falling pullup 60") - hier also 60 ist genau dazu da, Prellen oder ähnliche Störungen, die kürzer als 60 Millisekunden sind zu filtern. Bei get History sieht man solche Aktivitäten.

Zitat von: FunkOdyssey am 21 Februar 2019, 20:19:17
Je nachdem ob ich Heißwasser öffne oder die Fußbodenheizung nachlegt. Dann könnte auch mehr passieren. Aber du hast Recht. Aktuell dürfte der sich nur recht langsam drehen. Ich sehe das nur leider sehr selten.
Das habe ich ja bereits gemacht und mich gewundert, dass ich nicht die Ausgabe erhalten wie du gezeigt hattest.

das sollte mit der neuen Version jetzt funktionieren. Ich hoffe die Log-Ausgabe ist dann aufschlussreich.
Wenn wieder Impulse nicht gezählt werden und auch im Log keine Änderung angezeigt wird, dann hätte ich Deinen Kondensator oder den Nano in Verdacht.

Gruss
   Stefan

EDIT 9.7.19: neue Version ist eingecheckt (Firmware Quellcode unter contrib/arduino, Hex-File für den Arduino Nano unter FHEM/firmware)

StefanStrobel

Hallo,

ich habe noch die Dokumentation für "get History" und das Attribut MaxHist ergänzt und die neue Version eingecheckt.

Gruss
   Stefan

tpm88

Hallo Stefan,

mein ArduCounter auf einem Wemos D1 Mini zählt ebenfalls mit der neuen Version von Ende Januar nicht mehr.

Ich habe eben das neue Modul von heute eingespielt und werde gleich entsprechende Logs zusammenstellen.

Gruß
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

SamNitro

Könnte mir mal jemand bitte auf die Sprünge helfen wie ich meinen Zaehler auf eine kommastelle bekomme

Internals:
   Board      ESP8266
   BoardDet    ESP8266_NODEMCU
   DEF        10.1.1.44:80
   DeviceName 10.1.1.44:80
   FD         19
   FUUID      5c5b580f-f33f-19ae-2fdd-f55fd3a6f2c1034a
   Initialized 1
   LASTOPEN   1550855874.90837
   NAME       AC
   NOTIFYDEV  global
   NR         175
   NTFY_ORDER 50-AC
   PARTIAL   
   STATE      opened
   SketchCompile Feb 22 2019 18:01:12
   TCP        1
   TYPE       ArduCounter
   VersionFirmware 3.12
   VersionModule 6.10 - 16.2.2019
   WaitForAlive 0
   allowedPins 0,1,2,5,17,A0
   buffer     
   deviceBooted 1550855859.01573
   devioLoglevel 3
   nextOpenDelay 60
   READINGS:
     2019-02-23 19:45:27   Zaehler         410.313000000002
     2019-02-23 19:45:27   calcCounterD2   9.41199999999984
     2019-02-23 19:45:27   calcCounterD2_i 0
     2019-02-23 19:45:27   countDiffD2     2
     2019-02-23 19:45:27   interpolatedLongD2 9469
     2019-02-23 19:45:27   longD2          9453
     2019-02-23 19:45:27   pinD2           9419
     2019-02-23 19:45:27   powerD2         0.273
     2019-02-23 19:45:27   rejectD2        7407
     2019-02-23 19:45:27   seqD2           45
     2019-02-22 18:17:54   state           opened
     2019-02-23 19:45:27   timeDiffD2      26372
   runningCfg:
     2          falling pullup 30
     I          30 60 2 2
     T          100 110
     V          0
Attributes:
   disable    0
   flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
   pinD2      falling pullup 30
   pulsesPerKWh 1000
   room       Zähler,
   userReadings Zaehler:longD2.* monotonic {ReadingsVal($name,"pinD2",0)/1000}
   userattr   pinD2



Danke Gruß Patrick
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

tpm88

Die Pegeländerungen - zeitgleich mit dem Leuchten der roten LED am Ferrarisleser -  werden erkannt, aber offenbar nicht gezählt.

2019.02.23 19:34:36 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 1  count 0  reject 0
2019.02.23 19:34:40 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 2  count 0  reject 0



So, hier erste Logs mit verbose 5 und devVerbose 20.


FHEM-Log:

2019.02.23 19:32:14 0: HourCounter CN.S0_Strom Define.228 parameters: CN.S0_Strom HourCounter AC_Strom:long5:.*
2019.02.23 19:32:15 3: AC_Strom: disable attribute cleared
2019.02.23 19:32:17 3: AC_Strom: Notify called with events: INITIALIZED, open device and set timer to send hello to device
2019.02.23 19:32:17 3: Opening AC_Strom device 192.168.8.69:80
2019.02.23 19:32:19 3: AC_Strom device opened
2019.02.23 19:32:19 3: AC_Strom: device sent hello: ArduCounter V3.12 on ESP8266 ESP8266_WEMOS_D1MINI compiled Feb 22 2019 21:44:47 Hello, pins 0,1,2,5,17 available T77966179,0 B560,0
2019.02.23 19:32:23 3: AC_Strom: ConfigureDevice: no analogThresholds attribute
2019.02.23 19:34:08 3: AC_Strom: device: devVerbose set to 20
2019.02.23 19:34:22 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:34:22 5: SW: 1,10k.
2019.02.23 19:34:32 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:34:32 5: SW: 1,10k.
2019.02.23 19:34:36 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 1  count 0  reject 0
2019.02.23 19:34:40 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 2  count 0  reject 0
2019.02.23 19:34:42 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:34:42 5: SW: 1,10k.
2019.02.23 19:34:52 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:34:52 5: SW: 1,10k.
2019.02.23 19:35:02 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:35:02 5: SW: 1,10k.
2019.02.23 19:35:12 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:35:12 5: SW: 1,10k.
2019.02.23 19:35:22 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:35:22 5: SW: 1,10k.
2019.02.23 19:35:32 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:35:32 5: SW: 1,10k.
2019.02.23 19:35:42 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:35:42 5: SW: 1,10k.
2019.02.23 19:35:52 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:35:52 5: SW: 1,10k.
2019.02.23 19:36:02 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:36:02 5: SW: 1,10k.
2019.02.23 19:36:12 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:36:12 5: SW: 1,10k.
2019.02.23 19:36:17 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 5  count 0  reject 0
2019.02.23 19:36:21 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 6  count 0  reject 0
2019.02.23 19:36:21 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 10  count 0  reject 0
2019.02.23 19:36:21 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 10  count 0  reject 0
2019.02.23 19:36:22 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:36:22 5: SW: 1,10k.
2019.02.23 19:36:33 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:36:33 5: SW: 1,10k.
2019.02.23 19:36:43 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:36:43 5: SW: 1,10k.
2019.02.23 19:36:53 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:36:53 5: SW: 1,10k.
2019.02.23 19:37:03 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:37:03 5: SW: 1,10k.
2019.02.23 19:37:13 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:37:13 5: SW: 1,10k.
2019.02.23 19:37:23 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:37:23 5: SW: 1,10k.
2019.02.23 19:37:33 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:37:33 5: SW: 1,10k.
2019.02.23 19:37:43 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:37:43 5: SW: 1,10k.
2019.02.23 19:37:53 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:37:53 5: SW: 1,10k.
2019.02.23 19:37:57 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 11  count 0  reject 0
2019.02.23 19:38:00 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 12  count 0  reject 0
2019.02.23 19:38:03 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:38:03 5: SW: 1,10k.
2019.02.23 19:38:13 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:38:13 5: SW: 1,10k.
2019.02.23 19:38:23 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:38:23 5: SW: 1,10k.
2019.02.23 19:38:29 5: AC_Strom: Device Time 78337.54
2019.02.23 19:38:29 4: AC_Strom: pin D5 (pin5) Cnt 0 (diff 0/0) in 300.000s from 19:33:29 until 19:38:29, seq 5, Rej 0, Avg ms, result 0.000
2019.02.23 19:38:29 5: AC_Strom: pin D5 (pin5) adding rDiff 0 to long count 0 and interpolated count 0
2019.02.23 19:38:33 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:38:33 5: SW: 1,10k.
2019.02.23 19:38:43 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:38:43 5: SW: 1,10k.
2019.02.23 19:38:53 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:38:53 5: SW: 1,10k.
2019.02.23 19:39:03 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:39:03 5: SW: 1,10k.
2019.02.23 19:39:13 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:39:13 5: SW: 1,10k.
2019.02.23 19:39:23 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:39:23 5: SW: 1,10k.
2019.02.23 19:39:28 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 17  count 0  reject 0
2019.02.23 19:39:32 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 18  count 0  reject 0
2019.02.23 19:39:33 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:39:33 5: SW: 1,10k.
2019.02.23 19:39:43 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:39:43 5: SW: 1,10k.
2019.02.23 19:39:53 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:39:53 5: SW: 1,10k.
2019.02.23 19:40:03 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:40:03 5: SW: 1,10k.
2019.02.23 19:40:13 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:40:13 5: SW: 1,10k.
2019.02.23 19:40:23 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:40:23 5: SW: 1,10k.
2019.02.23 19:40:33 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:40:33 5: SW: 1,10k.
2019.02.23 19:40:43 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:40:43 5: SW: 1,10k.
2019.02.23 19:40:53 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:40:53 5: SW: 1,10k.
2019.02.23 19:40:57 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 3  count 0  reject 0
2019.02.23 19:41:01 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 4  count 0  reject 0
2019.02.23 19:41:03 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:41:03 5: SW: 1,10k.
2019.02.23 19:41:13 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:41:13 5: SW: 1,10k.
2019.02.23 19:41:23 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:41:23 5: SW: 1,10k.
2019.02.23 19:41:33 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:41:33 5: SW: 1,10k.
2019.02.23 19:41:43 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:41:43 5: SW: 1,10k.
2019.02.23 19:41:53 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:41:53 5: SW: 1,10k.
2019.02.23 19:42:03 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:42:03 5: SW: 1,10k.
2019.02.23 19:42:13 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:42:13 5: SW: 1,10k.
2019.02.23 19:42:23 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:42:23 5: SW: 1,10k.
2019.02.23 19:42:33 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:42:33 5: SW: 1,10k.
2019.02.23 19:42:34 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 10  count 0  reject 0
2019.02.23 19:42:34 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 13  count 0  reject 0
2019.02.23 19:42:34 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 16  count 0  reject 0
2019.02.23 19:42:34 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 18  count 0  reject 0
2019.02.23 19:42:34 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 1  count 0  reject 0
2019.02.23 19:42:38 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 2  count 0  reject 0
2019.02.23 19:42:43 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:42:43 5: SW: 1,10k.
2019.02.23 19:42:53 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:42:53 5: SW: 1,10k.
2019.02.23 19:43:03 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:43:03 5: SW: 1,10k.
2019.02.23 19:43:13 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:43:13 5: SW: 1,10k.
2019.02.23 19:43:23 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:43:23 5: SW: 1,10k.
2019.02.23 19:43:29 5: AC_Strom: Device Time 78637.54
2019.02.23 19:43:29 4: AC_Strom: pin D5 (pin5) Cnt 0 (diff 0/0) in 300.000s from 19:38:29 until 19:43:29, seq 6, Rej 0, Avg ms, result 0.000
2019.02.23 19:43:29 5: AC_Strom: pin D5 (pin5) adding rDiff 0 to long count 0 and interpolated count 0
2019.02.23 19:43:33 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:43:33 5: SW: 1,10k.
2019.02.23 19:43:43 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:43:43 5: SW: 1,10k.
2019.02.23 19:43:53 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:43:53 5: SW: 1,10k.
2019.02.23 19:44:03 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:44:03 5: SW: 1,10k.
2019.02.23 19:44:13 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:44:13 5: SW: 1,10k.
2019.02.23 19:44:14 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 0  histIdx 5  count 0  reject 0
2019.02.23 19:44:18 3: AC_Strom: device: pin 5 ( internal 14 ) changed to 1  histIdx 6  count 0  reject 0
2019.02.23 19:44:23 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:44:23 5: SW: 1,10k.
2019.02.23 19:44:33 5: AC_Strom: sending k(eepAlive) to device
2019.02.23 19:44:33 5: SW: 1,10k.


Das Device-Log für den gleichen Zeitraum:

2019-02-23_19:33:29 AC_Strom powerD5: 0.000
2019-02-23_19:33:29 AC_Strom rejectD5: 0
2019-02-23_19:33:29 AC_Strom timeDiffD5: 300000
2019-02-23_19:33:29 AC_Strom countDiffD5: 0
2019-02-23_19:33:29 AC_Strom pinD5: 0
2019-02-23_19:33:29 AC_Strom longD5: 0
2019-02-23_19:33:29 AC_Strom interpolatedLongD5: 0
2019-02-23_19:33:29 AC_Strom seqD5: 4
2019-02-23_19:38:29 AC_Strom powerD5: 0.000
2019-02-23_19:38:29 AC_Strom rejectD5: 0
2019-02-23_19:38:29 AC_Strom timeDiffD5: 300000
2019-02-23_19:38:29 AC_Strom countDiffD5: 0
2019-02-23_19:38:29 AC_Strom pinD5: 0
2019-02-23_19:38:29 AC_Strom longD5: 0
2019-02-23_19:38:29 AC_Strom interpolatedLongD5: 0
2019-02-23_19:38:29 AC_Strom seqD5: 5
2019-02-23_19:43:29 AC_Strom powerD5: 0.000
2019-02-23_19:43:29 AC_Strom rejectD5: 0
2019-02-23_19:43:29 AC_Strom timeDiffD5: 300000
2019-02-23_19:43:29 AC_Strom countDiffD5: 0
2019-02-23_19:43:29 AC_Strom pinD5: 0
2019-02-23_19:43:29 AC_Strom longD5: 0
2019-02-23_19:43:29 AC_Strom interpolatedLongD5: 0
2019-02-23_19:43:29 AC_Strom seqD5: 6


Und hier noch ein list des Device:

fhem> list AC_Strom
Internals:
   Board      ESP8266
   BoardDet    ESP8266_WEMOS_D1MINI
   DEF        192.168.8.69:80
   DeviceName 192.168.8.69:80
   FD         4
   FUUID      5c4dc97d-f33f-7f16-106f-1dfbbdd3b8f23dff
   Initialized 1
   LASTOPEN   1550946737.7726
   NAME       AC_Strom
   NOTIFYDEV  global
   NR         205
   NTFY_ORDER 50-AC_Strom
   PARTIAL
   STATE      73902.38
   SketchCompile Feb 22 2019 21:44:47
   TCP        1
   TYPE       ArduCounter
   VersionFirmware 3.12
   VersionModule 6.12 - 23.2.2019
   WaitForAlive 0
   allowedPins 0,1,2,5,17,A0
   buffer
   deviceBooted 1550868774.02701
   devioLoglevel 3
   nextOpenDelay 60
   READINGS:
     2019-02-07 20:07:00   TotalKWh        73902.3833330495
     2019-02-23 03:13:28   calcCounterD5   0
     2019-02-23 03:13:28   calcCounterD5_i 0
     2019-02-07 20:07:00   countDiff5      1
     2019-02-23 19:43:29   countDiffD5     0
     2019-02-07 20:07:00   interpolatedLong5 313494
     2019-02-23 19:43:29   interpolatedLongD5 0
     2018-03-08 16:49:53   lastMsg5        R5 C193 D1/1 T94823 N24086290 X0 A3271
     2019-02-23 03:13:28   lastMsgD5       R5 C0 D0/0 T300000 N19237540,0 X0 S64
     2019-02-07 20:07:00   long5           313392
     2019-02-23 19:43:29   longD5          0
     2019-02-07 20:07:00   pin5            26229
     2019-02-23 19:43:29   pinD5           0
     2018-03-08 16:52:19   pinHistory5     -690172/0@1X, -690172/1@0R, -690171/24@1X, -690147/6303@0C, -683844/157421@1G, -526423/6211@0C, -520212/134914@1G, -385298/5549@0C, -379749/132382@1G, -247367/1@0R, -247366/44@1G, -247322/6100@0C, -241222/91552@1G, -149670/3271@0C, -146399/140151@1G, -6248/1@0R, -6247/1@1X, -6246/0@0R, -6246/13@1X
     2019-02-07 20:07:00   power5          0.396
     2019-02-23 19:43:29   powerD5         0.000
     2019-02-07 20:07:00   reject5         62004
     2019-02-23 19:43:29   rejectD5        0
     2019-02-07 20:07:00   seq5            52
     2019-02-23 19:43:29   seqD5           6
     2019-02-23 19:32:19   state           opened
     2019-02-07 20:07:00   timeDiff5       75847
     2019-02-23 19:43:29   timeDiffD5      300000
   runningCfg:
     5          falling pullup 30
     I          2 300 1 1
     T          100 110
Attributes:
   comment    17.05.18 Korrektur 72682.3 v2.36
   devVerbose 20
   disable    0
   factor     8333
   flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
   interval   2 300 1 1
   pinD5      falling pullup 30
   room       Strom
   stateFormat { sprintf("%.2f", round( ReadingsVal("AC_Strom","TotalKWh",0), 2))}
   userReadings TotalKWh:long5.* monotonic { ReadingsVal("AC_Strom","long5",0)/120 }
   userattr   pinD0 pinD5 verboseReadings5
   verbose    5


Im list sind noch die alten Readings (ohne "D" vor der 5) sowie die neuen Readings. Bis auf die verbose Attribute ist alles unverändert, vor allem auch der elektronische Aufbau.
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

FunkOdyssey

Zitat von: StefanStrobel am 23 Februar 2019, 12:57:22
Es kann sein, dass devVerbose verloren gegangen ist, wenn Dein Board neu gestartet hat.
Ich habe nochmal eine neue Version angehängt, in der die Debug-Ausgaben erweitert sind.
devVerbose wird jetzt auch nach einem Neustart des Boards neu gesetzt und es gibt ein neues "get History", das (sofern devVerbose >5 ist) die detaillierte pin History nach einer Meldung des Boards lesbarer aufbereitet.

Das macht Sinn. Plötzlich hatte ich nämlich doch die gewünschte Ausgabe. Mal nicht - mal doch. Danke für den Hinweis. Und vielen Dank für die Erweiterung.

Zitat von: StefanStrobel am 23 Februar 2019, 12:57:22
Da muss ich nochmal nachfragen:
der Zähler geht auf D4 und das andere Ende? Auf GND?
Der 10 uF Kondensator hängt wo? Direkt zwischen D4 und GND? Das könnte ungesund sein.

Ja, zwischen D4 und GND. Also parallel zum Zähler. Zuvor wurde halt einfach zu viel getriggert.
Aber inwiefern könnte das ungesund werden? Das macht mich jetzt nervös? :-)

Zitat von: StefanStrobel am 23 Februar 2019, 12:57:22
Generell sollte so ein Kondensator gar nicht nötig sein. Die Angabe der minimalen Pulslänge (die letzte Zahl beim Attribut "attr XY pinD4 falling pullup 60") - hier also 60 ist genau dazu da, Prellen oder ähnliche Störungen, die kürzer als 60 Millisekunden sind zu filtern. Bei get History sieht man solche Aktivitäten.
Okay, das ist mir - eigentlich - sogar bekannt. Ich kann mich nicht mehr genau daran erinnern, wie die Probleme damals (vor ca. 1,5 Jahren) waren. Seitdem ist der halt noch parallel geschaltet. Ich würde den auch entfernen, aber mir rennt die Zeit davon. Ab Frühling dreht sich mein Gaszähler vermutlich kaum noch. Und die Zeit zum Testen wird immer kürzer.

Zitat von: StefanStrobel am 23 Februar 2019, 12:57:22
das sollte mit der neuen Version jetzt funktionieren. Ich hoffe die Log-Ausgabe ist dann aufschlussreich.
Wenn wieder Impulse nicht gezählt werden und auch im Log keine Änderung angezeigt wird, dann hätte ich Deinen Kondensator oder den Nano in Verdacht.

Zitat von: StefanStrobel am 23 Februar 2019, 12:57:22
Die Frage ist warum er die Pegeländerungen nicht erkennt.
Ich glaube nicht, dass es an der Firmware liegt, aber mit den Debug-Ausgaben sollte sich das klären lassen.
Bitte versuch nochmal verbose 5 und devVerbose 20.
Die Ausgabe der pin-Änderungen ist dabei dann unabhängig vom Interrupt-Händling und dem Zählen.
Danke.

Jetzt kommt aber der eigentlich Grund wieso ich auf deine vielen Hilfsangebote nur skeptisch eingehe. Ich traue mich kaum, es hier zu erwähnen. Also: Ich würde mich weiterhin vollständig mit allen Logs der Welt rumschlagen und sogar den Kondensator ausbauen und weiter debuggen, wäre das nicht.....
Es scheint zu laufen. Seit zwei Tagen. Und ich denke, dass ich der Fehler war, denn ich habe die ArduCounter/GasCalculator-Konfiguration mit der neuen Version auch neu aufgesetzt. Insbesondere das Zähler-Reading.
Mein Gaszähler gibt einen Impulse bei 0,01 Kubikmeter. Der Zähler wird aber dennoch dreistellig angezeigt. Also habe ich ArduCounter in der dritten Nachkommastelle zählen lassen. Das macht natürlich überhaupt keinen Sinn und erklärt die großen/schnellen Abweichungen.
Ich habe jetzt den Zähler sogar als Dezimalzahl mit Nachkommastelle als userreading im ArduCounter angelegt. Zusätzlich den long-Counter angeglichen (hier aber ohne Nachkommatas) und habe das Verhalten zwei Tage mit den echten Werten des Zählers verglichen.
Zusätzlich habe ich den Thread nun dreimal komplett durchgelesen und mit birdys Probleme mit seinem Öl-Zähler genauer angeschaut. Bei ihm wird auch langsam gezählt. Also habe ich Intervall und Pin-Konfiguration bei birdy abgeguckt.
Und es scheint wirklich zu funktionieren.

Es tut mir wirklich leid, dass ich dich wieder mit dem Support für mich belästigt habe.

Langzeiterfahrung habe ich mit der Konstellation zwar noch nicht, aber ich bin optimistisch.

Mein aktuelles Device:
Internals:
   Board      NANO
   BoardDet   
   DEF        /dev/serial/by-id/usb-xxxx_USB2.0-Serial-if00-port0@38400
   DeviceName /dev/serial/by-id/usb-xxx_USB2.0-Serial-if00-port0@38400
   FD         4
   Initialized 1
   LASTOPEN   1550949722.75865
   NAME       ArduCounter
   NOTIFYDEV  global
   NR         538
   NTFY_ORDER 50-ArduCounter
   PARTIAL   
   STATE      opened
   SketchCompile Jan  6 2019 17:11:47
   TYPE       ArduCounter
   VersionFirmware 3.10
   VersionModule 6.10 - 16.2.2019
   allowedPins 3,4,5,6,7,8,9,10,11,13,14,A0,15,A1,16,A2,17,A3,18,A4,19,A5,20,A6,21,A7
   buffer     
   deviceBooted 1550949734.45458
   devioLoglevel 3
   nextOpenDelay 60
   READINGS:
     2019-02-23 20:28:04   Zaehler         8512.23000000009
     2019-02-22 14:02:03   calcCounterD4   2.00199999999992
     2019-02-22 14:02:03   calcCounterD4_i 0.001
     2019-02-23 20:28:04   countDiffD4     0
     2019-02-23 20:28:04   interpolatedLongD4 2552
     2019-02-23 20:28:04   lastMsgD4       R4 C0 D0/0 T360000 N360508,0 X0 S1
     2019-02-23 20:28:04   longD4          851223
     2019-02-23 20:28:04   pinD4           0
     2019-02-23 20:16:56   pinHistory4     1277s-26080587/77144@1G, 1278s-26003443/11975@0C, 1279s-25991468/76902@1G, 1280s-25914566/12083@0C, 1281s-25902483/76865@1G, 1282s-25825618/12221@0C, 1283s-25813397/77062@1G, 1284s-25736335/11979@0C, 1285s-25724356/76929@1G, 1286s-25647427/11608@0C, 1287s-25635819/76936@1G, 1288s-25558883/11700@0C, 1289s-25547183/77436@1G, 1290s-25469747/11434@0C, 1291s-25458313/77594@1G, 1292s-25380719/11341@0C, 1293s-25369378/77741@1G, 1294s-25291637/11219@0C, 1295s-25280418/77600@1G
     2019-02-23 20:28:04   powerD4         0.000
     2019-02-23 20:28:04   rejectD4        0
     2019-02-23 20:28:04   seqD4           1
     2019-02-23 20:22:02   state           opened
     2019-02-23 20:28:04   timeDiffD4      360000
   runningCfg:
     4          falling pullup 60
     I          60 600 5 2
     T          100 110
Attributes:
   interval   60 360
   pinD4      falling pullup 100
   readingPulsesPerKWhD4 10
   userReadings Zaehler:pinD4.* monotonic {ReadingsVal($name,"pinD4",0)/100}
   userattr   pinD4 readingFactorD4 readingNameCountD4 readingNamePowerD4 readingPulsesPerKWhD4 verboseReadingsD4
   verboseReadingsD4 1




Ich bin ein wenig verwundert über den Wert bei readingPulsesPerKWhD4. Ich habe verschiedene Zehnerpotenzen ausprobiert. Aber der Wert 10 scheint korrekt zu sein.

Obwohl mein GasCalculator sogar auf den ArduCounter aufsetzt, sehen die Heizleistungswerte im Plot nun sauberer aus. Das kann ich irgendwie nicht nachvollziehen, warum GC hier zu "kantig" aussieht. GC berücksichtigt auch die Zeiten zwischen den Verbrauchsimpulsen. Gleiche Datenbasis.

Anbei mal eine Grafik dazu.

Danke, Stefan, für deine Unterstützung.

Macht es noch Sinn, deine Debug-Version zu testen? Hilft dir das denn? Oder wäre das nur für mich gewesen?  ;)
Nachtrag: ich habe die PM mal hochgeladen.


StefanStrobel

Hallo Tobias,

könntest Du bitte noch die Ausgabe von "get info" posten?
Damit kannst Du abfragen welche Konfiguration tatsächlich im Board aktiv ist.

Beispiel:

M Status: ArduCounter V3.10 on NANO compiled Jan  6 2019 17:11:47
I60 600 10 0
T100 110
V0
P4 falling pullup min 30, R4 C4 D3/4 T43008 N62090,0 X1 A120
P5 falling pullup min 30, R5 C1 D0/1 T0 N62090,0 X0
M EEPROM Config: Cfg Slots: 3
M Slot: I 60,600,10,0
M Slot: A 4,2,1,30
M Slot: A 5,2,1,30
M Next report in 28291 milliseconds


und dann wäre es noch hilfreich ein get history zu sehen.
Das sieht z.B. so aus:

0 2019-02-24 13:29:39       0 seconds at 0 -> reject
1 2019-02-24 13:29:39    5.86 seconds at 1 -> gap
2 2019-02-24 13:29:45    0.09 seconds at 0 -> count
5 2019-02-24 13:29:45  14.241 seconds at 1 -> gap
6 2019-02-24 13:29:59    0.09 seconds at 0 -> count
7 2019-02-24 13:29:59  14.259 seconds at 1 -> gap
8 2019-02-24 13:30:13    0.09 seconds at 0 -> count
9 2019-02-24 13:30:13  14.238 seconds at 1 -> gap


da seht man dann was der Zähl-Algorithmus genau gemacht hat (auch wenn zu kurze Impuls ignoriert werden etc.)

Gruss / Thanx
   Stefan

StefanStrobel

Hallo Patrick,

die tatsächlichen Werte würde ich nicht runden.
Wenn Du im State oder anderswo gerundete Werte haben möchtest, kannst Du das mit stateFormat oder in einer ReadingsGoup oder als Userreading etc. mit einem sprintf machen.

Gruss
   Stefan

SamNitro

aktuell habe ich mir diese Lösung gebastelt:
attr AC stateFormat {sprintf("Zähler: %.1f kWh / E-Tech: %.1f kWh", ReadingsVal("AC","Haupt_Zaehler",0),ReadingsVal("AC","E-Tech",0))}
attr AC userReadings E-Tech:longD2.* monotonic {ReadingsVal($name,"pinD2",0)/1000},\
Haupt_Zaehler:longD2.* monotonic {ReadingsVal($name,"pinD2",0)/1000}


Wollte eigentlich das userReading schon gerundet haben, aber da habe ich noch keine Lösung
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

tpm88

Hallo Stefan,

aktiv ist jetzt das Modul von heute aus dem normalen Update:

98_ArduCounter.pm           18704 2019-02-23 18:36:06Z StefanStrobel


Hier sehr gerne noch die weiteren Infos:

Zitat von: StefanStrobel am 24 Februar 2019, 13:33:31
könntest Du bitte noch die Ausgabe von "get info" posten?

M Status: ArduCounter V3.12 on ESP8266 ESP8266_WEMOS_D1MINI compiled Feb 22 2019 21:44:47
I2 300 1 1
T100 110
V20
P5 falling pullup min 30, R5 C0 D0/0 T0 N146198761,0 X0
M no config in EEPROM
M Next report in 772 milliseconds


Zitat von: StefanStrobel am 24 Februar 2019, 13:33:31
und dann wäre es noch hilfreich ein get history zu sehen.

Leider ist die history (noch) leer: no history data so far

Danke für deine Unterstützung!

Gruß
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

StefanStrobel

Hallo Tobias,

ich konnte den Fehler nachvollziehen. Auch auf meinem Wemos D1 geht Pin D5 nicht.
Pin D2 geht aber. Ich suche jetzt nach der Ursache ...

Gruss
   Stefan

StefanStrobel

Also ich denke ich habe den Fehler gefunden.
Wenn die Firmware für einen ESP8266 und mit analogem Support compiliert wurde, dann waren die internen Pin-Nummern für die Interrupt-Routine falsch.
Für den Nano oder den ESP ohne analogen Support sollte das unerheblich sein ...
(#define analogIR 1 sollte dann auskommentiert sein)

Anbei eine neue Version zum Testen. Ich checke sie auch gleich ein, da sich nur der eine Fall (ESP mit analogIR) ändert und der war eh defekt ;-)

Gruss
   Stefan

EDIT 9.7.19: neue Version ist eingecheckt (Firmware Quellcode unter contrib/arduino, Hex-File für den Arduino Nano unter FHEM/firmware)

tpm88

Zitat von: StefanStrobel am 24 Februar 2019, 15:44:19
ich konnte den Fehler nachvollziehen. Auch auf meinem Wemos D1 geht Pin D5 nicht.
Pin D2 geht aber. Ich suche jetzt nach der Ursache ...

Da hat Murphy wieder zugeschlagen....

Mit dem vorherigen Sketch (2.36) und der alten Modulversion hat der Pin D5 aber problemlos funktioniert...

Danke & Gruß
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

StefanStrobel

ja, vorher gab es noch keinen Support für Reflexlichtschranken ...

Gruss
  Stefan

tpm88

Zitat von: StefanStrobel am 24 Februar 2019, 16:10:22
Anbei eine neue Version zum Testen. Ich checke sie auch gleich ein, da sich nur der eine Fall (ESP mit analogIR) ändert und der war eh defekt ;-)

Super, das sieht sehr viel besser aus. Jetzt zählt er wieder auf Pin D5 ...

fhem> get AC_Strom history
0 2019-02-24 16:23:00  16.722 seconds at 1 -> gap
1 2019-02-24 16:23:17   0.001 seconds at 0 -> reject
2 2019-02-24 16:23:17   0.002 seconds at 1 -> ignore drop
3 2019-02-24 16:23:17   0.002 seconds at 0 -> reject
4 2019-02-24 16:23:17       0 seconds at 1 -> ignore drop
5 2019-02-24 16:23:17   0.001 seconds at 0 -> reject
6 2019-02-24 16:23:17   0.002 seconds at 1 -> ignore drop
7 2019-02-24 16:23:17   0.001 seconds at 0 -> reject
8 2019-02-24 16:23:17       0 seconds at 1 -> ignore drop
9 2019-02-24 16:23:17   0.001 seconds at 0 -> reject
10 2019-02-24 16:23:17       0 seconds at 1 -> ignore drop
11 2019-02-24 16:23:17   0.001 seconds at 0 -> reject
12 2019-02-24 16:23:17   0.001 seconds at 1 -> ignore drop
13 2019-02-24 16:23:17   3.718 seconds at 0 -> count
14 2019-02-24 16:23:20   0.003 seconds at 1 -> ignore drop
15 2019-02-24 16:23:20       0 seconds at 0 -> reject
16 2019-02-24 16:23:20   0.002 seconds at 1 -> ignore drop
17 2019-02-24 16:23:20   0.001 seconds at 0 -> reject
18 2019-02-24 16:23:20       0 seconds at 1 -> ignore drop
19 2019-02-24 16:23:20   0.001 seconds at 0 -> reject
20 2019-02-24 16:23:20   0.001 seconds at 1 -> ignore drop
21 2019-02-24 16:23:20   0.001 seconds at 0 -> reject
22 2019-02-24 16:23:20   0.001 seconds at 1 -> ignore drop
23 2019-02-24 16:23:20       0 seconds at 0 -> reject
24 2019-02-24 16:23:20   0.001 seconds at 1 -> ignore drop
25 2019-02-24 16:23:20   0.001 seconds at 0 -> reject
26 2019-02-24 16:23:20  82.112 seconds at 1 -> gap
27 2019-02-24 16:24:42   3.879 seconds at 0 -> count
28 2019-02-24 16:24:46   0.006 seconds at 1 -> ignore drop
29 2019-02-24 16:24:46       0 seconds at 0 -> reject
30 2019-02-24 16:24:46   0.002 seconds at 1 -> ignore drop


Vielen Dank für deinen prompten Support und überhaupt für das geniale Modul. Auch die DebugInfos (History) sind jetzt für mich viel aussagekräftiger.

Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT