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

Otto123

Zitat von: Naiszen am 14 Februar 2017, 12:33:07
Jetzt habe ich aber doch noch eine Frage, kann man beim Arducounter etwas gegen dieses Alzheimer machen, wenn das Gerät mal kurz ohne Strom ist?
Habe das Problem z.b. wenn ich immer mal wieder von der Karte ein Backup mache.
Hi,

Du meinst, das die Counter zurückgesetzt werden?

Das hat Stefan eigentlich eingebaut, wenn der Arduino nicht vom Strom geht wird in der neuen Version beim Neustart des Moduls abgefragt ob er schon konfiguriert ist, wenn ja wird kein reset gemacht. Damit bleiben theoretisch die gezählten Impulse, während das Modul offline war, erhalten. Die Praxis macht uns allerdings einen Strich durch die Rechnung:
Irgendwie wird während des FHEM Starts die Serielle Schnittstelle initialisiert (Stefan macht das soweit ich sehen konnte nicht explizit im Modul, das wird in DevIo gemacht) der USB/Seriell Chip am Arduino macht über sein DTR Pin ein Reset Signal an den Atmel und das wars dann mit den "Offline Impulsen".

Es hängt davon ab was Du einsetzt, bei mir ist ein Widerstand von Reset nach Plus von 1 kOhm, wenn ich da 220 Ohm außen parallel schalte wird der Reset Impuls unterdrückt.  8)
Reset mit Taster geht dann immer noch, dabei fließt bloß ein bisschen mehr Strom  :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

BillyPbg

Zitat von: Otto123 am 08 Februar 2017, 14:51:55
...

ich habe jetzt die "Eigenheit" des Arduino nano ermittelt.
Das Reset Pin ist mit einem 1 kOhm Widerstand nach 5 Volt geführt und wird über einen Kondensator vom DTR Pin beim Initialisieren der seriellen Schnittstelle kurz nach Masse gezogen.
Das löst den Reset aus, da beim Neustart von FHEM auch die serielle Schnittstelle zurückgesetzt/initialisiert wird. ...

Mit einem zusätzlichen Widerstand von 220 Ohm von RST nach 5 Volt kann man den Reset über DTR verhindern,

...

Hallo Otto,

irre ich, wenn ich sage, die Daten bleiben bei einem "Shutdown Restart"-Manöver erhalten,
aber bei einem z. B. "Raspi"-Restart, bzw. einem "sudo /etc/init.d/fhem stop - status - start"-Manöver dagegen sind die Daten nach wie vor weg?

Hast Du mal das Verhalten getestet, wenn Du den NANO mit einer fremden, somit zusätzlichen, eigenen 5V-Quelle (stabilisiert: Pin27, bzw. extern 6-20V: Pin30) und natürlich dann auch den "RST" am besten mit diesen 5V (über 220 Ohm Widerstand) fütterst?

Würde mich echt interessieren, ob er dann seine "Gedächtnislücken" nach wie vor produziert? 

Gruß
BillyPbg

PS:
Für meinen Test habe ich in der ".pm"-Datei (Version 4.5) die Zeile 147 testweise deaktiviert...

Thorsten Pferdekaemper

Zitat von: BillyPbg am 14 Februar 2017, 16:46:30
Hast Du mal das Verhalten getestet, wenn Du den NANO mit einer fremden, somit zusätzlichen, eigenen 5V-Quelle (stabilisiert: Pin27, bzw. extern 6-20V: Pin30) und natürlich dann auch den "RST" am besten mit diesen 5V (über 220 Ohm Widerstand) fütterst?
Normalerweise macht man das mit einem 10uF Kondensator zwischen RST und GND. ...zumindest beim Uno.
Gruß,
   Thorsten
FUIP

Otto123

Hi,

also nano an eigener Spannungsversorgung (aktiver Hub) und RST "abgeklemmt" - die Daten bleiben erhalten. Arducounter neuste Version, neuster Flash. Erkennbar am Dialog in meinem Post weiter oben vom 08 Februar 2017, 14:51:55.
->  ... count 296 ...

Gerade nochmal probiert, auch ein reboot vom Raspberry ohne aktiven Hub also einfach am USB wird überlebt.

@ Thorsten wie immer viele Wege :) Widerstand ist kleiner  als Elko ;)

P.S. gerade noch festgestellt: die 10 µ sind stabiler als der 220 Ohm.  :o Der Widerstand ist offenbar die Grenze, wenn man das damit machen will muss man vielleicht besser 100 Ohm nehmen

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Thorsten Pferdekaemper

Zitat von: Otto123 am 14 Februar 2017, 20:18:34@ Thorsten wie immer viele Wege :) Widerstand ist kleiner  als Elko ;)
Der Elko spart Strom...
FUIP

Otto123

Zitat von: Thorsten Pferdekaemper am 14 Februar 2017, 20:42:12
Der Elko spart Strom...
Naja das wird jetzt sehr philosophisch und OT aber der Widerstand zieht ja bloß den Eingang der schon auf Plus gezogen ist noch etwas fester nach Plus. Statisch fließt da gar nix.
Dynamisch gesehen muss der Elko auch immer mal geladen werden. :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Naiszen

Ich besorg mir erstmal einfach ein USB Hub, mit einem Starken Netzteil, und klemme da gleich den Raspberry Pi mit an, dann sollte das in die richtige Richtung gehen....

Jetzt kommt mir da aber noch eine Frage: Ist es auch möglich, den Zähler über LAN bzw. lan an zu sprechen? bzw. was muss man an einem Arduino nano noch alles anklemmen?

Danke schon mal für die Antworten

Otto123

Zitat von: Naiszen am 15 Februar 2017, 02:31:15
Jetzt kommt mir da aber noch eine Frage: Ist es auch möglich, den Zähler über LAN bzw. lan an zu sprechen? bzw. was muss man an einem Arduino nano noch alles anklemmen?
Arducounter macht es meines Wissen nur "seriell" ob das dann auch mit irgendwelchen ser2net socat oder sonstwie Umleitungen geht, keine Ahnung.

Für den ESP8266 gibt es im ESPEasy ja auch einen Counter, ich denke damit geht das auch. Da hättest Du wlan.

Beschalten musst Du für Arducounter nix, so hab ich das gemacht ->http://heinz-otto.blogspot.de/2016/10/mein-erstes-arduino-projekt.html

Gruß Otto

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

StefanStrobel

Hallo,

ich habe nochmal einen Bug im ArduCounter-Modul gefixt und das Logging etwas optimiert.
@Otto: das mit dem Flashen sollte jetzt auch funktionieren.
Wenn bei Euch auch noch alles funktioniert, checke ich die neue Version ein.

Gruss
    Stefan

Otto123

Hallo Stefan,

das Flashen klappt jetzt bei "leerem" Arduino nano, was mich jetzt nur irritiert: Auch wenn gar keine Firmware drauf ist steht das Modul auf openend.

Ansonsten scheint alles zu laufen.

Danke!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

BillyPbg

Zitat von: Thorsten Pferdekaemper am 14 Februar 2017, 16:51:32
Normalerweise macht man das mit einem 10uF Kondensator zwischen RST und GND. ...zumindest beim Uno.
Gruß,
   Thorsten

Hallo Thorsten,
hallo Otto,

zur allgemeinen Info für die asiatische "NANO 3.0"-Gemeinde:

Nachdem ich nach Otto's Anleitung, mit Widerständen (220 Ohm, oder auch 120 Ohm, wie in anderen Gockel-Ergebnissen empfohlen, auch unter zu Hilfenahme von Potis) meine China-Direkt "Nano's 3.0" (anstelle mit FTDI, mit CH340 bestückt, siehe Anlage) nicht annähernd - gar zuverlässig - zähmen konnte, testete ich die "10µF ElKo"- Variante von Thorsten und siehe da, die Dinger schnurren wie gewünscht - ohne "Alzheimer"...

Gruß
BillyPbg


Otto123

Zitat von: BillyPbg am 20 Februar 2017, 10:19:12
Hallo Thorsten,
hallo Otto,

zur allgemeinen Info für die asiatische "NANO 3.0"-Gemeinde:

Nachdem ich nach Otto's Anleitung, mit Widerständen (220 Ohm, oder auch 120 Ohm, wie in anderen Gockel-Ergebnissen empfohlen, auch unter zu Hilfenahme von Potis) meine China-Direkt "Nano's 3.0" (anstelle mit FTDI, mit CH340 bestückt, siehe Anlage) nicht annähernd - gar zuverlässig - zähmen konnte, testete ich die "10µF ElKo"- Variante von Thorsten und siehe da, die Dinger schnurren wie gewünscht - ohne "Alzheimer"...

Gruß
BillyPbg
Moin,
ich muss auch zugeben, Thorstens Variante ist viel zuverlässiger! Mir tat der kleine Taster leid, der jetzt einen kurzen Kurzschluss des Elkos ertragen muss.

Mit dieser Maßnahme geht dann natürlich unbeaufsichtigtes Flashen  nicht mehr (irgendwas ist ja immer   :P)
Vorgehen: set AC flash dann den RST Taster kurz drücken.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

BillyPbg

Zitat von: StefanStrobel am 18 Februar 2017, 18:52:27
...
ich habe nochmal einen Bug im ArduCounter-Modul gefixt und das Logging etwas optimiert.
@Otto: das mit dem Flashen sollte jetzt auch funktionieren.
Wenn bei Euch auch noch alles funktioniert, checke ich die neue Version ein.
...

Hallo Stefan,

bis dato keine Anomalien feststellbar.

Kleine Anregung - Idee am Rande:

Attribut "FlashAuto:0:1"
Wenn Du eh' eine Versionsprüfung eingebaut hast, könntest Du sie doch für diejenigen, die keine abgewandelte ".ino/.hex"-Datei Variante im Einsatz haben, automatisiert gemäß Anweisung von Attribut "flashCommand" flashen lassen (->"1"), und für die Anderen eben nicht (->"0")...

Gruß
BillyPbg


StefanStrobel

Hallo,

ich habe die neue Version eingecheckt.
Der Status "opened" wird übrigens von DevIo gesetzt sobald die Schnittstelle geöffnet wurde.

Gruss
    Stefan

BillyPbg

Hallo Stefan,

kannst Du Dir auf folgende Meldungen einen Reim machen ?

Nach jedem Neustart finden sich genau einmal folgende zwei Warnmeldungen:
-> 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at fhem.pl line 4147. (z.B. 11:48:53.292 Uhr)
-> 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at fhem.pl line 4147. (z.B. 11:48:53.294 Uhr)

HARDWARE::
Arduino Nano 3.0, Clone mit 10µF Elko (Antwort #130, zwischen RST und GND )

LOG-Auszug:
...
2017.03.16 11:48:38.334 3: TEST: sending h(ello) to device to ask for version
2017.03.16 11:48:38.335 5: SW: h
2017.03.16 11:48:53.290 4: TEST: Pin 3 (pin3) count 10923 (diff 1) in 25.642s, result 0.140
2017.03.16 11:48:53.290 5: TEST: interval 11:48:27 until 11:48:53
2017.03.16 11:48:53.290 5: TEST: readingStartTime3 specified: setting reading timestamp to 11:48:27
2017.03.16 11:48:53.291 5: TEST: set readings power3 to 0.140, timeDiff3 to 25642 and countDiff3 to 1
2017.03.16 11:48:53.292 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at fhem.pl line 4147.
2017.03.16 11:48:53.293 1: stacktrace:
2017.03.16 11:48:53.293 1: main::__ANON__ called by fhem.pl (4147)
2017.03.16 11:48:53.293 1: main::readingsEndUpdate called by ./FHEM/98_ArduCounter.pm (652)
2017.03.16 11:48:53.294 1: main::ArduCounter_Parse called by ./FHEM/98_ArduCounter.pm (756)
2017.03.16 11:48:53.294 1: main::ArduCounter_Read called by fhem.pl (3314)
2017.03.16 11:48:53.294 1: main::CallFn called by fhem.pl (676)
2017.03.16 11:48:53.294 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at fhem.pl line 4147.
2017.03.16 11:48:53.295 1: stacktrace:
2017.03.16 11:48:53.295 1: main::__ANON__ called by fhem.pl (4147)
2017.03.16 11:48:53.295 1: main::readingsEndUpdate called by ./FHEM/98_ArduCounter.pm (652)
2017.03.16 11:48:53.295 1: main::ArduCounter_Parse called by ./FHEM/98_ArduCounter.pm (756)
2017.03.16 11:48:53.296 1: main::ArduCounter_Read called by fhem.pl (3314)
2017.03.16 11:48:53.296 1: main::CallFn called by fhem.pl (676)
2017.03.16 11:48:53.403 5: TEST: Initialize clock offset to 1489486007.69165
2017.03.16 11:48:53.404 5: TEST: Device Time 175325.598, Drift 0.000s in 0.000s
2017.03.16 11:48:53.404 3: TEST: device is still counting
2017.03.16 11:48:53.405 3: TEST: device replied to hello, V1.8
2017.03.16 11:48:53.406 4: TEST: device reported firmware 1.8
2017.03.16 11:48:53.406 3: TEST: ConfigureDevice calls Attr with pinD3 falling pullup 89
2017.03.16 11:48:53.407 5: SW: 3,2,1,89a
2017.03.16 11:48:53.410 3: TEST: ConfigureDevice calls Attr with interval 15 1200 5 1
2017.03.16 11:48:53.410 5: SW: 15,1200,5,1i
...


RAW-Definition:

defmod TEST ArduCounter /dev/serial/by-path/platform-3f980000.usb-usb-0:1.2.2:1.0-port0@38400
attr TEST userattr pinD3 readingStartTime3 verboseReadings3
attr TEST flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
attr TEST icon measure_power
attr TEST interval 15 1200 5 1
attr TEST pinD3 falling pullup 89
attr TEST readingStartTime3 1
attr TEST room S0
attr TEST sortby 02
attr TEST stateFormat ZÄHLER: pin3, Verbrauch: power3 W (reject3Result)
attr TEST userReadings reject3Summe:reject3.* monotonic {ReadingsNum ($name, "reject3", 0)},\
reject3Result:reject3.* {"FEHLER: ".ReadingsNum ($name, "reject3", 0)." von ".ReadingsNum ($name, "reject3Summe", 0)}
attr TEST verbose 3
attr TEST verboseReadings3 1

setstate TEST ZÄHLER: 11567, Verbrauch: 0.260 W (FEHLER: 0 von 756)
setstate TEST 2017-03-16 14:47:34 countDiff3 2
setstate TEST 2017-03-16 14:47:34 lastMsg3 R3 C11567 D2 T27696 N186155598 X0 F13873 L27696 A90
setstate TEST 2017-03-16 14:47:34 pin3 11567
setstate TEST 2017-03-16 14:47:06 power3 0.260
setstate TEST 2017-03-16 14:47:34 reject3 0
setstate TEST 2017-03-16 14:47:34 reject3Result FEHLER: 0 von 756
setstate TEST 2017-03-16 14:47:34 reject3Summe 756
setstate TEST 2017-03-16 11:48:04 state opened
setstate TEST 2017-03-16 14:47:34 timeDiff3 27696



VG.
BillyPbg