Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM

Begonnen von pink99panther, 30 November 2016, 23:33:50

Vorheriges Thema - Nächstes Thema

pink99panther

Hab ein paar Modifikationen vorgenommen.
Hab sie im 1. Post hinterlegt unter EDIT:

sash.sc

Zitat von: pink99panther am 12 November 2017, 11:20:06
Hab ein paar Modifikationen vorgenommen.
Hab sie im 1. Post hinterlegt unter EDIT:

Hi pink99panther.

danke für die neue Version.

Habe da noch ein anliegen. Kann man den Momentanverbrauch/KWh auch auf eine aktuelle Leistungsaufnahme/Momentaverbrauch in KW oder W herunter rechnen?

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

pink99panther

Hilf mir mal auf die Sprünge und sag mir wie man das berechnet.

sash.sc

#63
Wenn man den Momentanverbrauch in KWh schon hat, dann das ganze durch eine Zeit teilen, damit bei den KWh die Zeiteinheit in KWh weg kommt und nur noch KW steht. Weiß jetzt aber nicht, durch welche Zeit da geteilt werden muss. Ob die Umlaufzeit, oder.......

Gruß
Sascha

Edit:
habe mal ein bsichen im Netz geschaut. Habe das Notify ein bischen ergänzt. Aber die Leistung stimmt noch nicht ganz, ist fast doppelt so hoch, wie auf dem Gerät angegeben. Habe die ReadingGroups und den Rest auch angepasst.


my $Leistung = $StromProStdRounded / $StromUmlaufzeit;
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

sash.sc

Was mir gestern aufgefallen ist, da ich meinen wemos mit espeasy neustarten musste, dass dein Code hier, um die S0 Schnittstelle abzutasten, die exakt doppelte Arbeit gezählt hat, wie der kleine 230v Zähler an dem ich die S0 Schnittstelle abgreife.

Der Zähler sollte, laut Angabe, 1000 Impulse /kWh haben.
Wenn ich aber jetzt sehe, Antwort vorher, dass ich die doppelte Leistung habe wie auf dem Gerät angegeben, denke ich, dass die Impulse des Zählers nicht passen.

Könntest du in deinem Code eine variabel einbetten in der die Impulse hinterlegt sind, und diese dann nur 1x geändert werden muss?

Gruß und danke für deine Arbeit.
Sascha

Gesendet von meinem SM-T560 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

pink99panther

Hast Du EspEasy Mega auf dem ESP8266?
Dann mußt Du im Device Pulse Colunter auf "Mode Type: FALLING" stellen.
Damit sollte das Problem behoben sein.

sash.sc

Nein, habe nur das normale espeasy drauf. Da kann man keinen Mode einstellen.

Gesendet von meinem SM-T560 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

sash.sc

Zitat von: sash.sc am 18 November 2017, 10:00:36
Nein, habe nur das normale espeasy drauf. Da kann man keinen Mode einstellen.

Gesendet von meinem SM-T560 mit Tapatalk
Kann man da evtl was mit der debounce time (entprellzeit) was machen.?


Gesendet von meinem SM-T560 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

pink99panther

Einen 100 nF Keramik-Kondensator parallel zum Wiederstand hast Du schon?

Ein Prellen sollte es bei S0 nicht geben. Ist ja kein mechanischer Kontakt.
Aber bei Hochohmigen Pulldownwiederstand kann es zu Störimpulsen auf der S0-Leitung kommen.
Deshalb den Wiederstand lieber in Richtung 1K nehmen.
Schau mal auf dem Bild in Antwort #4

sash.sc

Habe keinen 100nf Kondensator. Habe im Moment nen 4k7 Widerstand drauf. Werde ihn bei Zeiten mal tauschen

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

bismosa

Hallo,

ich hoffe ich darf hier mal nachfragen:
ich versuche jetzt auch gerade meinen Stromzähler einzubinden. Ich habe eine Reflexlichtschranke direkt an einen GPIO-Port meines Raspberrys angeschlossen.
Ich versuche nun die tolle Vorlage hier auf meinen Anwendungsfall umzusetzen...aber ich weiß nicht genau, wie ich das anstellen soll, da MQTT ja entfällt.

Ich habe den RPI-GPIO so eingebunden:

defmod Stromzaehler RPI_GPIO 13
attr Stromzaehler direction input
attr Stromzaehler interrupt both
attr Stromzaehler room Technik_Strom


Hat das jemand von euch bereits umgesetzt? Irgendwie müsste ich ja jetzt das Notify anpassen um das MQTT_DEVICE PulsStrom zu "simulieren".
Welche Werte werden denn vom ESP an das MQTT-Device (und in welcher Einheit) gemeldet?

Den Anfang habe ich schon: (Achtung! Noch nicht fertig!)

defmod StromverbrNoti notify GPIO_Stromzaehler:on {\
#Einstellungen\
my $UmdrehungenProKWh = 1000;;\
my $KostenProKWh = 0.29;;\
##Zeit für eine Umdrehung (in s)\
my $now = time;;\
my $Timestamp = time_str2num(ReadingsTimestamp("Strom","Time","0"));;\
my $StromUmlaufzeit = ($now - $Timestamp);;\
fhem("setreading Strom Time $now");;\
fhem("setreading Strom Stromumlaufzeit $StromUmlaufzeit");;\
##Counter\
my $count = ReadingsVal("Strom","Count","0");;\
$count = $count + 1;;\
fhem("setreading Strom Count $count");;;;\
##my $count = ReadingsVal("PulsStrom","Count","0");;\
\
##Aktuelle Leistung\
my $StromProStd=0;;\
if ($StromUmlaufzeit > 0){\
$StromProStd=(3.6/$StromUmlaufzeit)*1000;;\
}\
my $StromProStdRounded=0;;\
if($count > 0){\
$StromProStdRounded=int(1000 * $StromProStd + 0.5) / 1000;;\
}\
my $StromProTag = ReadingsVal("PulsStrom","Total","0") / 1000;;\
fhem("set Strom StromverbrauchStd $StromProStdRounded");;;;\
fhem("set Strom StromverbrauchTag $StromProTag");;;;\
}
attr StromverbrNoti room Technik_Strom

- Ich schreibe mir ein Reading in das dummy "Strom" mit dem aktuellen Zeitstempel. So kann ich beim nächsten Durchlauf die Differenzzeit ermitteln
- Der Counter zählt einfach nur ein Reading des Dummys hoch
- Aktuelle Leistung scheint auch schon zu stimmen, allerdings musste ich noch für StromProStd *1000 Rechnen um auf W zu kommen.

Die Werte StromverbrauchStd und StromverbrauchTag sind mir noch schleierhaft. Könntet ihr mir hier etwas helfen?

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

pink99panther

Zitat von: bismosa am 20 November 2017, 13:57:20
Die Werte StromverbrauchStd und StromverbrauchTag sind mir noch schleierhaft. Könntet ihr mir hier etwas helfen?

Hallo bismosa

StromverbrauchTag ist die heute schon geleistete Arbeit des Stroms (Tageskilometerzähler)
StromverbrauchStd ist das Maß, wie schnell die Arbeit im Moment verrichtet wird = Arbeit in der Zeit = Leistung (Tacho)

bismosa

Hallo,

ja, StromverbrauchStd hatte ich ja auch eigentlich schon. Allerdings finde ich den Begriff sehr verwirrend, da es ja die "aktuelle" Leistung in KW ist. Oder irre ich mich hier?

Wie wird denn der StromverbrauchTag berechnet? Was für ein Wert wird vom ESP übermittelt? Wie oft eigentlich?
Wenn ich bei jedem Puls die Werte neu berechne...das sind bei einem Verbrauch von 10kW = 750 Umdrehungen/h = 12,5 1/min = alle 4,8 sek. die Werte neu Berechnen...muss ich dann nicht schon langsam Angst haben, das ich mein FHEM auf dem Raspberry etwas überlaste? (Ja...ich glaube nicht, das ich allzu oft 10kW Verbrauche)

Irgendwie habe ich das Gefühl ich mache es mir schon wieder unnötig kompliziert...

Gruß
Bismosa

1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

pink99panther

ZitatAllerdings finde ich den Begriff sehr verwirrend
Ja, ich hatte als erstes nach diesem Schema einen Gas Verbrauchszähler und da waren es m³ pro Stunde.
Daraus wurde einfach die irreführende Bezeichnung.

Zur Häufigkeit der Berechnung kann ich nur sagen, dass die Werte bei mir per MQTT "nur" alle Minute übermittelt werden
und damit hat FHEM auf meinem RPI2 B kein Problem.

Für den Tagesverbrauch werden einfach nur die Pulse im ESP ( Count ) zur Anzeige aufbereitet
und um 0 Uhr durch den Reboot wieder auf 0 gesetzt.

Gruß
p99p

bismosa

Zitat von: pink99panther am 20 November 2017, 17:48:38
und um 0 Uhr durch den Reboot wieder auf 0 gesetzt.
Danke. Das war ein guter Hinweis. Ich habe das jetzt alles ähnlich aufbereitet. Siehe
https://forum.fhem.de/index.php/topic,79925.0.html

Vielen Dank für die Vorlage!

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...