3x S0 Strommessung mit RPi und FHEM (per GPIO) ist manchmal ungenau

Begonnen von awe, 14 März 2015, 14:17:16

Vorheriges Thema - Nächstes Thema

efyzz

Mahlzeit,

wollte nochmal eine kleine Rückmeldung geben: Es gehen zwar fast keine Impulse mehr verloren, aber eben auch nur fast ... Gelegentlich rutscht dann doch nochmal einer durch.

Zitat von: klausw am 18 Januar 2018, 23:07:00
Am besten wäre sicherlich ein eigener Mikrocontroller am Stromzähler der selbst zählt und zyklisch per Bus oder Funk an FHEM berichtet.

Damit wären wir wieder beim ArduCounter. Sollte mich wohl doch mal damit beschäftigen ...
Wäre dann natürlich sinnvoll, beide Aufgaben (Stromzähler per Lichtschranke auslesen und die ArduCounter-Funktion) in einem Arduino zu realisieren. Dafür muss ich mich natürlich in den ArduCounter-Code einarbeiten  ::)
Oder hat das schon mal jemand gemacht?
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

crusader

Wenn Du die Zählung unbedingt auf dem Raspi durchführen will, kannst Du es auch mit der pigpio-Library machen. Aufgrund der besonderen Arbeitsweise des pigpio-Dämons gehen dabei keine Impulse verloren.

Dazu den pigpiod installieren und beiliegendes Monitor-Programm starten (mit den einzulesenden S0-ports als Argument).

Das Programm generiert in FHEM events für das Device S0_<port>, die man z.B.mit einem DOIF abfangen und akkumulieren kann.

Gruß
crusader




obb20a

Zitat von: crusader am 23 Februar 2018, 23:27:24
Das Programm generiert in FHEM events für das Device S0_<port>, die man z.B.mit einem DOIF abfangen und akkumulieren kann.


Vielen Dank für diesen Hinweîs, werde ich gerne ausprobieren. Müssen die S0_<port> devices dann als GPIO angelegt werden, oder wie erstelle ich das dann im FHEM?

Skusi

Ich werfe mal noch eine ganz andere Lösung ins Spiel:

Ich habe eine Wemos d1 genommen und mit EspEasy geflasht.
Per Counter Funktion zählt der nun die Impulse und sendet mir alle 60 sek das Ergebnis inc Pulsabstände (für Live Leistungs
Ermittlung) per Wlan an Fhem.

Läuft seit Monaten super. Damit wollte ich unter anderem bezwecken das Fhem nicht diese Flut an Pulsen verarbeiten muss die bei mir mit 1000 / kWh anfallen.
RPI3B, SIGNALduino, NanoCul868 (a-culfw), JeeLink Clone (LaCrosse), Firmata  für FB Heizung,Wasser+Gas+Klingel+Lux, Somfy Rolladen, Pollin Steckd.,TX29DTH,ESPEasy an S0 Stromz., MAX Fensterkontakte, IButton, SonOff Tasmota, ESP LED Controler

crusader

Zitat von: obb20a am 16 Juli 2018, 12:36:57
Vielen Dank für diesen Hinweîs, werde ich gerne ausprobieren. Müssen die S0_<port> devices dann als GPIO angelegt werden, oder wie erstelle ich das dann im FHEM?

Nein, die Angabe der Ports erfolgt beim Aufruf des Python-Programms.
In FHEM fängst Du nur die generierten Events ab und akkumulierst einen Zähler.

Hier mal ein Beispiel mit einem einfachen notify:


define S0count.pig notify global:S0.* {my $a = ReadingsVal("S0count.pig","Counter",0) + $EVTPART1;;;; fhem("setreading S0count.pig Counter $a")}


Diese Vorgehensweise entlastet FHEM von der Zählung der Einzelpulse.
Allerdings frisst der pigpio-Dämom erhebliche CPU-Ressourcen (bei mir ca. 6%).

Gruß
crusader

Morgennebel

Zitat von: Skusi am 16 Juli 2018, 19:33:33
Ich habe eine Wemos d1 genommen und mit EspEasy geflasht.
Per Counter Funktion zählt der nun die Impulse und sendet mir alle 60 sek das Ergebnis inc Pulsabstände (für Live Leistungs  Ermittlung) per Wlan an Fhem.

Solider Ansatz. Und sollte es kabelgebunden bleiben, nimm ein 1-Wire Zählermodul wie https://www.esera.de/produkte/1-wire-smart-home/1-wire-digital-eingang-1-wire-digital-ausgang/8/1-wire-dual-s0-zaehler-17mm?c=119 und les den Zählerstand via 1-Wire vom Pi aus.

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA