Hallo,
ich erfasse mit einem Reedkontakt meinen Gaszähler.
Über die Genauigkeit kann ich leider noch nichts sagen, denn zur Zeit ist der Gasverbrauch minimal.
Jetzt würde ich gerne den Stromverbrauch meines Klimagerätes erfassen.
Ich habe hier einen Stromzähler mit S0-Schnittstelle (1000imp/kwh) liegen, den ich gerne verwenden möchte.
FHEM läuft auf einem Raspberry.
Kann ich die S0-Schnittstelle eigentlich direkt am GPIO des Raspberry anschließen und in FHEM einbinden?
Der Reedkontakt für den Gaszähler funktioniert es ja auch, wenn auch die Impulse deutlich weniger sind.
Mit der Suche habe ich leider nichts brauchbares gefunden.
Vielen Dank für die Hilfe.
Grüße
Das würde mich auch sehr Interessieren. Ich habe einen Bananapi mit FHEM und 3 Stromzähler mit S0 Anschluss (PV/Hausstrom und Wärmepumpe) die ich gerne überwachen möchte.
Gruß Volker
Wurde schon oft behandelt
Das bei Google eingeben
site:forum.fhem.de s0 schnittstelle raspberry
Gruß Otto
Zitat von: münster am 23 August 2015, 23:06:48
Das würde mich auch sehr Interessieren. Ich habe einen Bananapi mit FHEM und 3 Stromzähler mit S0 Anschluss (PV/Hausstrom und Wärmepumpe) die ich gerne überwachen möchte.
Gruß Volker
Moin Volker,
nachdem hier keiner der Profis helfen wollte habe ich mir jetzt mal was aus Codeschnipseln usw. zusammen gebastelt.
Getestet habe ich es mit einer 60W Glüchbirne. Fürs erste scheint es zu funktionieren.
Hier wird der GPIO Pin 3 abgefragt. (Beim Rasp B+ => S0+ = GPIO 3 und S0- = GND -> Pin 6)
define GPIOStromzaehler RPI_GPIO 3
attr GPIOStromzaehler active_low yes
attr GPIOStromzaehler direction input
attr GPIOStromzaehler interrupt both
attr GPIOStromzaehler pud_resistor up
attr GPIOStromzaehler room Verbrauch
attr GPIOStromzaehler toggletostate yes
Dann der Zähler: (bisher: Gesamt und Tagesverbrauch)
define StromverbrauchGesamt HourCounter GPIOStromzaehler:on GPIOStromzaehler:off
attr StromverbrauchGesamt room Verbrauch
attr StromverbrauchGesamt stateFormat {sprintf("%.3f",ReadingsVal("StromverbrauchGesamt","countsOverall",0)/1000)." kwh"}
define StromverbrauchTag HourCounter GPIOStromzaehler:on GPIOStromzaehler:off
attr StromverbrauchTag room Verbrauch
attr StromverbrauchTag stateFormat {sprintf("%.3f",ReadingsVal("StromverbrauchGesamt","countsPerDay",0)/1000)." kwh"}
Ich habe keine Ahnung ob das alles so korrekt und perfekt ist, aber wiegesagt, bisher scheint es zu funktionieren.
Desweiteren versuche ich mich noch an der Erweiterung zum HourCounter-Modul, aber dazu kann ich dir noch nichts sagen.
Vielleicht hilft es dir ja erstmal weiter und vielleicht ist ja auch jemand mit größerem Wissen bereit hier noch zu unterstützen.
Grüße
Oh mit einem Raspberry Pi , das ist ja mal ne gute Idee, ich denke ich hab jetzt ein Projekt für den Sommer, danke :)
Naja in irgendeinem Beitrag stand, das der Raspberry ohne Vorteiler irgendwann die Impulse nicht mehr sieht. Bei 60 Watt kein Ding aber bei 6000?
Gruß Otto
Zitat von: Otto123 am 24 August 2015, 15:32:49
Naja in irgendeinem Beitrag stand, das der Raspberry ohne Vorteiler irgendwann die Impulse nicht mehr sieht. Bei 60 Watt kein Ding aber bei 6000?
Gruß Otto
Wenn der Raspberry tatsächlich überlastet wäre mit dem zählen, wäre das natürlich mehr als blöd.
Ich habe mit der Suche nur eine Variante mit Modbus gefunden, aber das gibt mein Zähler nicht her.
Mein Zähler muss eigentlich auch max. 3680W zählen. Ich rechne aber mit einer tatsächlichen maximal Last von 2000W, was dann 2000imp/h und somit <1imp/sec bedeuten würde.
Ich bin für jeden Rat und Verbesserungsvorschlag dankbar.
Grüße
Schau mal hier (http://blog.webernetz.net/2014/10/13/stromzahler-mit-s0-schnittstelle-vom-raspberry-pi-auswerten/)
Gruß otto
Nabend Otto,
Vielen Dank!
Anhand dieser Seite und ein paar Codeschnipseln hier aus dem Forum habe ich das obige Ergebnis erzielt.
Eben habe ich jedoch festgestellt das im Log der Zähler steht, aber das HourCounter-Modul nicht hochgezählt hat.....sehr seltsam. :o
Wenn sich solche "Ausetzer" natürlich häufen ergibt das dann eine deutliche Differenz.
Sofern sich die Fehlerquote aber im Nachkommabereich befindet kann ich damit gut leben.
Grüße
Ich bin gerade etwas verwundert über meinen File-Log zum Stromzähler:
Ich habe den Log so angelegt:
define FileLog_StromverbrauchGesamt FileLog ./log/StromverbrauchGesamt-%Y-%m.log StromverbrauchGesamt:countsOverall:.*|StromverbrauchGesamt:countsPerDay:.*|StromverbrauchGesamt:state:.*
Soweit so gut, jedoch werden die Logeinträge immer doppelt geschrieben.
Ich finde keinen Fehler und weiß nicht wo ich ansetzen muss.
2015-08-24_21:17:11 StromverbrauchGesamt countsPerDay: 14
2015-08-24_21:17:11 StromverbrauchGesamt countsOverall: 14
2015-08-24_21:17:11 StromverbrauchGesamt countsPerDay: 14
2015-08-24_21:17:11 StromverbrauchGesamt countsOverall: 14
2015-08-24_21:18:09 StromverbrauchGesamt countsPerDay: 15
2015-08-24_21:18:09 StromverbrauchGesamt countsOverall: 15
2015-08-24_21:18:10 StromverbrauchGesamt countsPerDay: 15
2015-08-24_21:18:10 StromverbrauchGesamt countsOverall: 15
2015-08-24_21:19:08 StromverbrauchGesamt countsPerDay: 16
2015-08-24_21:19:08 StromverbrauchGesamt countsOverall: 16
2015-08-24_21:19:08 StromverbrauchGesamt countsPerDay: 16
2015-08-24_21:19:08 StromverbrauchGesamt countsOverall: 16
Kann mir bitte jemand helfen!?
Danke euch.
Grüße
PS: Hier noch "list StromverbrauchGesamt"
Internals:
DEF GPIOStromzaehler:on GPIOStromzaehler:off
NAME StromverbrauchGesamt
NR 34
NTFY_ORDER 50-StromverbrauchGesamt
STATE 0.090 kwh
TYPE HourCounter
VERSION 1.0.1.2 - 24.12.2014
Readings:
2015-08-24 22:16:18 countsOverall 90
2015-08-24 22:16:18 countsPerDay 19
2015-08-24 22:16:18 pauseTimeEdge 59
2015-08-24 22:16:18 pauseTimeIncrement 2958
2015-08-24 22:16:18 pauseTimeOverall 168266
2015-08-24 22:16:18 pauseTimePerDay 64007
2015-08-24 22:16:18 pulseTimeEdge 0
2015-08-24 22:16:18 pulseTimeIncrement 0
2015-08-24 22:16:18 pulseTimeOverall 8
2015-08-24 22:16:18 pulseTimePerDay 4
2015-08-24 22:16:18 state 19
2015-08-24 21:22:03 tickChanged 126
2015-08-24 22:15:06 tickDay 0
2015-08-24 22:15:06 tickHour 0
2015-08-24 22:15:06 tickMonth 0
2015-08-24 22:16:18 tickUpdated 232
2015-08-24 22:15:06 tickWeek 0
2015-08-24 22:15:06 tickYear 0
2015-08-24 22:16:18 value 0
Helper:
OFF_Regexp GPIOStromzaehler:off
ON_Regexp GPIOStromzaehler:on
calledByEvent
changedTimestamp 2015-08-24 22:16:18
forceClear
forceDayChange
forceHourChange
forceMonthChange
forceWeekChange
forceYearChange
isFirstRun
sdRoundHourLast 1440446400
value 0
cmdQueue:
Attributes:
room Verbrauch
stateFormat {sprintf("%.3f",ReadingsVal("StromverbrauchGesamt","countsOverall",0)/1000)." kwh"}
Hallo,
nachdem ich an meinen RPI meinen Gaszähler mit einem Reed-Kontakt und die S0-Schnittstelle angeschlossen habe und in FHEM defoniert habe läuft es nun eigentlich seit knapp einem Monat prinzipiell zufriedenstellend.
ABER!
Ich habe nicht erklärbare "Lücken" in der Aufzeichnung.
Und zwar fehlen beim Gaszähler ca. 1000 Impulse was einem Verbrauch von ca. 10m³ entspricht. Tatsächlich wurden 15m³ vebraucht.
Hier ist also die Abweichung extrem hoch.
Beim Stromzähler fehlen etwas 175 gezählte Impulse was einem Vebrrauch von 0,175Kwh entspricht. Tatsächlich wurden 4,65 kwh verbraucht.
Hier ist die Abweichung relativ gering aber trotzdem ärgerlich.
Die Impulse kommen definitiv am RPI an, das Problem liegt also irgendwie bei FHEM das es die Impulse nicht mitbekommt.
Gibt es hierfür eine Lösung??
Angelegt habe ich für das Zählen folgendes:
define GPIOStromzaehler RPI_GPIO 3
attr GPIOStromzaehler active_low yes
attr GPIOStromzaehler direction input
attr GPIOStromzaehler interrupt both
attr GPIOStromzaehler pud_resistor up
attr GPIOStromzaehler room Verbrauch
attr GPIOStromzaehler toggletostate yes
und
define GPIOGaszaehler RPI_GPIO 23
attr GPIOGaszaehler active_low yes
attr GPIOGaszaehler direction input
attr GPIOGaszaehler interrupt both
attr GPIOGaszaehler pud_resistor up
attr GPIOGaszaehler room Verbrauch
attr GPIOGaszaehler toggletostate yes
Diese beiden "Zähler" werte ich mit dem Hourcountermodul aus:
define GasverbrauchGesamt HourCounter GPIOGaszaehler:on GPIOGaszaehler:off
attr GasverbrauchGesamt event-on-change-reading .*
attr GasverbrauchGesamt group Zaehler
attr GasverbrauchGesamt icon icoHEIZUNG
attr GasverbrauchGesamt room Verbrauch
attr GasverbrauchGesamt stateFormat {sprintf("%.2f",ReadingsVal("GasverbrauchGesamt","countsOverall",0)/100)." m³"}
ebenso den Stromzähler.
Kann mir bitte jemand helfen wie ich die Zählung genauer bekomme!?
Vielen Dank.
Grüße
Thorsten
vielleicht hat fhem freezes? kannst du mit perfmon und apptime erkennen.
Ich würde auch darauf tippen, das Impulse vom Raspi verschluckt wurden, weil er gerade ausgelastet war.
Hast Du nicht mal dran gedacht, einen 1wire-Zähler (DS2343 oder Alternative) dazwischenzuhängen ?
Da dieser aber die Impulse zählt und summiert, weiss ich jetzt nicht wie man das dem HourCounter beibringt, der ja selber zählt.
Auf diesem Raspberry läuft FHEM nur für diese zwei Zähler und 3x DS18B20 die am GPIO angeschlossen sind.
Die Daten rufe ich mit FHEM2FHEM dort ab.
Also "eigentlich" sollte der RPI damit nicht ausgelastet sein, oder?
99_perfmon.pm habe ich installiert.
Bisher gibt es im Log bei Verbose-5 nur einen Eintrag nach dem restart
2015.09.29 16:11:48 1: Perfmon: possible freeze starting at 16:11:41, delay is 7.359
ansonsten ist Ruhe!
Ja, wenn ich diese Fehlerrate nicht deutlich reduzieren kann muss ich wohl andere Möglichkeiten testen.
Kannst du mir kurz etwas zum 1wire-Zähler erzählen?
Was benötige ich hierfür? Benutzt du das selbst?
NACHTRAG:
Ein paar Stunden später findet sich im Log folgendes:
2015.09.29 17:00:01 1: Perfmon: possible freeze starting at 16:59:15, delay is 46.221
2015.09.29 17:00:04 1: Perfmon: possible freeze starting at 17:00:02, delay is 2.043
2015.09.29 17:01:33 1: Perfmon: possible freeze starting at 17:00:48, delay is 45.301
2015.09.29 17:01:35 1: Perfmon: possible freeze starting at 17:01:34, delay is 1.884
2015.09.29 18:30:48 1: Perfmon: possible freeze starting at 18:30:47, delay is 1.229
2015.09.29 18:33:51 1: Perfmon: possible freeze starting at 18:33:50, delay is 1.569
2015.09.29 18:33:53 1: Perfmon: possible freeze starting at 18:33:52, delay is 1.244
2015.09.29 18:48:04 1: Perfmon: possible freeze starting at 18:48:03, delay is 1.026
2015.09.29 18:51:08 1: Perfmon: possible freeze starting at 18:51:07, delay is 1.229
2015.09.29 18:55:13 1: Perfmon: possible freeze starting at 18:55:12, delay is 1.225
2015.09.29 19:13:27 1: Perfmon: possible freeze starting at 19:13:26, delay is 1.365
2015.09.29 19:30:42 1: Perfmon: possible freeze starting at 19:30:41, delay is 1.339
2015.09.29 19:36:48 1: Perfmon: possible freeze starting at 19:36:47, delay is 1.225
2015.09.29 20:05:08 1: Perfmon: possible freeze starting at 20:05:07, delay is 1.225
2015.09.29 20:40:43 1: Perfmon: possible freeze starting at 20:40:42, delay is 1.326
Ich muss dann wohl morgen mal schauen woher diese Freezes kommen.
Ist es plausibel das die fehlenden Zählungen dadurch verursacht werden oder ist das eher unwahrscheinlich?
Nicht das ich in der falschen Ecke suche.....
Sollte jemand diese Daten anders erfolgreich und fehlerfrei aufzeichnen, bitte mal bei mir mit einem Lösungsvorschlag melden.
Vielen Dank.
Grüße und noch einen schönen Abend
Thorsten
2015.09.29 17:00:01 1: Perfmon: possible freeze starting at 16:59:15, delay is 46.221
ZitatNicht das ich in der falschen Ecke suche.....
solche freezes solltest du auf alle fälle elemenieren.
Hallo,
ich habe nun auch auf meinem Raspberry Pi versucht, einen S0 Zähler ans laufen zu bekommen.
S0+ hängt an GPIO26, S0- auf Pin39 GND. Die Pins sind in der /boot/config.txt folgendermaßen definiert:
gpio=26=ip,pu
Im FHEM:
define GPIOPV RPI_GPIO 26
attr GPIOPV active_low yes
attr GPIOPV direction input
attr GPIOPV interrupt both
attr GPIOPV pud_resistor up
attr GPIOPV room Haus
attr GPIOPV toggletostate yes
Allerdings wird der Zustand stets als state = ? ? ? angezeigt. Was könnte das Problem sein?
VIelen Dank für Unterstützung
Hi,
welche Version Pi?
Voraussetzungen installiert? https://fhem.de/commandref_DE.html#RPI_GPIO
Die Pi Version 4 funktionierte mMn irgendwie nicht mit den verfügbaren Paketen. Bin aber nicht sicher.
Hier die Info http://wiringpi.com/wiringpi-deprecated/
Gruß Otto
Raspberry Pi 3 Model B Rev 1.2
Danke, ich habe die Vorraussetzungen nochmal alle verifiziert, jetzt zählt mehr. Ich beobachte und plausibilisiere.