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,

der Effekt mit den sich selbst in der Anzeige ändernden Attributen bei birdy hat sich übrigens auch geklärt:
https://forum.fhem.de/index.php/topic,82586.0.html

Gruss
   Stefan

Oscar

Hallo,

als erstes möchte ich mich bei allen Entwicklern für die Arbeit bedanken, ich beschäftige mich seit Jahren mit FHEM und habe (gerade mit der neuesten Version) schon einige gute Lösungen aufbauen können. Klasse.

Nun zu meiner Frage..

Ich habe mir den ArduCounter gebaut um meinen Stromzähler auszulesen.
Dazu habe ich die ArduCounter1.8.ino auf den Nano gespielt und diesen mit
define Verbrauch ArduCounter /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI04XE7B-if00-port0
in FHEM angelegt.

Die Versionsabfrage in FHEM funktioniert.

Wenn ich jetzt einen Port definieren will mit
attr Verbrauch pinD2 falling pullup 50   (Zähler gibt Impulse mit Impulslänge von 65ms aus)
steht im Logfile von FHEM
Verbrauch: unparseable message from device: Error: Illegal pin specification 2

Kann mir jemand sagen was ich falsch mache.

Weiterhin möchte ich an den anderen Ports andere Zähler anschliesen, diese haben aber andere Verbrauchsfaktoren.
Wie muß ich diese definieren?

Vielen Dank für eure Hilfe.

Gruß Oscar

StefanStrobel

Hallo Oscar,

der Sketch erlaubt nicht alle Pins, da manche eventuell für andere Zwecke reserviert sind. Im Sketch steht das ab ca. Zeile 80:

/* arduino pins that are typically ok to use
* (some are left out because they are used
* as reset, serial, led or other things on most boards) */
byte allowedPins[MAX_ARDUINO_PIN] =
  { 0,  0,  0,  3,  4, 5, 6, 7,
    8,  9, 10, 11, 12, 13,
   14, 15, 16, 17,  0, 0};


Nimm einfach einen Pin ab 4.

Ich habe übrigens gerade die neuen Versionen des Moduls und des Sketches (2.05) eingecheckt.
Da sind ein paar Fehler behoben.

Gruss
   Stefan

Gruss
   Stefan

Oscar

Hallo Stefan,

Danke, das war der Fehler.
Der Zähler zählt jetzt freudig.

Jetzt werde ich mich mal um die Anpassungen kümmern.

Gruß Oscar

birdy

Zitat von: StefanStrobel am 13 Januar 2018, 14:17:21
der Effekt mit den sich selbst in der Anzeige ändernden Attributen bei birdy hat sich übrigens auch geklärt:

Ja genau, alle Probleme sind gelöst, alles funktioniert besten. Vielen Dank an alle Beteiligten.

Gruss birdy
FHEM  @Debian bullseye @Proxmox VE 8.1.3
@intelNUC's  (i5)
CUL 433(a-culfw), CUL 868(SlowRF), Max-Cube CUN geflash, HM-CFG-USB-2 (HMALND)

tpm88

Hallo Stefan,

ich setze den ArduCounter zum Auslesen meines Ferraris-Stromzählers ein. Vor allem die im Modul eingebaute Möglichkeit zum Entprellen des Signals ist genial. Vorher habe ich lange Zeit vergeblich mit dem ESPEasy PulseCounter experimentiert.

Ich habe das Modul minimal modifiziert, um die serielle Schnittstelle des Arduino via esp-link und ser2net remote lesen zu können. Das funktioniert prinzipiell auch zunächst problemlos.

S0 -> Arduino -> esplink -> ser2net -> FHEM auf RPi3

Heute ist mir aufgefallen, daß das Reading pin4 häufig zurückgesetzt wird.

2018-03-03_16:55:47 AC pin4: 52
2018-03-03_16:57:55 AC pin4: 53
2018-03-03_16:58:49 AC pin4: 54
2018-03-03_16:59:57 AC pin4: 55
2018-03-03_17:01:42 AC pin4: 56
2018-03-03_17:03:42 AC pin4: 57
2018-03-03_17:05:06 AC pin4: 58
2018-03-03_17:06:28 AC pin4: 59
2018-03-03_17:07:48 AC pin4: 60
2018-03-03_17:09:14 AC pin4: 61
2018-03-03_17:10:48 AC pin4: 62
2018-03-03_17:12:24 AC pin4: 63
2018-03-03_17:14:06 AC pin4: 64
2018-03-03_17:16:00 AC pin4: 65
2018-03-03_17:17:52 AC pin4: 66
2018-03-03_17:21:49 AC pin4: 2
2018-03-03_17:24:11 AC pin4: 3
2018-03-03_17:26:21 AC pin4: 4
2018-03-03_17:27:54 AC pin4: 5
2018-03-03_17:28:10 AC pin4: 6
2018-03-03_17:28:56 AC pin4: 7
2018-03-03_17:30:16 AC pin4: 8
2018-03-03_17:30:46 AC pin4: 9
2018-03-03_17:31:36 AC pin4: 10
2018-03-03_17:31:54 AC pin4: 11
2018-03-03_17:32:36 AC pin4: 12
2018-03-03_17:34:38 AC pin4: 13
2018-03-03_17:36:48 AC pin4: 14
2018-03-03_17:40:27 AC pin4: 2
2018-03-03_17:42:29 AC pin4: 3
2018-03-03_17:44:47 AC pin4: 4
2018-03-03_17:47:05 AC pin4: 5
2018-03-03_17:49:23 AC pin4: 6
2018-03-03_17:51:38 AC pin4: 7
2018-03-03_17:53:26 AC pin4: 8
2018-03-03_17:56:37 AC pin4: 2
2018-03-03_17:58:17 AC pin4: 3
2018-03-03_17:59:51 AC pin4: 4
2018-03-03_18:01:33 AC pin4: 5
2018-03-03_18:03:13 AC pin4: 6
2018-03-03_18:04:53 AC pin4: 7
2018-03-03_18:06:31 AC pin4: 8
2018-03-03_18:08:05 AC pin4: 9
2018-03-03_18:10:05 AC pin4: 10
2018-03-03_18:12:01 AC pin4: 11
2018-03-03_18:13:45 AC pin4: 12


Woran kann das liegen?

Hier noch ein list des ArduCounters:

fhem> list AC
Internals:
   CounterResetTime 1520102461.46709
   DEF        192.168.8.69:23
   DeviceName 192.168.8.69:23
   FD         5
   Initialized 1
   NAME       AC
   NOTIFYDEV  global
   NR         213
   NTFY_ORDER 50-AC
   PARTIAL
   STATE      72065.69
   TYPE       ArduCounter
   VersionFirmware 2.05
   VersionModule 5.7 - 2.1.2018
   buffer
   READINGS:
     2018-03-03 19:40:42   TotalKWh        72065.6949999636
     2018-03-03 19:40:42   countDiff4      1
     2018-03-03 19:40:42   interpolatedLong4 21484
     2018-03-03 19:40:42   lastMsg4        R4 C13 D1 R1 T69896 N978594 X0 F69896 L69896 A2883 H-631573/3523:0C, -628050/69726:1G, -558324/2838:0C, -555486/65147:1G, -490339/2823:0C, -487516/65364:1G, -422152/2847:0C, -419305/66294:1G, -353011/2889:0C, -350122/66820:1G, -283302/2907:0C, -280395/67235:1G, -213160/2903:0C, -210257/67622:1G, -142635/2992:0C, -139643/66267:1G, -73376/2917:0C, -70459/67013:1G, -3446/2883:0C
     2018-03-03 19:40:42   long4           18823
     2018-03-03 19:40:42   pin4            13
     2018-03-03 19:40:42   pinHistory4     -631573/3523:0C, -628050/69726:1G, -558324/2838:0C, -555486/65147:1G, -490339/2823:0C, -487516/65364:1G, -422152/2847:0C, -419305/66294:1G, -353011/2889:0C, -350122/66820:1G, -283302/2907:0C, -280395/67235:1G, -213160/2903:0C, -210257/67622:1G, -142635/2992:0C, -139643/66267:1G, -73376/2917:0C, -70459/67013:1G, -3446/2883:0C
     2018-03-03 19:40:42   power4          0.429
     2018-03-03 19:40:42   reject4         6804
     2018-03-03 03:17:19   state           opened
     2018-03-03 19:40:42   timeDiff4       69896
Attributes:
   disable    0
   factor     8333
   flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
   interval   2 300 1 1
   pinD4      falling pullup 30
   room       Strom
   stateFormat { sprintf("%.2f", round( ReadingsVal("AC","TotalKWh",0), 2))}
   userReadings TotalKWh:long4.* monotonic { ReadingsVal("AC","long4",0)/120 }
   userattr   pinD4 verboseReadings4
   verboseReadings4 1



Angehangen ist ein Logfile des Zählers mit debug Readings sowie das von mir für ser2net modifizierte Modul.

VG
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,

zur Fehlersuche bräuchte ich einen Auszug aus dem Fhem-Log bei dem das Modula auf verbose 5 steht.

Aber eventuell kann ich Dir auch anders helfen:
ich habe angefangen, den ArduCounter auf den ESP8266 (bei mir einen Wemos D1) zu portieren. Es ist zwar noch nicht alles drin, was ich mir vorgenommen habe, aber die bisherigen Features scheinen soweit schon zu funktionieren.
Wenn Du Interesse hast, könnte ich Dir den aktuellen Stand (geändertes Modul und Sketch) zur Verfügung stellen und Du könntest es mal testen.

Was noch nicht drin ist:
- Speichern der aktuellen Konfiguration im Flash, so dass der ESP nach einem Reboot gleich weiter zählen kann
- Aufräumen des Sketch, so dass er auch wieder auf einem normalen Arduino läuft (bisher habe ich viel für den ESP umgebaut)

Gruss
   Stefan

tpm88

Hallo Stefan,

besten Dank - Log mit verbose 5 ist in Arbeit.

Sehr gerne teste ich auch den Port auf den ESP8266. Einen wemos D1 hierfür habe ich da.

Ist mit dem ESP8266 Port der direkte Anschluß per WLAN an das ArduCounter Modul möglich?

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

Zitat von: tpm88 am 04 März 2018, 16:39:09
Ist mit dem ESP8266 Port der direkte Anschluß per WLAN an das ArduCounter Modul möglich?

Genau das ist die Idee :-)

Ich räume den Code noch ein bisschen auf und poste dann eine Testversion in den nächsten Tagen.

Gruß
   Stefan

birdy

Zitat von: StefanStrobel am 04 März 2018, 19:12:29

Zitat von: tpm88 am 04 März 2018, 16:39:09
Ist mit dem ESP8266 Port der direkte Anschluß per WLAN an das ArduCounter Modul möglich?
Genau das ist die Idee :-)

Ich räume den Code noch ein bisschen auf und poste dann eine Testversion in den nächsten Tagen.

Gruß
   Stefan

Dann könnte ich ja meinen Keller- RPi  in Rente schicken....
und hätte die Reading direkt in Haupt-FHEM?  Wenn das mal keine guten Neuigkeiten sind!

Gruss birdy
FHEM  @Debian bullseye @Proxmox VE 8.1.3
@intelNUC's  (i5)
CUL 433(a-culfw), CUL 868(SlowRF), Max-Cube CUN geflash, HM-CFG-USB-2 (HMALND)

StefanStrobel

#295
Ok, hier eine erste neue Version für den ESP8266 zum Testen.
Im Sketch muss die SSID und der WLAN Key manuell eingetragen werden (Zeile 100 und 101).
Debug kann durch Löschen der Zeile 80 entfernt werden.

Zum Flashen eines Wemos D1 muss in der Arduino IDE per Boardmanager der Support für den ESP8266 nachinstalliert sein. Dann muss das korrekte Board (z.B. Wemos D1 mini) ausgewählt werden.
Das angehängte Modul ist für den neuen Sketch angepasst und funktioniert nicht mehr mit der veröffentlichten stabilen Version des ArduCounter Sketches für den Arduino.

Im Modul wird dann statt z.B. /dev/ttyUSB1 einfach eine IP-Adresse mit Port 80 angegeben, z.B.:
define ACTest ArduCounter 192.168.1.112:80

das ganze ist sicher noch nicht ausgereift. Wer einen stabilen Zähler braucht, sollte die eingecheckte Version des Moduls und Sketches für den Arduino nutzen ;-)

Gruss
   Stefan

birdy

Ja die aktuelle Version für den Arduino läuft sehr stabil.

Ich werde mir gelegentlich einen ESP8266 zulegen, um das Ganze auszuprobieren. Die Idee mit den ESP8266 finde ich einfach genial!
Gruss birdy
FHEM  @Debian bullseye @Proxmox VE 8.1.3
@intelNUC's  (i5)
CUL 433(a-culfw), CUL 868(SlowRF), Max-Cube CUN geflash, HM-CFG-USB-2 (HMALND)

tpm88

Hallo Stefan,

auf den ersten Blick sieht der ESP8266 Support schon sehr gut aus:

fhem> list ACtest
Internals:
   CFGFN
   CounterResetTime 1520443884.5059
   DEF        192.168.8.69:80
   DeviceName 192.168.8.69:80
   FD         60
   Initialized 1
   NAME       ACtest
   NOTIFYDEV  global
   NR         10789
   NTFY_ORDER 50-ACtest
   PARTIAL
   STATE      opened
   TCP        1
   TYPE       ArduCounter
   VersionFirmware 2.25
   VersionModule 5.84 - 6.3.2018
   WaitForAlive 0
   allowedPins 0,1,2,5,6,7
   buffer
   nextOpenDelay 60
   CounterInterpolated:
     5          1
   READINGS:
     2018-03-07 18:35:40   interpolatedLong5 3
     2018-03-07 18:35:40   long5           3
     2018-03-07 18:35:40   pin5            3
     2018-03-07 18:36:50   pinHistory5     -326003/81072@1G, -244931/3617@0C, -241314/12@1X, -241302/1@0R, -241301/82031@1G, -159270/3544@0C, -155726/81936@1G, -73790/0@0R, -73790/1@1X, -73789/0@0R, -73789/8@1X, -73781/3605@0C
     2018-03-07 18:35:40   power5          0.351
     2018-03-07 18:35:40   reject5         3
     2018-03-07 18:31:24   state           opened
Attributes:
   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
   userattr   pinD0 pinD5


Erste Erkenntnisse:


  • beim Wemos D1 muß man wohl generell einen externen Pull-Up-Widerstand verwenden, da die Pins D3, D4 mit internem 10k Pullup "verboten" sind. Ohne externen Pull-Up habe ich keine Zählereignisse gesehen.
  • das Reconnect Handling des FHEM Moduls funktioniert nach Stromausfall am Wemos offenbar einwandfrei

Mit den oben gesetzten Attributen schreibt das Modul alle 2 Sekunden folgende Meldungen ins Log - auch ohne verboseReadings. Liegt das an dem DebugFlag im Sketch?

2018-03-07_18:44:12 ACtest pinHistory5: -434634/1@0R, -434633/24@1X, -434609/2877@0C, -431732/72774@1G, -358958/3279@0C, -355679/76906@1G, -278773/0@0R, -278773/0@1X, -278773/1@0R, -278772/34@1G, -278738/3485@0C, -275253/79549@1G, -195704/0@0R, -195704/38@1G, -195666/3480@0C, -192186/79954@1G, -112232/3503@0C, -108729/80112@1G, -28617/3497@0C
2018-03-07_18:44:14 ACtest pinHistory5: -436634/1@0R, -436633/24@1X, -436609/2877@0C, -433732/72774@1G, -360958/3279@0C, -357679/76906@1G, -280773/0@0R, -280773/0@1X, -280773/1@0R, -280772/34@1G, -280738/3485@0C, -277253/79549@1G, -197704/0@0R, -197704/38@1G, -197666/3480@0C, -194186/79954@1G, -114232/3503@0C, -110729/80112@1G, -30617/3497@0C
2018-03-07_18:44:16 ACtest pinHistory5: -438634/1@0R, -438633/24@1X, -438609/2877@0C, -435732/72774@1G, -362958/3279@0C, -359679/76906@1G, -282773/0@0R, -282773/0@1X, -282773/1@0R, -282772/34@1G, -282738/3485@0C, -279253/79549@1G, -199704/0@0R, -199704/38@1G, -199666/3480@0C, -196186/79954@1G, -116232/3503@0C, -112729/80112@1G, -32617/3497@0C


Ich werde weiter testen. Aber bereits jetzt: DANKE für die Weiterentwicklung!

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,

die Pins 3,4 und 8 setzen den Boot-Modus des ESP. Wenn da ein Zähler angeschlossen ist, kommt der ESP möglicherweise nach einem Reboot nicht mehr hoch.
Die Pullup-Einstellung für die anderen Pins war noch nicht mit dem ESP kompatibel. Das sollte jetzt funktionieren.
Ebenso habe ich das mit der Pin-History gefixt. Das war noch nicht fertig ...

Gruss
   Stefan

tpm88

Hallo Stefan,

v2.26 habe ich eingespielt. Funktioniert auf den ersten Blick wieder einwandfrei.

Die pinHistoryX readings kommen jetzt nur noch, wenn verboseReadingsX gesetzt ist. Dann allerdings alle zwei Sekunden (möglicherweise abhängig von meinen Intervall Settings)??

interval   2 300 1 1


Was noch nicht drin ist:
- Speichern der aktuellen Konfiguration im Flash, so dass der ESP nach einem Reboot gleich weiter zählen kann
- Aufräumen des Sketch, so dass er auch wieder auf einem normalen Arduino läuft (bisher habe ich viel für den ESP umgebaut)
[/quote]

Interessehalber - speicherst du die longX/interpolatedLongX Counter im Flash des ESP8266? Wenn ja, wie sieht es da mit dem Flash Wear Leveling aus? Siehe z.B. https://design.goeszen.com/mitigating-flash-wear-on-the-esp8266-or-any-other-microcontroller-with-flash.html

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