FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Knallfrosch am 21 August 2015, 15:51:49

Titel: S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Knallfrosch am 21 August 2015, 15:51:49
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
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag 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
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Otto123 am 23 August 2015, 23:52:47
Wurde schon oft behandelt
Das bei Google eingeben
site:forum.fhem.de s0 schnittstelle raspberry

Gruß Otto
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Knallfrosch am 24 August 2015, 02:12:00
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


Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: SamirSpeed am 24 August 2015, 15:26:22
Oh mit einem Raspberry Pi , das ist ja mal ne gute Idee, ich denke ich hab jetzt ein Projekt für den Sommer, danke :)
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag 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
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Knallfrosch am 24 August 2015, 15:41:22
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
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Otto123 am 24 August 2015, 21:18:05
Schau mal hier (http://blog.webernetz.net/2014/10/13/stromzahler-mit-s0-schnittstelle-vom-raspberry-pi-auswerten/)

Gruß otto
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Knallfrosch am 24 August 2015, 21:32:52
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
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Knallfrosch am 24 August 2015, 22:26:23
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"}

Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Knallfrosch am 29 September 2015, 15:07:41
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
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: frank am 29 September 2015, 15:27:16
vielleicht hat fhem freezes? kannst du mit perfmon und apptime erkennen.
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Bartimaus am 29 September 2015, 15:30:52
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.
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Knallfrosch am 29 September 2015, 16:20:14
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?



Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Knallfrosch am 29 September 2015, 20:46:56
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




Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: frank am 29 September 2015, 21:21:49
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.
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: laufhem am 20 Juli 2021, 12:42:54
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
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: Otto123 am 20 Juli 2021, 17:31:40
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
Titel: Antw:S0 - Schnittstelle mit Raspberry auslesen und auswerten
Beitrag von: laufhem am 21 Juli 2021, 10:06:42
Raspberry Pi 3 Model B Rev 1.2

Danke, ich habe die Vorraussetzungen nochmal alle verifiziert, jetzt zählt mehr. Ich beobachte und plausibilisiere.