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

jorge

Hallo,

habe den Counter folegendermaßen definiert:

define ArduCounter ArduCounter COM6@9600
attr ArduCounter factor 1
attr ArduCounter interval 10 60
attr ArduCounter pinD5 falling


Habe an D5 des Ardunino Nano mit D0 einer Lichtschranke (TCRT5000 IR Barrier Line Track sensor) verbunden, krieg aber nur sehr wenig aussagekräftige Readings in fhem angezeigt (Hatte angenommen, dass bei jedem Kontakt der Lichtscharnke um 1 erhöht wird). Vermute so was wie Prellung, obwohl es das doch bei einem digitalen Ausgang nicht gegebn dürfte.... Vielleicht kann mir jemand bei 'debouncen' helfen?

LG

Jorge
FHEM.RaspberryPi 2 (HM, 1Wire, Callmonitor.FB 7490, GPIO, I2C, MQTT-Server, MCP23018)
FHEM.RaspberryPi  (FHEM2FHEM, CUL, FS20)
FHEM.RPiZeroW (I2C, 1Wire, python.api, XiaomiBTLESens.MQTT)
FHEM.Win7 (FHEM2FHEM,DBLOG.MySql)
ESPEasy (WEMOSD1, I2C, Analog, 1Wire), Sonoff_T1_3ch, Mobotix QM25, robonect

hermann258

Hallo
Bei mir kommen keine Daten an, es steht seit 4Stunden auf 0.000
Sketch ist ohne Probleme durchgelaufen.
Die Arducount ist aus dem Trunk ,sowie die .Ino auch

usb-FTDI_FT232R_USB_UART_AL021QSK-if00-port0 -> ../../ttyUSB2

Internals:
   DEF        /dev/ttyUSB2@9600
   DeviceName /dev/ttyUSB2@9600
   FD         15
   NAME       AC
   NR         14
   PARTIAL
   STATE      opened
   TYPE       ArduCounter
   buffer
   Readings:
     2016-07-13 17:51:27   state           opened
     2016-07-13 17:51:35   version         ArduCounter V1.0
Attributes:
   factor     2000
   interval   60 300
   pinD10     rising pullup
   pinD11     rising pullup
   pinD12     rising pullup

StefanStrobel

Hallo Jorge,

Mit GET info sendet das Modul einen show-Befehl an den Arduino. Der gibt dann den aktuellen Zählerstand aus. Das sollte helfen um genauer im Auge zu behalten was gezählt wird und was nicht.
Du kannst auch ohne Fhem per Terminal-Programm direkt mit dem Arduino reden. Das sind einfache Text-Befehle, die ich im Sketch implementiert habe.
Falls Dein Signalgeber prellt, müsstest Du das so erkennen können. Eine Entprellung ist im Sketch nicht drin. Das könnte man zwar einbauen, aber bisher hat das keiner benötigt bzw. haben es die Leute in Hardware gemacht

Gruß
     Stefan

StefanStrobel

Hallo Hermann,

Wenn nichts gezählt wird, dann stimmt vermutlich etwas mit dem Anschluss nicht. Falscher Pin, falsche Polarität o.ä.
Ich würde erst mal mit einem angeklemmten Taster prüfen, ob überhaupt die Anschlussseite passt.
Am besten auch noch ohne Fhem und direkt per Terminal. Wenn die Baudrate stimmt, meldet sich der Sketch im Terminal und Du kannst direkt mit ihm reden. Datails siehst Du am einfachsten direkt im Quellcode des Sketches. Der ist recht kurz und einfach.

Gruß
    Stefan

hermann258

Danke StefanStrobel
s0+ s0- waren vertauscht

hermann258

Hallo
Wird der Arducounter eigendlich noch weiter entwickelt?
z.B. Euro Rechner

StefanStrobel

Hallo Hermann,

wenn was wichtiges / sinnvolles fehlt baue ich es gerne ein.
Eine Umrechnung von Verbrauch zu Gebühren kannst Du aber einfach auch ohne Erweiterung machen.
Entweder über das factor Attribut oder nachgelagert über userReadings etc.

Gruss
    Stefan

hermann258

Zitat von: SvenJust am 18 Dezember 2014, 11:59:04
Hallo,

ich möchte hier StefanStrobel loben für dieses tolle Modul und den Arduino Code. Bei mir läuft läuft ein Arduino Nano mit einem digitaler Drehstromzähler DRT428DC zusammen. Seit einem Monat läuft alles absolut stabil. Top!

Ich verwende die folgenden Definitionen, um eine kontinuierliche Stromzählung zu erreichen.

define AC ACNT /dev/ttyUSB1@9600
attr AC factor 1000
attr AC interval 60 300
attr AC pinD5 rising pullup
attr AC userReadings energy_act {ReadingsVal("AC","power5",0)} ,energy monotonic  { ReadingsVal("AC","pin5",0)/1000}, energy_day monotonic  { ReadingsVal("AC","pin5",0)/1000}, energy_month monotonic  { ReadingsVal("AC","pin5",0)/1000}, energy_year monotonic  { ReadingsVal("AC","pin5",0)/1000}, energy_hauszaehler monotonic  { ReadingsVal("AC","pin5",0)/1000}
define lfenergyday FileLog ./log/EnergieD-%Y-%m-%d.log AC:energy:.*|AC:energy_hauszaehler:.*|AC:power5:.*
attr lfenergyday room Logfiles


Das UserReadings energy_act stellt den aktuellen Stromverbrauch dar, energy ist der Zählerstand des Drehstromzähler DRT428DC, energy_day, energy_month, energy_year sind der Tages-, Monats- und Jahresverbrauch und werden jeden Tag/Monat/Jahr um 00:00 Uhr per at auf 0 gesetzt. energy_hauszaehler ist der Zählerstand des EVU.

Vielleicht hilft die obige Definition jemanden beim Einstieg.

Vielen Dank an Stefan und viele Grüße
Sven
Hallo
Wer kann mir sagen, wie ich das auf 3 Zähler anwende.
Gruß Hermann

StefanStrobel

Hallo Hermann,

Einfach jeden Zähler an einen Eingang hängen und dann ein weiteres Attribut für jeden Eingang setzen. Z.B. pinD6, pinD7,...
Siehe auch http://www.fhemwiki.de/wiki/ArduCounter

Gruß
    Stefan

hermann258

kann ich das so machen?
energy_act_1:pin10.* {ReadingsVal("AC","power10",0)}, energy monotonic { ReadingsVal("AC","pin10",0)/2000}, energy_day monotonic { ReadingsVal("AC","pin10",0)/2000}, energy_month monotonic { ReadingsVal("AC","pin10",0)/2000}, energy_year monotonic { ReadingsVal("AC","pin10",0)/2000}, energy_hauszaehler monotonic { ReadingsVal("AC","pin10",0)/2000}, energy_act_2:pin11.* {ReadingsVal("AC","power11",0)}, energy monotonic { ReadingsVal("AC","pin11",0)/2000}, energy_day monotonic { ReadingsVal("AC","pin11",0)/2000}, energy_month monotonic { ReadingsVal("AC","pin11",0)/2000}, energy_year monotonic { ReadingsVal("AC","pin11",0)/2000}, energy_hauszaehler monotonic { ReadingsVal("AC","pin11",0)/2000}, energy_act_3:pin12.* {ReadingsVal("AC","power12",0)}, energy monotonic { ReadingsVal("AC","pin12",0)/2000}, energy_day monotonic { ReadingsVal("AC","pin12",0)/2000}, energy_month monotonic { ReadingsVal("AC","pin12",0)/2000}, energy_year monotonic { ReadingsVal("AC","pin12",0)/2000}, energy_hauszaehler monotonic { ReadingsVal("AC","pin12",0)/2000}
er zeigt mir oft auch Werte mit vielen Nachkommazahlen an
2016-07-23_00:02:37 AC energy: 2.55550000000001
2016-07-23_00:02:37 AC energy_hauszaehler: 2.55550000000001

Gruß Hermann

StefanStrobel

Wenn Du Nachkommastellen entfernen möchtest, kannst Du im Perl-Code z.B. mit sprintf arbeiten ...

Gruß
    Stefan

hermann258

ich versuche mal

speichere ich
energy { ReadingsVal("AC","pin10",0)/2000},
funktioniert alles
Hour: 0.0060 Day: 0.0060 Month: 0.0060 Year: 0.0060
speichere ich
energy monotonic{ ReadingsVal("AC","pin10",0)/2000},
sieht es so aus
Hour: -0.0065000000000 Day: -0.006500000000 Month: -0.0065000000000 Year: -0.006500000000 (since: )
gibt es eine ander Möglichkeit monotonic zu ersetzen?

StefanStrobel

Muss ich mir mal ansehen.
Tagessummen kannst Du aber auch mit dem Average-Modul erzeugen.

Gruß
     Stefan

Otto123

Hallo Stefan,

ich habe den ArduCounter erfolgreich in Betrieb genommen. Ich danke Dir für das Modul!

Ich habe zwei konkrete Fragen:
- Wenn ich ein neues Pin definiere, dann muss ich danach erstmal den Arduino nano mit Reset neu starten damit das Pin gezählt wird. Ist das so, oder ist das ne Macke in meiner Installation?
- Ich habe zwei Zähler, einer liefert 400 Impulse/kWh (2,5 Watt/Impuls) und der andere 1000 Impulse/kWh (1 Watt/Impuls). Somit muss ich eigentlich zwei unterschiedliche attr factor definieren, einmal 2500 und einmal 1000. Den Fall hast Du nicht vorgesehen?

Ich helfe mir mit einem extra userReading.

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

das mit dem Reset ist ein Bug. Das hat auch mal ohne funktioniert.
Einen Faktor je Pin hatte ich bisher nicht vorgesehen. Das wäre aber eine sinnvolle Erweiterung.
Ein Update ist in Arbeit ;-)

Gruss
   Stefan