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,

Wenn z.B. Für Pin4 auch das Attribut verboseReadings4 auf 1 gesetzt ist, dann werden auch Readings countDiff4 und timeDiff4 erzeugt. Die liefern jeweils das Delta zum aktuellen Intervall...

Gruß
    Stefan

birdy

Hallo Stefan

Seit ca. 24 h läuft bei mir die Kombination 2.04/5.7 funktioniert zuverlässig, keine Abweichung bis jetzt.

Eine ,,Spezialität" ist mir aber noch aufgefallen. Die Pin Attribute werden nach dem Neuaufbau der Webseite korrekt dargestellt -> Bild 1.
Aber sobald der erste Impuls daher kommt, werden die Attribute mit dem Readings des entsprechenden Pin überschrieben -> Bild 2.
Das F5 drücken löst dann das Problem kurzfristig. Trotzdem bin ich mir nicht ganz sicher ob dies wirklich im Sinne des Erfinders ist.  ;)

Beste Grüsse 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

Hallo birdy,

Das klingt seltsam. Muss ich mal in Ruhe versuchen nachzustellen.
Die Darstellung macht allerdings ein Frontend-Modul bzw. das Fhemweb-Modul. Arducounter zählt und schreibt die Werte in die Readings...

Gruß
    Stefan

birdy

Das Phänomen ist zugegebener massen nicht ganz neu. Hat mit Sicherheit schon in der letzten Version bestanden. Aber seit wann oder ab welcher Version kann ich nicht eingrenzen. Könnte dies am identischen Namen liegen der via Longpoll  (oder wie die Technik auch immer heisst) automatisch aktualisiert wird?
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)

Kornelius777

#274
Hallo,

ich brauche bitte gerade mal etwas Hilfe:

Meine Schaltung im Hausanschlussraum sieht folgendermaßen aus:

Gaszähler --> Hallsensor --> Arduino1 --> Arduino2
Arduino1 legt brav (gerade nachgemessen) 5V bzw 0V an PinD7 von Arduino2 an.

Allerdings misst ArduCounter (läuft auf Arduino2) nix.

hier mein Listing:


Internals:
   CounterResetTime 1515603774.14519
   DEF        /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AH06NIQN-if00-port0@38400
   DeviceName /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AH06NIQN-if00-port0@38400
   FD         5
   Initialized 1
   NAME       HAR.ArduCounter
   NOTIFYDEV  global
   NR         24
   NTFY_ORDER 50-HAR.ArduCounter
   PARTIAL   
   STATE      opened
   TYPE       ArduCounter
   VersionFirmware 2.04
   VersionModule 5.7 - 2.1.2018
   buffer     
   Helper:
     DBLOG:
       GasZaehler:
         DBLogging:
           TIME       1515603671.90253
           VALUE      395.8
       GasZaehlerArdu:
         DBLogging:
           TIME       1515603671.90253
           VALUE      39580
       GasZaehlerTicks:
         DBLogging:
           TIME       1515603671.90253
           VALUE      0
       interpolatedLong7:
         DBLogging:
           TIME       1515603671.90253
           VALUE      0
       pin7:
         DBLogging:
           TIME       1515603671.90253
           VALUE      0
       power7:
         DBLogging:
           TIME       1515603671.90253
           VALUE      0.000
       reject7:
         DBLogging:
           TIME       1515603671.90253
           VALUE      0
   READINGS:
     2018-01-10 18:01:11   GasZaehler      395.8
     2018-01-10 18:01:11   GasZaehlerArdu  39580
     2018-01-10 18:01:11   GasZaehlerTicks 0
     2018-01-10 18:01:11   interpolatedLong7 0
     2018-01-10 18:01:11   pin7            0
     2018-01-10 18:01:11   power7          0.000
     2018-01-10 18:01:11   reject7         0
     2018-01-10 17:41:06   state           opened
Attributes:
   DbLogInclude .*
   event-on-update-reading .*
   flashCommand avrdude -b 57600 -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
   interval   60 300
   pinD7      rising
   readingNameLongCount7 GasZaehlerArdu
   room       HAR
   userReadings GasZaehler {ReadingsVal("HAR.ArduCounter","GasZaehlerArdu",0)/100}, GasZaehlerTicks difference {ReadingsVal("HAR.ArduCounter","GasZaehlerArdu",0)}
   userattr   pinD7 readingNameLongCount7


Was mache ich denn bloß falsch?

Vielleicht kann mir mal bitte jemand die Tomaten von den Augen nehmen.

Viele Grüße,

Kornelius

Hier übrigens noch:


M Status: ArduCounter V2.04
normal interval 60000
max interval 300000
min interval 0
min count 0
pin 7 PCInt pin 23, iMode rising, no min len, count 0 (+0) in 109997 ms
Next report in 9982 Milliseconds
pulse history:
pin 7 start -711279 len 8614 at 1 
pin 7 start -702665 len 20624 at 0 
pin 7 start -682041 len 8008 at 1 
pin 7 start -674033 len 19291 at 0 
pin 7 start -654742 len 7886 at 1 
pin 7 start -646856 len 19290 at 0 
pin 7 start -627566 len 7522 at 1 
pin 7 start -620044 len 19655 at 0 
pin 7 start -600389 len 7643 at 1 
pin 7 start -592746 len 20383 at 0 
pin 7 start -572363 len 8493 at 1 
pin 7 start -563870 len 22809 at 0 
pin 7 start -541061 len 9220 at 1 
pin 7 start -531841 len 25235 at 0 
pin 7 start -506606 len 10070 at 1 
pin 7 start -496536 len 28511 at 0 
pin 7 start -468025 len 11526 at 1 
pin 7 start -456499 len 32030 at 0 
pin 7 start -424469 len 12981 at 1 
pin 7 start -736151 len 24872 at 0 

Kornelius777

Kann es sein, dass das Attribut "factor" verpflichtend ist?
Ich habe jetzt factor = 1 gesetzt.
Scheint erstmal zu zählen.

Viele Grüße!

Kornelius

Otto123

#276
Hi Kornelius,

Aus der Doku,
Zitatfactor
Define a multiplicator for calculating the power from the impulse count and the time between the first and the last impulse

Kann sein wenn Du das Attribute löschst, dann Faktor 0  ::)

Ich wiedehole mich:
ZitatPower liefert die Momentanleistung.
So habe ich mir das mal mit Power für mich verdeutlicht, damit mir klar wird wie ich den factor angeben muss:
Power ist der Wert für die momentane Leistung in Impulsen/h ((delta count) / (delta time) * factor).

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

Kornelius777

Hmpf. Aus meiner Sicht ist dieses Vorgehen suboptimal. Denn: 0 x factor = 0!
Meine Empfehlung:
Setze den default-Wert für factor auf "1".

Viele Grüße!

Kornelius

Otto123

Der default Wert ist meines Wissens 1000 - wie gesagt wenn Du ihn löschst ...  :-X

Also kann sein die Antwort auf Deine Frage #275 ist Ja.  :D
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,

aus dem Modul-Code (Zeile 607):

my $factor = AttrVal($name, "readingFactor$pin", AttrVal($name, "factor", 1000));


wenn das Atribut nicht existiert, wird mit 1000 gerechnet.

Gruss
   Stefan

Nighthawk

HalloStefan,

vielen Dank für die Änderungen, nach längerer Beobachtung funktioniert der Zähler nun tadellos.

Offtopic:
Da ich einen zusätzlichen Wasserzähler mit Reedkontakt verbaut habe und dieser nicht ganz genau so zählt wie der Hauptzähler, bräuchte ich eine Art Offsetfunktion. Der Hauptzähler Zählt ca 2,25% mehr als der Zähler mit dem Reedkontakt, wie könnte ich diesen Offset im FHEM verarbeiten?

Gruß Alex

birdy

Hallo Alex

Versuch es doch mal mit einem User reading in etwa so...

WasserNebenzaehler{ReadingsVal("HAR.ArduCounter","pin7",0)/2.25}

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)

Nighthawk

Das war schnell, danke, werde ich testen.

Kornelius777


Nighthawk