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

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

Vorheriges Thema - Nächstes Thema

SusisStrolch

ZitatSporadisch kommt mal ein Wert von 30KW raus. Leider jeden Tag merhfach.

Bei mir ebenfalls. Habe jedoch eine Lichtschranke am Ferraris-Zähler mit 75P/KWH.
Muss am Wocheende mal schauen, ob die zu unempfindlich ist.
Bei im Zähler integriertem S0 sieht die Sache ja etwas anders aus, da kann man nix nachjustieren.

Ich brüte momentan über eine Variante, welche das Problem bereits auf der ESP Easy Seite mit passender Rule und ein/zwei Dummy Devices fixt.

Kannste mal einen Auszug aus deinem Zählerlog (PM)  bereitstellen?
So ca. 20 Zeilen vor und nach dem Peak würden reichen...
Synology DS1515+, 16GB RAM, 4x 6TB WD-Red
- Docker (FHEM), MariaDB, MariaDB10, Surveillance Station
Gateways: LCG miniCUL433, LCG miniCUL868, AVR-X4000, VU-Solo SE, Kodi
ESP8266: ESPEasy (S0-Counter, Temp/Hum), Sonoff TH, Sonoff 4ch

accloginsell

#46
Soo anbei mal der Peak liegt immer bei einer Zeit von 88-90 beim S0 beim Zähler meist 700-800

Habe zwei dauerhaft am Laufen

Messer per S0

2017-02-16_10:57:46 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:57:51 ESPEasy_Flur_Wohnung Time: 13369.00
2017-02-16_10:57:51 ESPEasy_Flur_Wohnung Total: 2452.00
2017-02-16_10:57:51 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:57:56 ESPEasy_Flur_Wohnung Time: 13349.00
2017-02-16_10:57:56 ESPEasy_Flur_Wohnung Total: 2453.00
2017-02-16_10:57:56 ESPEasy_Flur_Wohnung Count: 1.00
2017-02-16_10:58:01 ESPEasy_Flur_Wohnung Total: 2453.00
2017-02-16_10:58:01 ESPEasy_Flur_Wohnung Time: 13349.00
2017-02-16_10:58:01 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:58:06 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:58:06 ESPEasy_Flur_Wohnung Time: 13349.00
2017-02-16_10:58:06 ESPEasy_Flur_Wohnung Total: 2453.00
2017-02-16_10:58:11 ESPEasy_Flur_Wohnung Count: 1.00
2017-02-16_10:58:11 ESPEasy_Flur_Wohnung Total: 2454.00
2017-02-16_10:58:11 ESPEasy_Flur_Wohnung Time: 13361.00
2017-02-16_10:58:16 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:58:16 ESPEasy_Flur_Wohnung Time: 13361.00
2017-02-16_10:58:16 ESPEasy_Flur_Wohnung Total: 2454.00
2017-02-16_10:58:21 ESPEasy_Flur_Wohnung Time: 13330.00
2017-02-16_10:58:21 ESPEasy_Flur_Wohnung Total: 2455.00
2017-02-16_10:58:21 ESPEasy_Flur_Wohnung Count: 1.00
2017-02-16_10:58:26 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:58:26 ESPEasy_Flur_Wohnung Time: 13330.00
2017-02-16_10:58:26 ESPEasy_Flur_Wohnung Total: 2455.00
2017-02-16_10:58:31 ESPEasy_Flur_Wohnung Total: 2455.00
2017-02-16_10:58:31 ESPEasy_Flur_Wohnung Time: 13330.00
2017-02-16_10:58:31 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:58:36 ESPEasy_Flur_Wohnung Count: 2.00
2017-02-16_10:58:36 ESPEasy_Flur_Wohnung Total: 2457.00
2017-02-16_10:58:36 ESPEasy_Flur_Wohnung Time: 88.00
2017-02-16_10:58:41 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:58:41 ESPEasy_Flur_Wohnung Time: 88.00
2017-02-16_10:58:41 ESPEasy_Flur_Wohnung Total: 2457.00
2017-02-16_10:58:47 ESPEasy_Flur_Wohnung Total: 2458.00
2017-02-16_10:58:47 ESPEasy_Flur_Wohnung Time: 13278.00
2017-02-16_10:58:47 ESPEasy_Flur_Wohnung Count: 1.00
2017-02-16_10:58:51 ESPEasy_Flur_Wohnung Time: 13278.00
2017-02-16_10:58:51 ESPEasy_Flur_Wohnung Total: 2458.00
2017-02-16_10:58:51 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:58:56 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:58:56 ESPEasy_Flur_Wohnung Total: 2458.00
2017-02-16_10:58:56 ESPEasy_Flur_Wohnung Time: 13278.00
2017-02-16_10:59:01 ESPEasy_Flur_Wohnung Total: 2459.00
2017-02-16_10:59:01 ESPEasy_Flur_Wohnung Time: 13335.00
2017-02-16_10:59:01 ESPEasy_Flur_Wohnung Count: 1.00
2017-02-16_10:59:06 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:59:06 ESPEasy_Flur_Wohnung Time: 13335.00
2017-02-16_10:59:06 ESPEasy_Flur_Wohnung Total: 2459.00
2017-02-16_10:59:11 ESPEasy_Flur_Wohnung Time: 13335.00
2017-02-16_10:59:11 ESPEasy_Flur_Wohnung Total: 2459.00
2017-02-16_10:59:11 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:59:16 ESPEasy_Flur_Wohnung Total: 2460.00
2017-02-16_10:59:16 ESPEasy_Flur_Wohnung Time: 13384.00
2017-02-16_10:59:16 ESPEasy_Flur_Wohnung Count: 1.00


2017-02-16_10:58:36 ESPEasy_Flur_Wohnung Count: 2.00
2017-02-16_10:58:36 ESPEasy_Flur_Wohnung Total: 2457.00
2017-02-16_10:58:36 ESPEasy_Flur_Wohnung Time: 88.00
2017-02-16_10:58:41 ESPEasy_Flur_Wohnung Count: 0.00
2017-02-16_10:58:41 ESPEasy_Flur_Wohnung Time: 88.00
2017-02-16_10:58:41 ESPEasy_Flur_Wohnung Total: 2457.00


Messer per Lichtschrank:

2017-02-16_07:22:34 ESPEasy_Stromcount_Watt Total: 768.00
2017-02-16_07:22:34 ESPEasy_Stromcount_Watt Time: 20165.00
2017-02-16_07:22:34 ESPEasy_Stromcount_Watt Count: 0.00
2017-02-16_07:22:40 ESPEasy_Stromcount_Watt Total: 769.00
2017-02-16_07:22:40 ESPEasy_Stromcount_Watt Time: 20115.00
2017-02-16_07:22:40 ESPEasy_Stromcount_Watt Count: 1.00
2017-02-16_07:22:46 ESPEasy_Stromcount_Watt Time: 737.00
2017-02-16_07:22:46 ESPEasy_Stromcount_Watt Count: 1.00
2017-02-16_07:22:46 ESPEasy_Stromcount_Watt Total: 770.00
2017-02-16_07:22:52 ESPEasy_Stromcount_Watt Total: 770.00
2017-02-16_07:22:52 ESPEasy_Stromcount_Watt Time: 737.00
2017-02-16_07:22:52 ESPEasy_Stromcount_Watt Count: 0.00
2017-02-16_07:22:58 ESPEasy_Stromcount_Watt Total: 770.00
2017-02-16_07:22:58 ESPEasy_Stromcount_Watt Count: 0.00
2017-02-16_07:22:58 ESPEasy_Stromcount_Watt Time: 737.00
2017-02-16_07:23:04 ESPEasy_Stromcount_Watt Time: 19286.00
2017-02-16_07:23:04 ESPEasy_Stromcount_Watt Count: 1.00
2017-02-16_07:23:04 ESPEasy_Stromcount_Watt Total: 771.00
2017-02-16_07:23:11 ESPEasy_Stromcount_Watt Count: 0.00
2017-02-16_07:23:11 ESPEasy_Stromcount_Watt Time: 19286.00
2017-02-16_07:23:11 ESPEasy_Stromcount_Watt Total: 771.00
2017-02-16_07:23:17 ESPEasy_Stromcount_Watt Time: 19286.00
2017-02-16_07:23:17 ESPEasy_Stromcount_Watt Count: 0.00
2017-02-16_07:23:17 ESPEasy_Stromcount_Watt Total: 771.00
2017-02-16_07:23:22 ESPEasy_Stromcount_Watt Count: 1.00
2017-02-16_07:23:22 ESPEasy_Stromcount_Watt Time: 20224.00
2017-02-16_07:23:22 ESPEasy_Stromcount_Watt Total: 772.00
2017-02-16_07:23:28 ESPEasy_Stromcount_Watt Count: 0.00

fl_Indigo

hab das mal bei mir ohne MQTT implementiert, wenns wer brauchen kann
alle readings direkt im device, ohne zusätzlichen dummy
ESP reset und erzeugung des vortageszählerstands in einem at ohne zusätzlichem externen script


define ESPEasy_ESP8266_Server_S0_Watt ESPEasy 10.0.0.91 80 ESPBridge ESP8266_Temp_Watt
attr ESPEasy_ESP8266_Server_S0_Watt IODev ESPBridge
attr ESPEasy_ESP8266_Server_S0_Watt Interval 300
attr ESPEasy_ESP8266_Server_S0_Watt group ESPEasy Device
attr ESPEasy_ESP8266_Server_S0_Watt presenceCheck 1
attr ESPEasy_ESP8266_Server_S0_Watt readingSwitchText 1
attr ESPEasy_ESP8266_Server_S0_Watt room 15_ESPEasy
attr ESPEasy_ESP8266_Server_S0_Watt setState 3
attr ESPEasy_ESP8266_Server_S0_Watt stateFormat { sprintf("<align=left>Zählerstand: %.2f kWh<br><align=left>Verbrauch gestern: %.2f kWh<br><align=left>Verbrauch heute: %.2f kWh<br><align=left>Stromverbrauch aktuell: %.2f W", (ReadingsVal($name, "ZaehlerStand",0)), (ReadingsVal($name, "VerbrauchVortag",0)), (ReadingsVal($name, "TagesVerbrauch",0)), (ReadingsVal($name, "StromverbrauchAktuell",0)) ) }
attr ESPEasy_ESP8266_Server_S0_Watt userReadings PulsZeit:Time.* { ReadingsVal("$name", "Time", 0)/1000 },\
StromverbauchAktuell:Time.* { 3600/ReadingsVal("$name", "PulsZeit", 0) },\
TagesVerbrauch:Time.* { ReadingsVal("$name", "Total", 0)/1000 },\
ZaehlerStand:Time.* { ReadingsVal("$name", "Total", 0)/1000 + ReadingsVal("$name", "ZaehlerStandVortag", 0)}

define at_ESPEasy_ESP8266_Server_S0_Watt_reboot at *00:00:00 {\
my $ValTag = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","TagesVerbrauch","0");;\
my $ValVT = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","ZaehlerStandVortag","0");;\
my $zaehlerNeu = $ValVT + $ValTag;;\
my $verbrauch = $ValTag - $ValVT;;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt ZaehlerStandVortag $zaehlerNeu");;;;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt VerbrauchVortag $verbrauch");;;;\
GetFileFromURL("http://10.0.0.91/?cmd=reboot");;;; }

define FileLog_StromzaehlerServer FileLog ./log/StromzaehlerServer-%Y-%m.log ESPEasy_ESP8266_Server_S0_Watt:StromverbauchAktuell:.*|ESPEasy_ESP8266_Server_S0_Watt:ZaehlerStand:.*|ESPEasy_ESP8266_Server_S0_Watt:ZaehlerStandVortag:.*|ESPEasy_ESP8266_Server_S0_Watt:TagesVerbrauch:.*|VerbrauchVortag

dev0

Da der GetFileFromURL() Aufruf FHEM blockieren kann, wenn der ESP bspw. nicht erreichbar ist, würde ich statt
GetFileFromURL("http://10.0.0.91/?cmd=reboot")

den reboot Befehl über das ESPEasy Modul benutzen:
fhem("set ESPEasy_ESP8266_Server_S0_Watt reboot")

fl_Indigo


Octopus180

Hallo fl_Indigo

ich versuche zurzeit deine Umsetzung aus dem Beitrag umzusetzten, doch leider haben ich dabei ein Problem.

wenn ich diesen Befehl eingebe
define at_ESPEasy_ESP8266_Server_S0_Watt_reboot at *00:00:00 {\
my $ValTag = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","TagesVerbrauch","0");;\
my $ValVT = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","ZaehlerStandVortag","0");;\
my $zaehlerNeu = $ValVT + $ValTag;;\
my $verbrauch = $ValTag - $ValVT;;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt ZaehlerStandVortag $zaehlerNeu");;;;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt VerbrauchVortag $verbrauch");;;;\
GetFileFromURL("http://10.0.0.91/?cmd=reboot");;;; }


bekomme ich folgende Fehlermeldung :

Can't modify single ref constructor in scalar assignment at (eval 351) line 1, at EOF

diese Fehlermeldung bekomme ich auch wenn ich die Zeile :
GetFileFromURL("http://10.0.0.91/?cmd=reboot")   in
fhem("set ESPEasy_ESP8266_Server_S0_Watt reboot") ändere

leider weiß ich als Anfänger nicht weiter , ich habe auch schon versucht über Google was herauszufinden , jedoch ohne Erfolg.

Kannst du mir weiterhelfen?

Gruß Peter

fl_Indigo

servus peter!

mein code ist direkt aus der fhem.cfg, wenn du ihn in der befehlszeile im browser eingibst ist die anzahl der semikola zu halbieren

Octopus180


jnewton957

Hallo,

wie viele S0-Stromzähler kann ich denn so über 1 nodemcu oder Wemos anschließen? 

Habe aktuell einen mega2560 mit firmata und würde gerne auf nodemcu wechseln.

Danke
Jörg
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

sash.sc

Pro Eingang einen Zähler.

Gesendet von dem teuren ding in meiner hand

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

majorshark

Mit Aussnahme von GPIO16, da dieser meines Wissens keine Interrupt Funktionen unterstützt.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

fl_Indigo

#56
hab die config nochmal etwas verfeinert, damit man bei einem neustart des ESP die tagesstände nicht verliert, weiters kann der offset genutzt werden um den zählerstand bei bedarf zu korrigieren


define ESPEasy_ESP8266_Server_S0_Watt ESPEasy 10.0.0.91 80 ESPBridge ESP8266_Server_S0_Watt
attr ESPEasy_ESP8266_Server_S0_Watt IODev ESPBridge
attr ESPEasy_ESP8266_Server_S0_Watt Interval 60
attr ESPEasy_ESP8266_Server_S0_Watt alias Serverrack S0
attr ESPEasy_ESP8266_Server_S0_Watt event-min-interval .*:300
attr ESPEasy_ESP8266_Server_S0_Watt event-on-change-reading .*
attr ESPEasy_ESP8266_Server_S0_Watt group ESPEasy Device
attr ESPEasy_ESP8266_Server_S0_Watt presenceCheck 1
attr ESPEasy_ESP8266_Server_S0_Watt readingSwitchText 1
attr ESPEasy_ESP8266_Server_S0_Watt room 15_ESPEasy,02_Energie
attr ESPEasy_ESP8266_Server_S0_Watt setState 3
attr ESPEasy_ESP8266_Server_S0_Watt stateFormat { sprintf("Zählerstand: %.2f kWh<br>Verbrauch gestern/vorgestern: %.2f / %.2f kWh<br>Verbrauch heute: %.2f kWh<br>Stromverbrauch aktuell: %.2f W", (ReadingsVal($name, "ZaehlerStand",0)), (ReadingsVal($name, "StromverbrauchGestern",0)), (ReadingsVal($name, "StromverbrauchVorgestern",0)),(ReadingsVal($name, "StromverbrauchHeute",0)), (ReadingsVal($name, "StromverbrauchAktuell",0)) ) }
attr ESPEasy_ESP8266_Server_S0_Watt userReadings StromverbrauchAktuell:Time:.* { 3600/ReadingsVal("$name", "Time", 0)*1000 },\
ZaehlerStand:Time:.* { ReadingsVal("$name", "StromverbrauchHeute", 0) + ReadingsVal("$name", "ZaehlerStandVortag", 0) + ReadingsVal("$name", "StromverbrauchHeuteOffset", 0);; },\
StromverbrauchHeute:Time:.* { my $Strom_Gesamt = ReadingsVal("$name", "StromverbrauchHeute", 0) + (ReadingsVal("$name", "Count", 0)/1000);; fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchHeute $Strom_Gesamt");; }
attr ESPEasy_ESP8266_Server_S0_Watt verbose 0

define at_ESPEasy_ESP8266_Server_S0_Watt_reboot at *00:00:00 {\
my $Stromverbrauch_Heute = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchHeute","0");;\
my $Zaehler_Stand_Vortag = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","ZaehlerStandVortag","0");;\
my $Stromverbrauch_Gestern = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchGestern","0");;\
my $zaehlerNeu = $Zaehler_Stand_Vortag + $Stromverbrauch_Heute;;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt ZaehlerStandVortag $zaehlerNeu");;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchGestern $Stromverbrauch_Heute");;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchVorgestern $Stromverbrauch_Gestern");;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchHeute 0");;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchHeuteOffset 0");;\
fhem ("set ESPEasy_ESP8266_Server_S0_Watt reboot");; }

define FileLog_StromzaehlerServer FileLog ./log/StromzaehlerServer-%Y-%m.log ESPEasy_ESP8266_Server_S0_Watt:StromverbrauchAktuell:.*|ESPEasy_ESP8266_Server_S0_Watt:ZaehlerStand:.*|ESPEasy_ESP8266_Server_S0_Watt:ZaehlerStandVortag:.*|ESPEasy_ESP8266_Server_S0_Watt:StromverbrauchHeute:.*|ESPEasy_ESP8266_Server_S0_Watt:StromverbrauchVortag:.*

xps

#57
Hallo,
erstmals vielen Dank für die Examples und die Zeit die ihr hier bereits investiert habt!

Leider werden bei mir sehr eigenartige Werte angezeigt und ich komme nicht dahinter welcher Fehler mit unterlaufen ist.

Ich habe einen NodeMCU verwendet der wie folgt verbunden ist:
der S0+ liegt auf 3v3
S0- auf D4
D4 ist mit einem 1kOhm Widerstand mit GND verbunden.

Der Zähler ist ein DRT428BC welche über die S0 Schnittstelle 1000imp./kWh ausgibt.

Ich habe die config von fl_Indigo genommen.

Anbei ein Auszug aus meinem Logfile auf dem ersichtlich ist, das ich zwischen 01:18 und 16:12 über 400kW verbraucht haben soll
- dies ist natürlich nicht korrekt.

Vielen Dank!

Edit: Hat sich erledigt - ich habe jetzt statt D4 (GPIO 2) - auf D6 (GPIO 12) gewechselt - jetzt funktioniert alles wunderbar.

pink99panther

Hallo jeti

Mach doch bitte für Deine Frage an passender Stelle einen neuen Thread auf!
In diesem Unterforum geht es um die Vorstellung von "Codeschnipseln"
und in diesem Thread um die Übertragung aus ESPeasy mittels MQTT!

Danke

jeti

Hast recht, sorry.
Ist gelöscht um hier nicht weiter zu verwirren.

Gruß