FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: pink99panther am 30 November 2016, 23:33:50

Titel: Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 30 November 2016, 23:33:50
Möchte hier meine Lösung zur Erfassung meines S0-Zählers vorstellen.
Das Ganze ist auf 1000 Pulse pro kWh ausgelegt.

MQTT-Server Mosquitto installieren (http://www.fhemwiki.de/wiki/Sonoff#MQTT_Server_einrichten)

Wenn der Broker nicht auf dem FHEM-Server installiert wurde muss die IP-Adresse angepasst werden!

define MyBroker MQTT 127.0.0.1:1883


Jetzt kann der ESP wie auf den Bildern unten gezeigt eingerichtet werden.
!!!!!    IP-Adresse durch die des eigenen Brokers ersetzen     !!!!!


define PulsStrom MQTT_DEVICE
attr PulsStrom IODev MyBroker
attr PulsStrom stateFormat transmission-state
attr PulsStrom subscribeReading_Count /Stromcount/Watt/Count
attr PulsStrom subscribeReading_Time /Stromcount/Watt/Time
attr PulsStrom subscribeReading_Total /Stromcount/Watt/Total

define Strom dummy
attr Strom event-on-change-reading StromverbrauchStd,StromverbrauchTag,zaehler_jetzt
attr Strom readingList StromverbrauchStd StromverbrauchTag zaehler_vortag zaehler_jetzt

define StromverbrNoti notify PulsStrom {
my $StromUmlaufzeit = ReadingsVal("PulsStrom","Time","0") / 1000;
my $StromProStd=3.6/$StromUmlaufzeit;
my $StromProStdRounded=int(1000 * $StromProStd + 0.5) / 1000;
my $StromProTag = ReadingsVal("PulsStrom","Total","0") / 1000;
my $Summe = ReadingsVal("Strom","zaehler_vortag","0") + (ReadingsVal("PulsStrom","Total","0") / 1000);
fhem("set Strom zaehler_jetzt $Summe");;
fhem("set Strom StromverbrauchStd $StromProStdRounded");;
fhem("set Strom StromverbrauchTag $StromProTag");;
}

define FileLog_Stromverbrauch FileLog ./log/Stromverbrauch-%Y-%m.log Strom:StromverbrauchStd:.*|Strom:StromverbrauchTag:.*|Strom:zaehler_jetzt:.*

define Stromvervbauch readingsGroup Strom:zaehler_jetzt Strom:StromverbrauchStd
attr Stromvervbauch mapping {"zaehler_jetzt" => "Zählerstand", "StromverbrauchStd" => "Momentanverbrauch"}
attr Stromvervbauch nameStyle style="font-weight:bold"
attr Stromvervbauch notime 1
attr Stromvervbauch style style="font-size:20px"
attr Stromvervbauch valueFormat {zaehler_jetzt => "%.3f KW/h", StromverbrauchStd => "%.3f KW/h"}
attr Stromvervbauch valueStyle style="text-align:right"

define ESP_reboot at *00:00:00 {
my $ValTag = ReadingsVal("PulsStrom","Total","0") / 1000;
my $ValVT = ReadingsVal("Strom","zaehler_vortag","0");
my $zaehlerNeu = $ValVT + $ValTag;
fhem ("set Strom zaehler_vortag $zaehlerNeu");;
system("/home/pi/reboot_ESP");;
}


Jetzt wird noch ein Script mit dem Namen reboot_ESP  im Verzeichnis /home/pi gebraucht das den ESP rebootet.
Nicht vergessen die Datei mit ,,chmod 755" ausführbar zu machen!

#!/bin/bash

wget Stromcount/?cmd=reboot


Der Ausgang S0+ wird mit den 3,3V (VCC) des ESP verbunden.
Der S0- wird mit dem GPIO der als Zähleingang definiert wurde verbunden.
Außerdem wird ein Widerstand 1 bis 5 kOhm von diesem GPIO gegen GND angebracht.

Vielleicht hilft es ja jemand :)
Manfred

EDIT: Hab ein paar Änderungen vorgenommen.
1. monotonic wie p6k hier https://forum.fhem.de/index.php/topic,61731.msg569745/topicseen.html#msg569745 (https://forum.fhem.de/index.php/topic,61731.msg569745/topicseen.html#msg569745)
2. Dadurch kein Verlust des Tagesverbrauchs / aktuellen Zählerstands bei Absturz des ESP
3. Reboot des ESP ohne bash-Datei


define Strom dummy
attr Strom event-on-change-reading StromverbrauchStd,StromverbrauchTag,zaehler_jetzt
attr Strom readingList StromverbrauchStd StromverbrauchTag zaehler_jetzt
attr Strom room Technik
attr Strom userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {ReadingsVal($name,'StromverbrauchTag',0)}


define StromverbrNoti notify PulsStrom {
my $StromUmlaufzeit = ReadingsVal("PulsStrom","Time","0") / 1000;
my $count = ReadingsVal("PulsStrom","Count","0");
my $StromProStd=0;
if ($StromUmlaufzeit > 0){
$StromProStd=3.6/$StromUmlaufzeit;
}
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");;
}

define ESP_reboot at *00:00:00 {
system "wget -O /dev/null -q <IP Deines Stromcount>/?cmd=reboot";;
}
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Skusi am 16 Dezember 2016, 19:12:00
Super Klasse die Anleitung.

Ich hab das gerade nachgebaut, und wie es scheint läuft das einwandfrei.

Fettes Dankeschön für die Mühe die Du Dir gemacht hast um mir das zu ersparen :-) !!!
Genau so eine Lösung habe ich schon sooo lange gesucht. So muß sich Fhem nicht mit 1000 Impulsen / KWh beschäftigen. Nun kann ich über das Dealy im ESPEasy selbst entscheiden wieviele Events ich haben möchte, und wie aktuell die Auswertung sein soll. Und zur Krönung das ganze auch noch drahtlos und für sehr kleines Geld.

In deinem Sorglos Packet ist ja auch schon alles was man braucht enthalten, wirklich klasse.

Für mich schon ein tolles Weihnachtsgeschenk.

Also.... "Frohes Fest" schonmal

Gruß Skusi
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 16 Dezember 2016, 19:40:39
@Skusi
Danke für die Blumen :)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Octopus180 am 17 Dezember 2016, 12:41:12
Hallo pink99panther

ich beschäftige mich erst seit kurzem mit FHEM und was damit alles möglich ist. Jetzt bin ich auf dein Bericht gestossen und ich würde gerne meinen Strom- (S0) , Gas- und Wasserzähler an FHEM einbinden. Da ich mich aber mit den ganzen Platinen noch nicht so auskenne , wäre es nett wenn du mir eine Liste der genauen Hardware nennen könntest. (schon wäre mit Bilder vom Aufbau)

Danke
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 17 Dezember 2016, 15:24:24
Hallo Octopus180,

Für die ESP-Hardware hab ich ein Nodemcu https://www.amazon.de/gp/product/B019PVI4IY/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1 (https://www.amazon.de/gp/product/B019PVI4IY/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1) genommen.
Die sind beim flashen unproblematisch und zur Stromversorgung
kann man ein Handyladegerät nehmen. Ich hatte noch 5V Steckernetzteile vom Wühltisch.
Zum verbinden Zähler Nodemcu kann man Steckbrettkabel Buchse-Stift nehmen.
Der Widerstand sollte auf der Oberseite des Nodemcu angelötet werden.
Das ganze ist bei mir in einen Hutschienengehäuse untergebracht.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Octopus180 am 18 Dezember 2016, 00:23:15
Erstmal Danke, wenn ich noch Fragen habe würde ich gerne nochmal melden.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Octopus180 am 18 Dezember 2016, 17:59:47
Hallo pink99panther

da der Nodemcu (dein Link) leider nicht mehr verfügbar ist , habe ich ein wenig bei Amazon gesucht. Ist der von mir rausgesuchte Nodemcu
https://www.amazon.de/dp/B018E741G4/ref=sr_ph?ie=UTF8&qid=1482079674&sr=1&keywords=nodemcu (https://www.amazon.de/dp/B018E741G4/ref=sr_ph?ie=UTF8&qid=1482079674&sr=1&keywords=nodemcu) auch nutzbar?

Für mich sieht er genauso aus.

Gruß
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 18 Dezember 2016, 20:20:39
Du kannst eigentlich jedes Entwicklerboard mit einem ESP8266 nehmen.
Ausser dem Nodemcu gibt es auch noch einige andere.
Du könntest sogar einen einfachen ESP8266-01 nehemn, aber da braucht man das ganze drumherum
zum flashen und eine extra 3,3V Spannungsversorgung.

Gruß
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Skusi am 19 Dezember 2016, 11:40:14
Ich kann Dir die Wemos D1 mini Boards empfehlen.
Haben alles an Board was Du brauchst, sind günstiger und kleiner.

Oft nur in China zu haben:

http://www.ebay.de/itm/WIFI-Entwicklung-ESP8266-Karte-fur-D1-mini-V2-Mini-4M-Bytes-Lua-NodeMcu-DL-/252650400114?hash=item3ad3232972:g:5Y0AAOSwEzxYNqNj

oder:

https://de.aliexpress.com/item/D1-mini-Mini-NodeMcu-4M-bytes-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266-by/32662942091.html?spm=2114.010208.3.38.V7S9qD&ws_ab_test=searchweb0_0,searchweb201602_1_116_10065_117_10068_114_115_113_10084_10083_10080_10082_10081_10060_10061_10062_10056_10055_10037_10054_10033_10059_10032_10099_10078_10079_10077_427_10103_10073_10102_10101_10096_10052_10050_10051-10050_113_10037_10077,searchweb201603_2&btsid=83852298-98d0-4369-88d9-4d934dc2c6a2

Wenn Du Zeit hast....
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Papaloewe am 23 Dezember 2016, 15:12:43
Hallo Pink99panther,

danke für die einfache Anleitung.

Kurze Frage zu dem täglichem Reboot des ESP:
ZitatJetzt wird noch ein Script mit dem Namen reboot_ESP  im Verzeichnis /home/pi gebraucht das den ESP rebootet.
Nicht vergessen die Datei mit ,,chmod 755" ausführbar zu machen!

#!/bin/bash

wget Stromcount/?cmd=reboot

Wäre das nicht auch vielleicht sogar etwas eleganter über eine Rule direkt auf dem ESP möglich?
So vielleicht?
On Clock#Time=All,23:59 do // every day at 23:59 hours do ...
Reboot
endon


Quelle: http://www.letscontrolit.com/wiki/index.php/Tutorial_Rules (http://www.letscontrolit.com/wiki/index.php/Tutorial_Rules)

Gruß
Thomas
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 23 Dezember 2016, 15:42:06
Hallo Papaloewe,

Für den reboot selbst wäre das super,
aber zeitnah wird auch die adition von
total zum zählerstand des Vortages gebraucht.
Deshalb habe ich das von FHEM aus gemacht.
Erst die Adition und dann sofort den Reboot.

Gruß
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 03 Januar 2017, 09:03:45
Super Arbeit.

Aber warum muss der esp immer wieder neu gebootet werden.  Ist das Vorsorge oder steckt da noch was anderes dahinter?

Gruß Sascha
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 03 Januar 2017, 10:34:32
Danke sash.sc für das Lob.
Mit den ESP's hatte ich in  der Anfangszeit so meine Probleme.
Sind öfter mal hängen geblieben.
Da bei einem Neustart der Total ( Zählerstand ) verloren geht
übertrage ich den Wert lieber um Mitternacht an FHEM und lasse den ESP
rebooten und setze damit auch den Total wieder auf Null.

Gruß
p99p
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: insane84 am 12 Januar 2017, 07:56:32
Hallo, danke für die Codezeilen.

Habe deinen Code angepasst, dass ich ihn über die Espbridge nutzen kann.
Ich hoffe die 1000 Impulse kann ich auch für meinen Gaszähler durch 100 Impulse ersetzen, indem ich ein 0 überall weglasse

ist es auch möglich, den ESP über die ESP Bridge neu zu starten?
Per URL Aufruf im Browser ist das möglich, nur habe bis jetzt nicht den richtigen Befehl in Fhem gefunden

Gruß Chris
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: dev0 am 12 Januar 2017, 09:07:17
Zitat von: insane84 am 12 Januar 2017, 07:56:32
ist es auch möglich, den ESP über die ESP Bridge neu zu starten?

In der nächsten Modulversion, hatte ich noch nicht implementiert.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 12 Januar 2017, 09:20:00
Hallo insane84

für den Gaszähler hab ich das so:
Kellersensor:time:.* {
my $GasUmlaufzeit = ReadingsVal("Kellersensor","time","0") / 1000;
my $count = ReadingsVal("Kellersensor","count","0");
my $GasProStd=36/$GasUmlaufzeit;
my $GasProStdRounded = 0;

if($count > 0){
$GasProStdRounded = int(100 * $GasProStd + 0.5) / 100;
}

my $GasProTag = ReadingsVal("Kellersensor","total","0") / 100;
my $Summe = ReadingsVal("Gas","zaehler_vortag","0") + (ReadingsVal("Kellersensor","total","0") / 100);
fhem("set Gas zaehler_jetzt $Summe");;
fhem("set Gas GasverbrauchStd $GasProStdRounded");;
fhem("set Gas GasverbrauchTag $GasProTag");;
}


Rebootfrage wurde ja schon kompetent beantwortet.

Gruß
p99p
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: accloginsell am 18 Januar 2017, 12:22:17
Hat jemand einen Link zu einem brauchbaren ferraris zähler s0?

Danke euch!
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: locutus am 22 Januar 2017, 00:28:01
Impulsgeber mit S0-Schnittstelle für konventionelle Stromzähler: http://www.stall.biz/project/impulsgeber-mit-s0-schnittstelle-fuer-konventionelle-stromzaehler
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Papaloewe am 22 Januar 2017, 10:58:01
Die Seite kannte ich auch noch nicht  :)

Vielen Dank.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 22 Januar 2017, 11:16:13
Zitat von: locutus am 22 Januar 2017, 00:28:01
Impulsgeber mit S0-Schnittstelle für konventionelle Stromzähler: http://www.stall.biz/project/impulsgeber-mit-s0-schnittstelle-fuer-konventionelle-stromzaehler
Auch von mir ein Danke für den Tip!
Hab mir den Bausatz bestellt!
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: p5k am 25 Januar 2017, 19:12:02
Vielen Dank für die ganzen Infos, damit war das Einrichten ein Kinderspiel und eigentlich läuft das auch richtig gut, bis auf eine kleine Sache.

Ich habe ein Wemos D1 mini an den Zähler angeschlossen , logge mit dblog und lass mir den Tagesbedarf mit delta-d anzeigen. Und dabei ist mir etwas aufgefallen, was so nicht stimmt. Ich habe die Vermutung, dass es an der Hardware liegt.

Die Werte die delta-d liefert, sind etwas niedriger als die tatsächlichen Verbrauchswerte (war bei mir zumindestens jetzt meistens so). Daran ist mir das überhaupt erst aufgefallen. Ich glaube, es liegt an dem vorletztem Wert, der für diesen Tag geloggt wird. Es ist immer der vorletzte Wert des Tages und es ist immer der erste Wert nach dem Neustart des ESP.
2 Ausschnitte:
2017-01-23_00:00:35 9.118
2017-01-23_00:01:35 9.122
2017-01-23_00:02:35 9.126
.......
2017-01-23_23:57:10 14.65
2017-01-23_23:58:10 14.651
2017-01-23_23:59:35 20.191
2017-01-23_23:59:35 14.652
#StromWohnung:zaehler_jetzt:::

und
2017-01-24_00:00:35 14.653
2017-01-24_00:01:35 14.654
2017-01-24_00:02:35 14.655
......
2017-01-24_23:58:08 19.88
2017-01-24_23:59:36 25.109
2017-01-24_23:59:36 19.882
#StromWohnung:zaehler_jetzt:::


Zwischen Anfang und Ende befinden sich ausschließlich aufsteigende Werte. Zuerst habe ich gedacht, dass da irgendwas falsch gerechnet wird, aber ich bin auf kein vernünftiges Ergebnis bekommen, jetzt frage ich mich gerade ob der Neustart des ESP dazu führt, dass er irgendwelche komischen Werte liefert.

Für Hilfe und Ideen wäre ich dankbar.
vg Patrick

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 25 Januar 2017, 19:50:33
Hallo p5k,
Was mir bekannt ist ist, dass die Pulse vom letzten Publish
bis nach Reboot (max 60 sec + Rebootzeit) verloren gehen.
Hab auch schon versucht den Rebootbefehl über MQTT zu schicken.
Das ist mir leider nicht gelungen, obwohl es laut http://www.letscontrolit.com/wiki/index.php/ESPEasy_Command_Reference (http://www.letscontrolit.com/wiki/index.php/ESPEasy_Command_Reference)
gehen sollte.
Vielleicht bin ich auch einfach nur zu....... :)
Wäre Dankbar für eine Info dazu.
Damit würden sich die velorenen Pulse minimiren lassen.

Gruß
p99p
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: accloginsell am 26 Januar 2017, 07:18:45
Hallo Leute,

habe nun alle installiert funktioniert rein Technisch auch gut aber die Ergebnisse machen mich stutzig

Wenn ich mit der Hand zähle bzw mit dem Timer stoppe und es auf dieser WEBSITE  http://www.energie-bewusstsein.de/index.php?page=thema_berechnungen&p2=leistung_stromzaehler&er=1 (http://www.energie-bewusstsein.de/index.php?page=thema_berechnungen&p2=leistung_stromzaehler&er=1)
einfüge komme ich immer auf einen anderen Wert. --> Könntest du uns bitte erklären was ich mit dem Wert TIME berechnen kann. Dieser Wert ist für mich unschlüssig.

Hast jemand schon mit der "Hand" nachgerechnet?

Auch würde mich freuen wenn der "Zählerstand" nicht jede Nacht resettet wird. Ginge das evtl irgendwie?

Viele Grüße
NIco

EDIT:

Wenn man (ich) es richtig machen würde würde es auch klappen.. nicht einfach Plump alle 1000 auf 600 änder ( Unser Zähler hat 600 Impulse pro KWH)

Dann sieht es so aus und funktioniert auch:

define StromverbrNoti notify PulsStrom {\
my $StromUmlaufzeit = ReadingsVal("PulsStrom","Time","0") / 1000;;\
my $StromProStd=3.6/$StromUmlaufzeit;;\
my $StromProStdRounded=int(1000 * $StromProStd + 0.5) / 600;;\
my $StromProTag = ReadingsVal("PulsStrom","Total","0") / 600;;\
my $Summe = ReadingsVal("Strom","zaehler_vortag","0") + (ReadingsVal("PulsStrom","Total","0") / 600);;\
fhem("set Strom zaehler_jetzt $Summe");;;;\
fhem("set Strom StromverbrauchStd $StromProStdRounded");;;;\
fhem("set Strom StromverbrauchTag $StromProTag");;;;\
}


Habe noch das delay beim ESP auf 5 geändert. Jetzt hat man superschnelle änderungen
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 26 Januar 2017, 09:05:37
Zitat von: accloginsell am 26 Januar 2017, 07:18:45
Könntest du uns bitte erklären was ich mit dem Wert TIME berechnen kann.
Übertragen auf das Auto ist das die Geschwindigkeit. Wenn ich weiss in welcher Zeit ich einen Kilometer zurückgelegt habe
kann ich berechnen wieviel Kilometer ich in einer Stunde schaffe.

Zitat von: accloginsell am 26 Januar 2017, 07:18:45
Auch würde mich freuen wenn der "Zählerstand" nicht jede Nacht resettet wird. Ginge das evtl irgendwie?
Ich halte den Zählerstand lieber in FHEM und benutze Total aus dem ESP nur für den Tagesverbrauch!
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: accloginsell am 26 Januar 2017, 09:18:08
Danke dir für die Antwort.

Time ist der Abstand zwischen den S0 angeschlägen

Wie hältst du deinen Zähler Stand in FHEM fest? Sobald ich den ESP Neustarte ist dieser auch bei 0?

Danke
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: p5k am 26 Januar 2017, 10:36:17
Hallo zusammen,

der Zählerstand wird jeden Tag um 0 Uhr nach fhem übertragen. Bei mir hat das allerdings dazu geführt, dass ich die delta-d Funktion nicht mehr benutzen konnte, ohne das ich die Datenbankeinträge manuell bearbeitet habe.

Ich habe das jetzt folgendermaßen angepasst:
define PulsStrom MQTT_DEVICE
attr PulsStrom IODev MyBroker
attr PulsStrom stateFormat transmission-state
attr PulsStrom subscribeReading_Count /Stromcount/Watt/Count
attr PulsStrom subscribeReading_Time /Stromcount/Watt/Time
attr PulsStrom subscribeReading_Total /Stromcount/Watt/Total

define Strom dummy
attr Strom event-on-change-reading StromverbrauchStd,StromverbrauchTag,zaehler_jetzt
attr Strom readingList StromverbrauchStd StromverbrauchTag zaehler_vortag zaehler_jetzt
attr userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {ReadingsVal($name,'StromverbrauchTag',0)}

define StromverbrNoti notify PulsStrom {
my $StromUmlaufzeit = ReadingsVal("PulsStrom","Time","0") / 1000;
my $StromProStd=3.6/$StromUmlaufzeit;
my $StromProStdRounded=int(1000 * $StromProStd + 0.5) / 1000;
my $StromProTag = ReadingsVal("PulsStrom","Total","0") / 1000;
fhem("set Strom StromverbrauchStd $StromProStdRounded");;
fhem("set Strom StromverbrauchTag $StromProTag");;
}

define FileLog_Stromverbrauch FileLog ./log/Stromverbrauch-%Y-%m.log Strom:StromverbrauchStd:.*|Strom:StromverbrauchTag:.*|Strom:zaehler_jetzt:.*

define Stromvervbauch readingsGroup Strom:zaehler_jetzt Strom:StromverbrauchStd
attr Stromvervbauch mapping {"zaehler_jetzt" => "Zählerstand", "StromverbrauchStd" => "Momentanverbrauch"}
attr Stromvervbauch nameStyle style="font-weight:bold"
attr Stromvervbauch notime 1
attr Stromvervbauch style style="font-size:20px"
attr Stromvervbauch valueFormat {zaehler_jetzt => "%.3f KW/h", StromverbrauchStd => "%.3f KW/h"}
attr Stromvervbauch valueStyle style="text-align:right"

define ESP_reboot at *00:00:00 {
system("/home/pi/reboot_ESP");;
}


durch das monotonic beim userReading wird der zaehler_jetzt immer relativ mit dem StromverbrauchTag hochgezählt. Das heißt, es ist jetzt egal ob der esp zwischendurch reseted wird, der Gesamtzählerstand geht nicht verloren, weil er unmittelbar mitgeloggt wird. Das Summieren kann man sich dann auch sparen, wodurch das at wirklich nur noch den Neustart des ESP auslöst (das benutze ich dafür um den Tageszähler zu resetten, könnte man aber auch weg lassen)

Das einzige was mich jetzt noch stört ist das ich durch das verwenden von monotonic viele Nachkommastellen bekomme, die wirken sich zwar nicht aus, aber sie sorgen halt auch nicht dafür, dass die Datenbankansicht übersichtlicher wird.

Vielleicht müsste man das Readings vor dem loggen auf 2 oder 3 Nachkommastellen begrenzen.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: matzej am 03 Februar 2017, 21:42:38
Hallo,

neu bei fhem, esp8266 - aber nicht bei Hausautomation und Linux.

Klappt alles, ausser:
...
define StromverbrNoti notify PulsStrom {
my $StromUmlaufzeit = ReadingsVal("PulsStrom","Time","0") / 1000;
my $StromProStd=3.6/$StromUmlaufzeit;
my $StromProStdRounded=int(1000 * $StromProStd + 0.5) / 1000;
my $StromProTag = ReadingsVal("PulsStrom","Total","0") / 1000;
fhem("set Strom StromverbrauchStd $StromProStdRounded");;
fhem("set Strom StromverbrauchTag $StromProTag");;
}
...


"Unknown command fhem("set, try help."

wo kommt das rein, sowohl telnet also auch Web Comandozeile fressen das nicht ...

thx Matze
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 03 Februar 2017, 22:05:17
mach erst mal ein einfaches notify mit:

define StromverbrNoti notify a b

Dann mit kopieren und einfügen in  DEF
den Rest ab PulsStrom und damit "a b" ersetzen.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 04 Februar 2017, 17:52:15
würde das ganz auch mit ESPEasy laufen ? denke schon , oder ???

Gruß
Sascha
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 04 Februar 2017, 19:46:47
Zitat von: sash.sc am 04 Februar 2017, 17:52:15
würde das ganz auch mit ESPEasy laufen ? denke schon , oder ???

Gruß
Sascha

[spassmodus]Mit ESPEasy auf dem ESP8266 läuft es doch schon.....[/spassmodus]

Ich denke Du meinst das Modul von dev0.
Eigentlich sollte man das damit auch zum laufen bekommen.

Gruß
p99p
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 04 Februar 2017, 19:51:40
Werde dann erstmal die Hardware installieren. Den wemos habe ich schon vorbereitet. Auch mit den PIN s die ich benutzen werde.
Die Daten kommen über die bridge in fhem schon an......



Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: majorshark am 04 Februar 2017, 20:20:40
Ich habe das am Gaszähler mit einem Readkontakt und ESP8266. Auf dem ESP werkelt ein ESPEasy. Ich übergebe den Zählerstand an das Modul GasCalculator. Dieses Modul kann ich nur empfehlen. Statistische Werte ohne Ende! Auf keinen Fall würde ich ein ESP01 benutzen. Da geht durch den kleinen Flash kein OTA. Und übrigens - mein ESP am Gaszähler läuft schon seit 62 Tagen ohne Unterbrechung.

Grüße
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 05 Februar 2017, 19:08:58
Kann man die ganze Berechnung aus den Notify´s nicht direkt im ESPEasy machen lassen ??

Habe heutre soweit alles installiert.

Habe da noch ein Paar Fragen. Zu den Readings


COUNT:      Werden wahrscheinlich die aktuell gezählten Impulse sein, die gerade anliegen
TIME:          Welche Zeit ist das ????
TOTAL:        Gesamt gezählte Impule seit dem Start des WEMOS/ESp8622

Gruß
Sascha
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 05 Februar 2017, 20:42:34
Ob man die Berechnungen im ESP machen weiss ich nicht.
Würd ich mir, wenn ich nicht noch genug andere Baustellen hätte, mal ansehen.

Zu COUNT, das sind die Pulse seit dem letzten Publish
Zu TIME,    das ist die Zeit zwischen den Pulsen
Zu TOTAL,  das ist wie Du oben geschrieben hast.

Gruß
p99p
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 06 Februar 2017, 16:32:34
Zitat von: pink99panther am 05 Februar 2017, 20:42:34


Zu COUNT, das sind die Pulse seit dem letzten Publish
Zu TIME,    das ist die Zeit zwischen den Pulsen
Zu TOTAL,  das ist wie Du oben geschrieben hast.

Gruß
p99p

Mir ist aufgefallen, dass bei mir die Impulse weiter gezählt werden, jedoch die TIME zwischen den Impulsen wird nicht zurück gesetzt, wenn ein Impuls kommt.

Kennt das Jemand ???

Da hängt im Moment bei uns der Trockner und die Waschmaschine dran. Ein Gerät ist im Standby. Deswegen zwischendurch die Impulse.

Gruß
Sascha
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 06 Februar 2017, 18:37:28
Wieso soll die Zeit zurückgesetzt werden????
Wenn der Stromverbrauch gleichbleibend ist
ist auch die Zeit zwischen den Pulsen immer gleich.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 06 Februar 2017, 22:40:26
Ich verstehe es so, dass die Zeit zurück gesetzt wird, wenn ein puls kommt.
Es sieht so aus, dass die pulse kommen, aber die Zeit zwischen den pulsen nicht zurück gesetzt wird. Also man hat keinen Zeitabstand zwischen den pulsen.

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 06 Februar 2017, 23:17:52
Schau Dir mein notify nochmal an, was da mit "Time" gemacht wird!
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 07 Februar 2017, 22:55:02
Zitat von: p5k am 26 Januar 2017, 10:36:17
Hallo zusammen,

der Zählerstand wird jeden Tag um 0 Uhr nach fhem übertragen. Bei mir hat das allerdings dazu geführt, dass ich die delta-d Funktion nicht mehr benutzen konnte, ohne das ich die Datenbankeinträge manuell bearbeitet habe.

Ich habe das jetzt folgendermaßen angepasst:
define PulsStrom MQTT_DEVICE
attr PulsStrom IODev MyBroker
attr PulsStrom stateFormat transmission-state
attr PulsStrom subscribeReading_Count /Stromcount/Watt/Count
attr PulsStrom subscribeReading_Time /Stromcount/Watt/Time
attr PulsStrom subscribeReading_Total /Stromcount/Watt/Total

define Strom dummy
attr Strom event-on-change-reading StromverbrauchStd,StromverbrauchTag,zaehler_jetzt
attr Strom readingList StromverbrauchStd StromverbrauchTag zaehler_vortag zaehler_jetzt
attr userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {ReadingsVal($name,'StromverbrauchTag',0)}

define StromverbrNoti notify PulsStrom {
my $StromUmlaufzeit = ReadingsVal("PulsStrom","Time","0") / 1000;
my $StromProStd=3.6/$StromUmlaufzeit;
my $StromProStdRounded=int(1000 * $StromProStd + 0.5) / 1000;
my $StromProTag = ReadingsVal("PulsStrom","Total","0") / 1000;
fhem("set Strom StromverbrauchStd $StromProStdRounded");;
fhem("set Strom StromverbrauchTag $StromProTag");;
}

define FileLog_Stromverbrauch FileLog ./log/Stromverbrauch-%Y-%m.log Strom:StromverbrauchStd:.*|Strom:StromverbrauchTag:.*|Strom:zaehler_jetzt:.*

define Stromvervbauch readingsGroup Strom:zaehler_jetzt Strom:StromverbrauchStd
attr Stromvervbauch mapping {"zaehler_jetzt" => "Zählerstand", "StromverbrauchStd" => "Momentanverbrauch"}
attr Stromvervbauch nameStyle style="font-weight:bold"
attr Stromvervbauch notime 1
attr Stromvervbauch style style="font-size:20px"
attr Stromvervbauch valueFormat {zaehler_jetzt => "%.3f KW/h", StromverbrauchStd => "%.3f KW/h"}
attr Stromvervbauch valueStyle style="text-align:right"

define ESP_reboot at *00:00:00 {
system("/home/pi/reboot_ESP");;
}



Ich möchte das ganze ohne MQTT lösen.
Wie muss der 1. teil denn abgeändert werden, da wo der MQTT definiert wird ? Da Werden doch die Werte aus dem Verzeichniss geholt und in Variablen geschrieben, oder ?

Gruß und Danke
Sascha
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: p5k am 08 Februar 2017, 13:40:15
Hallo Sascha,
da gibt es keine Verzeichnisse. Der ESP8266 schickt jede Minute eine Nachricht zu einem Thema.
Hier sind die Themen so aufgebaut: /Bezeichnung des ESP/Bezeichnung der Aufgabe/Inhalt eines Messwertes
Also zB. /Stromcount/Watt/Count.
Mit "subscribeReading_Count /Stromcount/Watt/Count" werden die Nachrichten die zu diesem Thema eintreffen an das Reading Count geleitet.




Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 09 Februar 2017, 22:50:10
Zitat von: pink99panther am 30 November 2016, 23:33:50



define PulsStrom MQTT_DEVICE
attr PulsStrom IODev MyBroker
attr PulsStrom stateFormat transmission-state
attr PulsStrom subscribeReading_Count /Stromcount/Watt/Count
attr PulsStrom subscribeReading_Time /Stromcount/Watt/Time
attr PulsStrom subscribeReading_Total /Stromcount/Watt/Total

define Strom dummy
attr Strom event-on-change-reading StromverbrauchStd,StromverbrauchTag,zaehler_jetzt
attr Strom readingList StromverbrauchStd StromverbrauchTag zaehler_vortag zaehler_jetzt

define StromverbrNoti notify PulsStrom {
my $StromUmlaufzeit = ReadingsVal("PulsStrom","Time","0") / 1000;
my $StromProStd=3.6/$StromUmlaufzeit;
my $StromProStdRounded=int(1000 * $StromProStd + 0.5) / 1000;
my $StromProTag = ReadingsVal("PulsStrom","Total","0") / 1000;
my $Summe = ReadingsVal("Strom","zaehler_vortag","0") + (ReadingsVal("PulsStrom","Total","0") / 1000);
fhem("set Strom zaehler_jetzt $Summe");;
fhem("set Strom StromverbrauchStd $StromProStdRounded");;
fhem("set Strom StromverbrauchTag $StromProTag");;
}

define FileLog_Stromverbrauch FileLog ./log/Stromverbrauch-%Y-%m.log Strom:StromverbrauchStd:.*|Strom:StromverbrauchTag:.*|Strom:zaehler_jetzt:.*

define Stromvervbauch readingsGroup Strom:zaehler_jetzt Strom:StromverbrauchStd
attr Stromvervbauch mapping {"zaehler_jetzt" => "Zählerstand", "StromverbrauchStd" => "Momentanverbrauch"}
attr Stromvervbauch nameStyle style="font-weight:bold"
attr Stromvervbauch notime 1
attr Stromvervbauch style style="font-size:20px"
attr Stromvervbauch valueFormat {zaehler_jetzt => "%.3f KW/h", StromverbrauchStd => "%.3f KW/h"}
attr Stromvervbauch valueStyle style="text-align:right"

define ESP_reboot at *00:00:00 {
my $ValTag = ReadingsVal("PulsStrom","Total","0") / 1000;
my $ValVT = ReadingsVal("Strom","zaehler_vortag","0");
my $zaehlerNeu = $ValVT + $ValTag;
fhem ("set Strom zaehler_vortag $zaehlerNeu");;
system("/home/pi/reboot_ESP");;
}




Hallo Manfred.

Die 1000 impulse von deinem Zähler, sind das alle "1000" die in deinem Code stehen ?

Wenn nicht, wo müssen die Zählerimpulse angepasst werden ?

Gruß
Sascha
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 10 Februar 2017, 09:51:07
Lies mal weiter vorne in diesem thread.
Da hat das jemand angepasst.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 10 Februar 2017, 10:46:15
Schon gefunden.

Danke

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 12 Februar 2017, 09:18:39
Hallo zusammen.

So, jetzt läuft es soweit.
Habe da aber noch ne Frage. Kann man aus dem Momentanwert in KWh auf die aktuelle Leistung berechnen ?
Wenn ja, wie ?

Gruß und Danke
Sascha 
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: accloginsell am 16 Februar 2017, 07:52:19
Servus,

na klar geht dies:

anbei mein notify.. Vielleicht manchmal etwas umständlich aber funktioniert super:

define StromverbrNoti notify ESPEasy_Stromcount_Watt:.* {\
my $StromUmlaufzeit = ReadingsVal("ESPEasy_Stromcount_Watt","Time","0") / 1000;;\
my $Stromwohnung = ReadingsVal("Strom1","StromverbrauchWatt1","0");;\
my $Stromwohnung1 = ReadingsVal("Strom","StromverbrauchWatt","0");;\
my $StromProStd=3.6/$StromUmlaufzeit;;\
my $StromProStdRounded=int(1000 * $StromProStd + 0.5) / 600;;\
my $Stromkeller1 = ($Stromwohnung1 - $Stromwohnung);;\
my $StromProTag = ReadingsVal("ESPEasy_Stromcount_Watt","Total","0") / 600;;\
my $StromKosten = $StromProTag * 0.29;;\
my $zaehler_vortag_kosten_e = ReadingsVal("Strom","zaehler_vortag_kosten","0") * 0.29;;\
my $StromKostenJahr= ($StromProTag * 0.29) * 360;;\
my $StromKostenMin= $StromProStdRounded * 0.29;;\
my $StromWatt = $StromProStdRounded * 1000;;\
my $Summe = ReadingsVal("Strom","zaehler_vortag","0") + (ReadingsVal("ESPEasy_Stromcount_Watt","Total","0") / 600);;\
fhem("set Strom zaehler_jetzt $Summe");;;;\
fhem("set Strom StromverbrauchStd $StromProStdRounded");;;;\
fhem("set Strom StromverbrauchTag $StromProTag");;;;\
fhem("set Strom StromverbrauchWatt $StromWatt");;;;\
fhem("set Strom StromverbrauchKosten $StromKosten");;;;\
fhem("set Strom StromkostenJahr $StromKostenJahr");;;;\
fhem("set Strom StromkostenMin $StromKostenMin");;;;\
fhem("set Strom Stromkostenkeller $Stromkeller1");;;;\
fhem("set Strom zaehler_vortag_kosten_euro $zaehler_vortag_kosten_e");;;;\
fhem("set Strom1 $Stromwohnung W");;;;\
fhem("set Strom $Stromwohnung1 W");;;;\
}



Leider habe ich glaube ein kleines Masseproblem..

Sporadisch kommt mal ein Wert von 30KW raus. Leider jeden Tag merhfach.
Neues Netzteil hat etwas abhilfe geschaft. Leider nicht komplett weg und macht jeden Graphen kaputt. Hat jemand eine Idee


EDIT: kleiner Tipp wer wie ich auf MQTT verzichten will... --> ESPEASY
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: SusisStrolch am 16 Februar 2017, 12:18:06
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...
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: accloginsell am 16 Februar 2017, 12:30:04
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: fl_Indigo am 27 April 2017, 10:18:10
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: dev0 am 27 April 2017, 10:37:25
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")
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: fl_Indigo am 27 April 2017, 11:11:19
guter vorschlag, danke!
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Octopus180 am 29 April 2017, 11:25:31
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: fl_Indigo am 29 April 2017, 12:00:02
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Octopus180 am 29 April 2017, 13:41:10
Danke, werde ich testen.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: jnewton957 am 29 April 2017, 21:32:22
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 29 April 2017, 21:35:24
Pro Eingang einen Zähler.

Gesendet von dem teuren ding in meiner hand

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: majorshark am 29 April 2017, 22:54:49
Mit Aussnahme von GPIO16, da dieser meines Wissens keine Interrupt Funktionen unterstützt.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: fl_Indigo am 05 Mai 2017, 10:03:28
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:.*
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: xps am 23 Mai 2017, 16:54:17
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.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 02 Juli 2017, 10:41:25
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: jeti am 02 Juli 2017, 11:36:29
Hast recht, sorry.
Ist gelöscht um hier nicht weiter zu verwirren.

Gruß
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 12 November 2017, 11:20:06
Hab ein paar Modifikationen vorgenommen.
Hab sie im 1. Post hinterlegt unter EDIT:
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 17 November 2017, 12:35:06
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 17 November 2017, 14:55:42
Hilf mir mal auf die Sprünge und sag mir wie man das berechnet.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 17 November 2017, 15:21:27
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;
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 18 November 2017, 08:37:26
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

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 18 November 2017, 09:16:06
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.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag 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

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 18 November 2017, 10:02:35
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

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 18 November 2017, 11:23:08
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 (https://forum.fhem.de/index.php/topic,61731.msg541370.html#msg541370)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 18 November 2017, 13:30:22
Habe keinen 100nf Kondensator. Habe im Moment nen 4k7 Widerstand drauf. Werde ihn bei Zeiten mal tauschen

Gesendet von meinem E6653 mit Tapatalk

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: bismosa am 20 November 2017, 13:57:20
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 20 November 2017, 14:35:09
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)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: bismosa am 20 November 2017, 17:10:15
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

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 20 November 2017, 17:48:38
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: bismosa am 21 November 2017, 13:04:40
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
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 03 Dezember 2017, 13:59:15
Zitat von: pink99panther am 18 November 2017, 11:23:08
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 (https://forum.fhem.de/index.php/topic,61731.msg541370.html#msg541370)
So. Habe mir meine Zähler nochmal angeschaut und gleich das neue espeasyMega geflasht.

Da bin ich doch der Produktbeschreibung verfallen, wovon 1000 Impulsen je KWh die Rede war. Auf dem Zähler stand dann 0,5 KWh pro Impuls, sprich 2000 Impulse je KWh. Habe dann Das notify angepasst und jetzt funktioniert es auch richtig. Auch mit der Leistungsmessung.

Was sagt uns das? Nicht immer auf die Produktbeschreibung vertrauen.

Gruß Sascha

Gesendet von meinem SM-T560 mit Tapatalk

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: smoudo am 09 Januar 2018, 22:28:57
Tolles projekt! Ich habe das ganze mal nachgebaut und am Wemos D1 mini an:
pin D6 den Stromzähler via Lichtschranke
pin D7 den Wasserzähler via Näherungssensor
pin D5 den Gaszähler via Reedkontakt und zusätzlichem Pullup 10k

angeschlossen.
FHEM seitig habe ich den Code von fl_Indigo genommen. HAt mir am besten gefallen das alles nur in einem Device ist.
Die readings werden über espeasy und dem easyesp Modul auch sauber gefüttert.

Jetzt habe ich allerdings das problem das ich perl warnings bekomme:


2018.01.09 22:09:44 1: PERL WARNING: Deep recursion on subroutine "main::readingsSingleUpdate" at fhem.pl line 2235.
2018.01.09 22:09:44 1: PERL WARNING: Deep recursion on subroutine "main::readingsEndUpdate" at fhem.pl line 4555.
2018.01.09 22:09:44 1: PERL WARNING: Deep recursion on subroutine "main::fhem" at (eval 10700) line 1.
2018.01.09 22:09:44 1: PERL WARNING: Deep recursion on subroutine "main::AnalyzeCommandChain" at fhem.pl line 3519.
2018.01.09 22:09:44 1: PERL WARNING: Deep recursion on subroutine "main::AnalyzeCommand" at fhem.pl line 1022.
2018.01.09 22:09:44 1: PERL WARNING: Deep recursion on subroutine "main::CommandSetReading" at fhem.pl line 1168.
Out of memory!


Dannach ist FHEM nicht mehr erreichbar. Der Host läuft aber noch. nach einem sudo /etc/init.d/fhem start
ist FHEM sofort wieder da.
Hat jemand schon was ähnliches gehabt? wo kommt das her?

Viele Grüße

Matze

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: ChristianK. am 11 Januar 2018, 10:20:24
Ich schliesse mich hier mal an... habe das identische Problem  :-\

Grüße
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 11 Januar 2018, 11:09:50
Wäre euer Problem nicht besser im "easyesp Modul" thread aufgehoben?

Gruß
Manfred
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: smoudo am 11 Januar 2018, 17:12:11
Meinst du es hängt am easyesp Modul oder am verwendeten Perl Code?
RAM mäßig kann ich eigentlich keine Probleme feststellen. Da hab ich durchgängig 1500mb frei.
Sieht für mich nach irgendeiner Begrenzung der Perl libs aus.


Viele Grüße

Matze
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: noob70 am 30 Januar 2018, 18:17:37
Hallo,
ich verfolge das hier mit großem Interesse - leider gelingt es mir nicht, die Impulse von meinem Zählert
https://www.eltako.com/fileadmin/downloads/de/_bedienung/DSZ12D-3x80A_28380612-1_dt.pdf (https://www.eltako.com/fileadmin/downloads/de/_bedienung/DSZ12D-3x80A_28380612-1_dt.pdf) zu lesen.
Der Aufbau sollte ja so sein:
ZitatDer Ausgang S0+ wird mit den 3,3V (VCC) des ESP verbunden.
Der S0- wird mit dem GPIO der als Zähleingang definiert wurde verbunden.
Außerdem wird ein Widerstand 1 bis 5 kOhm von diesem GPIO gegen GND angebracht.
Daraufhin habe ich es wie im im Bild aufgebaut (hab soetwas noch nie zusammengebaut...):

Einstellung ein EasyESP

Hardware/GPIO boot states: 12 (D6) auf Input
Devices:
generic Pulse Couinter
1st GPIO: GPIO-12 (D6)
Debounce Time (mSec) 10
Counter Type: Delta/Tolat/Time
Mode Type: Falling

Send To Controller (enabled)
Delay 10 s


Es wird aber nichts gezählt. Ich steh da wie der Ochs vor'm Berg – was habe ich übersehen ???
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: fl_Indigo am 30 Januar 2018, 18:24:05
S0- ghört auf D6 und nicht auf GND, dann sollts funzen ;)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: noob70 am 30 Januar 2018, 18:58:05
oh man - danke.
Da war viel Ochs und wenig Berg  :-[
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Dr.E.Witz am 13 Januar 2019, 19:20:05
Hallo zusammen,

wenn ich eine einen anderen Puls pro Counter habe, muss ich ja ein paar werte anpassen.
Das  wurde ja unter #44 bereits gemacht allerdings auch für diese Zeile.

$StromProStdRounded=int(1000 * $StromProStd + 0.5) / 1000;
in
$StromProStdRounded=int(1000 * $StromProStd + 0.5) / 600;

Wenn ich das richtig verstehe, ist das doch nur eine Rundungsfunktion, oder?

Desweiteren würde ich gerne einer Variable dafür einsetzen.

ist das dann so IO?

PulsStrom {
my $PulseProkWh =75;
my $StromUmlaufzeit = ReadingsVal("PulsStrom","Time","0") / 1000;
my $count = ReadingsVal("PulsStrom","Count","0");
my $StromProStd=0;
if ($StromUmlaufzeit > 0){
$StromProStd=3.6/$StromUmlaufzeit;
}
my $StromProStdRounded=0;
if($count > 0){$StromProStdRounded=int(1000 * $StromProStd + 0.5) / 1000;
}
my $StromProTag = ReadingsVal("PulsStrom","Total","0") / $PulseProkWh;
fhem("set Strom StromverbrauchStd $StromProStdRounded");;
fhem("set Strom StromverbrauchTag $StromProTag");;
}


Gerne würde ich auch den Anfangszählerstand irgendwo eintragen bzw. die gesammelten werte auf 0 setzen.
Ein Blick auf #56 hat mir nicht wirklich geholfen.
Mein Gedanke wäre hier ein Atribut "ZaelerOffset" zu ´setzen und den gesetzten Wert dann zu addieren im StromverbrNoti zu addieren.
Auch dabei wäre ein "unter die Arme greifen" klasse :-)

Danke für Tipps!

Michael




Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Neuhier am 16 April 2019, 18:23:41
Was ist das nebulöse S0- und S0+ ?
Fotodiode?
Lesekopf?
Irgendwasspezielles?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 16 April 2019, 21:09:26
Erklärung gibt es hier (https://de.wikipedia.org/wiki/S0-Schnittstelle)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Neuhier am 16 April 2019, 21:51:58
S0+ und S0- sind Anschlüsse am Stromzähler.  ::)

Das Bild im Link zeigt u.a. einen Fototransistor, mit Widerstand und Diode in Reihe.
Die Seite hatte ich mittlerweile auch gefunden.
Ich dachte, das hast Du nachgebaut.


Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: joewanne am 09 Juni 2019, 09:37:04
Zitat von: fl_Indigo am 05 Mai 2017, 10:03:28
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:.*


Erstmal gute Arbeit.
Funktioniert 1a!!!
Habe aber noch eine Frage, gibt es die Möglichkeit, den Zählerstand anzupassen ???
Wenn ja, wie kann ich das machen?

Liebe Grüße Jörg

**EDIT**
Habs gefunden!
setreading ist die Lösung
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: joewanne am 10 Juni 2019, 08:27:16
Ich habe mich wohl zu früh gefreut, heute Nacht habe ich folgende Fehler bekommen.


2019.06.10 00:00:06 1: PERL WARNING: Deep recursion on subroutine "main::readingsEndUpdate" at fhem.pl line 4913.
2019.06.10 00:00:06 3: eval: { my $Strom_Gesamt = ReadingsVal("$name", "StromverbrauchHeute", 0) + (ReadingsVal("$name", "Count", 0)/1000); fhem ("setreading ESPEasy_ESP_Easy_1_Watt StromverbrauchHeute $Strom_Gesamt"); }
2019.06.10 00:00:06 1: PERL WARNING: Deep recursion on subroutine "main::fhem" at (eval 34139) line 1.
2019.06.10 00:00:06 3: eval: { my $Strom_Gesamt = ReadingsVal("$name", "StromverbrauchHeute", 0) + (ReadingsVal("$name", "Count", 0)/1000); fhem ("setreading ESPEasy_ESP_Easy_1_Watt StromverbrauchHeute $Strom_Gesamt"); }
2019.06.10 00:00:06 1: PERL WARNING: Deep recursion on subroutine "main::AnalyzeCommandChain" at fhem.pl line 3790.
2019.06.10 00:00:06 3: eval: { my $Strom_Gesamt = ReadingsVal("$name", "StromverbrauchHeute", 0) + (ReadingsVal("$name", "Count", 0)/1000); fhem ("setreading ESPEasy_ESP_Easy_1_Watt StromverbrauchHeute $Strom_Gesamt"); }
2019.06.10 00:00:06 1: PERL WARNING: Deep recursion on subroutine "main::AnalyzeCommand" at fhem.pl line 1085.
2019.06.10 00:00:06 3: eval: { my $Strom_Gesamt = ReadingsVal("$name", "StromverbrauchHeute", 0) + (ReadingsVal("$name", "Count", 0)/1000); fhem ("setreading ESPEasy_ESP_Easy_1_Watt StromverbrauchHeute $Strom_Gesamt"); }
2019.06.10 00:00:06 1: PERL WARNING: Deep recursion on subroutine "main::CommandSetReading" at fhem.pl line 1232.
2019.06.10 00:00:06 3: eval: { my $Strom_Gesamt = ReadingsVal("$name", "StromverbrauchHeute", 0) + (ReadingsVal("$name", "Count", 0)/1000); fhem ("setreading ESPEasy_ESP_Easy_1_Watt StromverbrauchHeute $Strom_Gesamt"); }
2019.06.10 00:00:06 1: PERL WARNING: Deep recursion on subroutine "main::readingsSingleUpdate" at fhem.pl line 2411.
2019.06.10 00:00:06 3: eval: { my $Strom_Gesamt = ReadingsVal("$name", "StromverbrauchHeute", 0) + (ReadingsVal("$name", "Count", 0)/1000); fhem ("setreading ESPEasy_ESP_Easy_1_Watt StromverbrauchHeute $Strom_Gesamt"); }
2019.06.10 00:05:05 1: PERL WARNING: Argument "Error evaluating ESPEasy_ESP_Easy_1_Watt userReading Str..." isn't numeric in sprintf at (eval 238805) line 1.
2019.06.10 00:05:05 3: eval: { my $Strom_Gesamt = ReadingsVal("$name", "StromverbrauchHeute", 0) + (ReadingsVal("$name", "Count", 0)/1000); fhem ("setreading ESPEasy_ESP_Easy_1_Watt StromverbrauchHeute $Strom_Gesamt"); }
2019.06.10 00:05:07 1: PERL WARNING: Argument "Error evaluating ESPEasy_ESP_Easy_1_Watt userReading Str..." isn't numeric in sprintf at (eval 238806) line 1.
2019.06.10 00:05:07 3: eval: { my $Strom_Gesamt = ReadingsVal("$name", "StromverbrauchHeute", 0) + (ReadingsVal("$name", "Count", 0)/1000); fhem ("setreading ESPEasy_ESP_Easy_1_Watt StromverbrauchHeute $Strom_Gesamt"); }
2019.06.10 00:05:09 1: PERL WARNING: Argument "Error evaluating ESPEasy_ESP_Easy_1_Watt userReading Str..." isn't numeric in sprintf at (eval 238807) line 1.


Die Fehler gingen über mehrere Stunden, so das sich das komplette System aufgehängt hat.
Wer kann mir hier weiterhelfen ?

Liebe Grüße
Jörg
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: joewanne am 12 Juni 2019, 10:23:08
Zitat
Leider habe ich glaube ein kleines Masseproblem..

Sporadisch kommt mal ein Wert von 30KW raus. Leider jeden Tag merhfach.
Neues Netzteil hat etwas abhilfe geschaft. Leider nicht komplett weg und macht jeden Graphen kaputt. Hat jemand eine Idee


Hallo,
konnte das 30KW Problem gelöst werden ?
Wenn ja wie.
Ich habe nämlich das gleiche Problem und bekomme es einfach nicht hin.
Würde mich über hilfe dabei sehr freuen.

Liebe Grüße
Jörg
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: fl_Indigo am 13 Juni 2019, 11:47:55
Zitat von: joewanne am 10 Juni 2019, 08:27:16
Die Fehler gingen über mehrere Stunden, so das sich das komplette System aufgehängt hat.
Wer kann mir hier weiterhelfen ?

Liebe Grüße
Jörg

hatt nach irgendeinem fhem update dieselben probleme wie du gerade. da war irgendwas mit readings die verschachtelt gesetzt wurden und das eigentlich nicht so vorgesehen ist
hab dann die config angepasst, weiß aber nimmer genau was.
ich häng hier einfach nochmal meine aktuelle config an, die läuft und ist mit manueller zählerstandsanpassung (absolut, d.h. einfach aktuell richtigen zählerstand eintragen)
achtung, ist direkt aus der cfg rauskopiert!


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 120
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
attr ESPEasy_ESP8266_Server_S0_Watt setState 3
attr ESPEasy_ESP8266_Server_S0_Watt stateFormat { sprintf("Zählerstand: %.2f kWh<br>Verbrauch heute/gestern/vorgestern: %.2f/%.2f/%.2f kWh<br>Stromverbrauch aktuell: %.2f W<br>Durchschnittsverbrauch Heute/Gestern/Vorgestern %.2f/%.2f/%.2f Wh<br>Gesamtverbrauch dieses Monat/letzter Monat: %.2f/%.2f kWh", (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeute",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchGestern",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchVorgestern",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchAktuell",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeuteDurchschnitt",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchGesternDurchschnitt",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchVorgesternDurchschnitt",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand_EnergyMonth",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand_EnergyMonthLast",0)) ) }
attr ESPEasy_ESP8266_Server_S0_Watt userReadings StromverbrauchAktuell:Time:.* { 3600/ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "Time", 0)*1000 },\
ZaehlerStand:Time:.* { ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeute", 0) + ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStandVortag", 0);; },\
StromverbrauchHeute:Time:.* { my $Strom_Gesamt = (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeute", 0)*1000 + ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "Count", 0) + ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeuteOffset",0)*1000)/1000;; return $Strom_Gesamt;; },\
StromverbrauchHeuteDurchschnitt:Time:.* { my $timestamp_now = time_str2num(nowdate());; my $timestamp_midnight = time_str2num(ReadingsTimestamp("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchGestern","0"));; my $timestamp_diff = ($timestamp_now - $timestamp_midnight)/3600;; my $Stromverbrauch_Heute = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchHeute","0")*1000;; my $Stromverbrauch_Heute_durchschnitt = $Stromverbrauch_Heute/$timestamp_diff;; return $Stromverbrauch_Heute_durchschnitt;; },\
StromverbrauchGesternDurchschnitt:StromverbrauchGestern:.* { my $Stromverbrauch_Gestern = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchGestern","0")*1000;; my $Stromverbrauch_Gestern_durchschnitt = $Stromverbrauch_Gestern/24;; return $Stromverbrauch_Gestern_durchschnitt;;},\
StromverbrauchVorgesternDurchschnitt:StromverbrauchVorgestern:.* { my $Stromverbrauch_Vorgestern = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchVorgestern","0")*1000;; my $Stromverbrauch_Vorgestern_durchschnitt = $Stromverbrauch_Vorgestern/24;; return $Stromverbrauch_Vorgestern_durchschnitt;;},\
ElectricityForecastToday_kWh:Time:.* { ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeuteDurchschnitt", 0)*24/1000;;},\
ElectricityConsumedThisMonthAvgDay_kWh:ZaehlerStand_EnergyMonth:.* { my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);; my $Monatsverbrauch = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand_EnergyMonth", 0);; my $Monatsverbrauchdurchschnitt = $Monatsverbrauch/$mday;; return $Monatsverbrauchdurchschnitt;;},\
StromverbrauchHeuteOffset:StromverbrauchHeute.* {return 0;;}
attr ESPEasy_ESP8266_Server_S0_Watt verbose 0

define at_ESPEasy_ESP8266_Server_S0_Watt_reboot at *00:00:00 {\
my $Zaehler_Stand = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","ZaehlerStand","0");;\
my $Zaehler_Stand_Vortag = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","ZaehlerStandVortag","0");;\
my $Stromverbrauch_Heute = $Zaehler_Stand - $Zaehler_Stand_Vortag;;\
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 ("set ESPEasy_ESP8266_Server_S0_Watt reboot");; }

define ESPEasy_ESP8266_Server_S0_Watt_Offset dummy
attr ESPEasy_ESP8266_Server_S0_Watt_Offset alias Serverrack
attr ESPEasy_ESP8266_Server_S0_Watt_Offset group Zählerstand Korrektur
attr ESPEasy_ESP8266_Server_S0_Watt_Offset readingList state
attr ESPEasy_ESP8266_Server_S0_Watt_Offset room 15_ESPEasy
attr ESPEasy_ESP8266_Server_S0_Watt_Offset setList state:textField
attr ESPEasy_ESP8266_Server_S0_Watt_Offset stateFormat Zählerstand Server wirklich state
attr ESPEasy_ESP8266_Server_S0_Watt_Offset webCmd state

define n_ESPEasy_ESP8266_Server_S0_Watt_Offset notify ESPEasy_ESP8266_Server_S0_Watt_Offset:.* { \
my $zaehlerstandaktuell = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand", 0);;\
my $offset=$EVENT-$zaehlerstandaktuell;;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchHeuteOffset $offset") }

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:.*

define ESPEasy_ESP8266_Server_S0_Watt_EC ElectricityCalculator ESPEasy_ESP8266_Server_S0_Watt:ZaehlerStand:.*
attr ESPEasy_ESP8266_Server_S0_Watt_EC BasicPricePerAnnum 0
attr ESPEasy_ESP8266_Server_S0_Watt_EC Currency €;
attr ESPEasy_ESP8266_Server_S0_Watt_EC ElectricityCounterOffset 0
attr ESPEasy_ESP8266_Server_S0_Watt_EC ElectricityKwhPerCounts 1
attr ESPEasy_ESP8266_Server_S0_Watt_EC ElectricityPricePerKWh 0.19
attr ESPEasy_ESP8266_Server_S0_Watt_EC MonthOfAnnualReading 12
attr ESPEasy_ESP8266_Server_S0_Watt_EC MonthlyPayment 0
attr ESPEasy_ESP8266_Server_S0_Watt_EC ReadingDestination CounterDevice
attr ESPEasy_ESP8266_Server_S0_Watt_EC SiPrefixPower W
attr ESPEasy_ESP8266_Server_S0_Watt_EC event-on-change-reading .*
attr ESPEasy_ESP8266_Server_S0_Watt_EC room 15_ESPEasy
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: joewanne am 13 Juni 2019, 14:49:56
Hallo fl_Indigo,

erst mal Danke für die Hilfe.
Ich habe das mit deinem Code getestet, doch leider
habe ich da den gleichen Fehler.
.....

Nach längerem Testen, viel mir auf, das der Fehler immer dann ist wenn der at Befehl läuft.
Habe dann alles ausprobiert.
Ich habe dann letztendlich den reboot von dem ESP ausgenommen.
Jetzt scheint es  zufunktionieren.


Liebe Grüße
Jörg
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: C_hris am 20 September 2019, 16:45:23
Hi zusammen,

richtig cooles Projekt. Danke schon mal dafür. :)
Habe mir eben erst mal folgendes ESP Board bestellt. Sollte morgen da sein. Ich hoffe es ist dann auch das richtige:

https://www.amazon.de/gp/product/B06Y1LZLLY/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1


Jetzt suche ich aber noch nach einem Sensor, mit dem ich dann die blinkende LED an meinem digitalen Drehstromzähler (Logarex LK13BD202025) abfragen kann. Habt ihr Tipps für mich. Finde grade leider nichts passendes. :(

VG,
Chris
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 20 September 2019, 18:27:26
Hallo C_hris,

der Logarex LK13B hat "leider" keine S0-Schnittstelle.
Aber, wenn ich das auf die Schnelle richtig recherchiert habe
eine OBIS-Schnittstelle.
Damit kannst Du viel mehr anfangen.
Such mal hier im Forum nach OBIS

LG
p99p
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: C_hris am 24 September 2019, 13:40:08
Danke p99p. :)

Ich habe da was von vitilinker gefunden. Das wäre ja dann eine Möglichkeit das so nachzubauen:

https://forum.fhem.de/index.php/topic,82454.0.html

Jetzt muss ich nur den richtigen und bezahlbaren IR Kopf finden und dann teste ich das mal.
Vielen Dank nochmal.

P.S.: Wenn doch noch jmd. nen brauchbaren Sensor kennt um die Impulse der LED Lampe auszulesen.........bin auch hier noch für Tipps dankbar. :)

VG,
Chris
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 24 September 2019, 15:06:50
Schaust mal hier:https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf (https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf)
und fragst mal bei Nils per Mail nach nils.volksz@gmail.com.
Da hab ich den für meinen Hauptzähler auch her.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: C_hris am 25 September 2019, 08:17:31
Danke dir. Ich hab ihn mal angefragt. :)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Kunstflieger am 28 Oktober 2019, 07:52:45
Hallo Zusammen,
Ein sehr interessantes Projekt. Ich lese meinen Zähler derzeit mit einem RPI und Node Red aus. Nun wollte ich gerne als Hardware eine NodeMCU einsetzen und alle Werte per MQTT versenden. Allerdings wollte ich es unabhängig von FHEM machen.
Leider komme ich mit der Beschreibung von pink99panther nicht ganz zurecht. Welche Bilder sind hier gemeint?
Wie richte ich den Sensor in ESPEasy als Gerät ein?
Für Hilfe wäre ich euch sehr dankbar.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: rieders am 12 April 2020, 13:05:08
Hallo

Ich habe im Garten jetzt einen neuen Stromzähler mit S0 Anschluss.

Im Forum habe ich jetzt gelesen das mit einem esp 8266 01 es möglich ist die counter per mqtt zu senden.
Ein 5v Netzteil für Hutschiene ,ein 3.3 v Spannungswandler L78L33ACZ und ein Leergehäuse für Hutschiene habe ich schon bestellt.
Auf dem esp habe ich espeasy installiert.

Meine Frage ist,  der s0+ soll 5v haben.
Muss ich am s0- ein 10kohm Widerstand verbauen?
Wie müsste die Schaltung aussehen?

Viele Dank schon mal für die Hilfe.

Grüße André
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 12 April 2020, 13:25:38
Zitat von: rieders am 12 April 2020, 13:05:08
Hallo

Ich habe im Garten jetzt einen neuen Stromzähler mit S0 Anschluss.

Im Forum habe ich jetzt gelesen das mit einem esp 8266 01 es möglich ist die counter per mqtt zu senden.
Ein 5v Netzteil für Hutschiene ,ein 3.3 v Spannungswandler L78L33ACZ und ein Leergehäuse für Hutschiene habe ich schon bestellt.
Auf dem esp habe ich espeasy installiert.

Meine Frage ist,  der s0+ soll 5v haben.
Muss ich am s0- ein 10kohm Widerstand verbauen?
Wie müsste die Schaltung aussehen?

Viele Dank schon mal für die Hilfe.

Grüße André
Siehe 1. Post

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: rieders am 12 April 2020, 18:57:13
Hallo

Vielen Dank für die schnelle Antwort.
Das hatte ich schon gelesen.
Laut Bedienungsanleitung vom Stromzähler braucht er 5v an s0+.
Deshalb weiß ich nicht ob 5kohm reichen.
Nicht das es zu fehlzehlungen oder gar das der giopin abraucht.

Grüße
André
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: rieders am 16 April 2020, 11:32:15
Hallo

Ich habe jetzt eine Schaltung mit 5v an S0+ gebaut.
Wenn ich am (ESP8266 01) GPIO 2 S0- anschließe bekomme ich keine Verbindung mehr zum Netzwerk.
Wenn ich das Kabel mit dem Widerstand (10K) der auf GND geklemmt ist entferne, bekomme ich wieder eine Verbindung.
GPIO 0 habe ich als WLAN LED genommen.
Muss ich beim ESPeasy noch was einstellen?

Grüße
André

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: rieders am 18 April 2020, 17:30:44
Hallo

Ich habe jetzt den Fehler gefunden und die Daten werden an FHEM gesendet.
Am ESP habe ich unter dem Gerät schon die Counts in KW/h errechnen lassen ( Formel (%value%/400)+ offset).
Nur bei der Berechnung der Leistung habe ich keine Werte. ( meine Formel %value%*3600/10)

Ich hoffe mir kann da jemand weiter helfen.

Grüße

André
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 18 Mai 2020, 00:24:31
Hallo!
Ich möchte den S0 von meinem Wechselstromzähler an einen sOnOff Basic anschließen.

Zuerst einmal 2 wahrscheinlich blöde Fragen:

Was der S0 liefert, also diese 1000 Impulse, ist das 1000 Mal öffnen und schließen?
Könnte ich das vorab am sOnOff simulieren?
Ein "plumpes" Überbrücken von 3,3 V auf GPIO bringt ja nur einen Kurzschluss denke ich...

Ein weiteres Problem könnte auch sein, dass der sOnOff nur 3,3 Volt liefert, die S0 vom Drehstromzähler aber 5V haben möchte?

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 18 Mai 2020, 12:08:25
So, jetzt bin ich vollkommen verwirrt  :'(

Hatte den Verkäufer meines Wechselstromzählers angeschrieben bezüglich der 3,3 Volt.
Der Zähler ist ein SDM72D.

Dieser schrieb mir, dass auf den S0+ kein Strom gegeben werden dürfte, auch keine 3,3 Volt.
Es würde ein 5 Volt Impuls vom Zähler ausgegeben...

Jetzt verstehe ich nur noch Bahnhof.

Kann bitte jemand Licht ins Dunkel bringen?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 18 Mai 2020, 21:50:55
Wenn das so ist, dann den s0+auf den Zähler Eingang des ESP und den s0- mit Gnd des ESP verbinden.
Dann sollte es klappen.

Gesendet von Handy

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 18 Mai 2020, 23:35:27
Hi,

@B.Stromberg: mir wird beim Lesen mulmig :(

Der SO Ausgang des Zählers ist nur ein (elektronischer) Kontakt der Impulsartig zwischen S0+ und S0- schliesst. Der liefert keine Spannung - der Verkäufer sollte zu anderen Produktarten wechseln. ;D
Typischerweise verbindet man S0+ mit dem Pluspol der Logikspannung und der Zähler gibt am S0- einen positiven Impuls aus. Also man kann z.B. einen Pull Down Widerstand am Logikeingang haben und den S0- auf den Eingang geben, dabei darf die Spannung am S0+ nicht höher als der zulässigen Logikpegel sein.
Oder man macht es so wie sash.sc gesagt hat. Dann braucht man aber einen PullUp zum Logikpegel.
Im Handbuch des Zählers steht das der Kontakt! 5-27 Volt verträgt. Der Eingang vom ESP verträgt nur 3,3 !
https://bg-etech.de/download/manual/SDM72D-M-DE.pdf

ABER ABER ABER

Der Sonoff hat keine Potentialtrennung:
ZitatEin "plumpes" Überbrücken von 3,3 V auf GPIO bringt ja nur einen Kurzschluss denke ich...
Im besten Fall gibt es einen Kurzen und das Licht ist aus oder irgendetwas qualmt. Im schlimmsten Fall geht das Licht beim Operator aus!!!

Also keine solchen Teile wie Sonoff Basic für solche Spielchen nehmen! Keine Experimente wenn man sich mit Strom nicht wirklich auskennt!

Gruß  Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 19 Mai 2020, 01:21:06
Zitat von: Otto123 am 18 Mai 2020, 23:35:27
Hi,

@B.Stromberg: mir wird beim Lesen mulmig :(

Der SO Ausgang des Zählers ist nur ein (elektronischer) Kontakt der Impulsartig zwischen S0+ und S0- schliesst. Der liefert keine Spannung - der Verkäufer sollte zu anderen Produktarten wechseln. ;D
Typischerweise verbindet man S0+ mit dem Pluspol der Logikspannung und der Zähler gibt am S0- einen positiven Impuls aus. Also man kann z.B. einen Pull Down Widerstand am Logikeingang haben und den S0- auf den Eingang geben, dabei darf die Spannung am S0+ nicht höher als der zulässigen Logikpegel sein.
Oder man macht es so wie sash.sc gesagt hat. Dann braucht man aber einen PullUp zum Logikpegel.
Im Handbuch des Zählers steht das der Kontakt! 5-27 Volt verträgt. Der Eingang vom ESP verträgt nur 3,3 !
https://bg-etech.de/download/manual/SDM72D-M-DE.pdf

ABER ABER ABER

Der Sonoff hat keine Potentialtrennung:Im besten Fall gibt es einen Kurzen und das Licht ist aus oder irgendetwas qualmt. Im schlimmsten Fall geht das Licht beim Operator aus!!!

Also keine solchen Teile wie Sonoff Basic für solche Spielchen nehmen! Keine Experimente wenn man sich mit Strom nicht wirklich auskennt!

Gruß  Otto

Danke Otto, für die sehr ausführliche Antwort.

Was würdest du denn zum "abgreifen" des S0 von diesem Wechselstromzähler empfehlen?
Eigentlich ist doch eine NodeMCU auch nichts anderes als der sOnOff, oder?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 19 Mai 2020, 08:45:35
Moin,

eine NodeMCU versorgst Du aber mit einem Potentialgetrennten und für diese offene Handling gedachte Netzteil.
Du hast schon Recht, der ESP innen ist der Gleiche.

Mir wird auch immer schlecht wenn die Leute einfach einen Temperatur Sensor an die Sonoff & Co anschließen und den mit Kabel nach außen legen. Dabei wird die Schutzisolation des Gerätes grob fahrlässig verletzt! Die Sensorschnur nach draußen führt dann lebensgefährliches Netzpotential ist aber bloß für Kleinspannung gedacht.

Nochmal aber: Dein Zähler SDM72D hat doch auch RS485 Modbus? Die Schnittstelle wäre viel besser geeignet um ihn auszulesen! Da musst Du nicht die Impulse zählen, sondern kannst wirklich "ablesen".

Gruß Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 19 Mai 2020, 12:11:47
Zitat von: Otto123 am 19 Mai 2020, 08:45:35

Mir wird auch immer schlecht wenn die Leute einfach einen Temperatur Sensor an die Sonoff & Co anschließen und den mit Kabel nach außen legen. Dabei wird die Schutzisolation des Gerätes grob fahrlässig verletzt! Die Sensorschnur nach draußen führt dann lebensgefährliches Netzpotential ist aber bloß für Kleinspannung gedacht.

Oh... Ich habe tatsächlich hier auch so einen Basic mit einen Temperatursensor und mir ehrlich gesagt da noch nie Gedanken drüber gemacht...
Der Temperatursensor ist doch im Basic aber nur an die 3,3 V sowie GPIO und GND angeschlossen.
Nehme ich nun ein Netzteil, 230 V auf 5V, ist das nicht das Gleiche?
Zwar ist das nicht im gleichen Gehäuse aber macht im Endeffekt doch auch das Gleiche.
Oder meinst du tatsächlich die örtliche Trennung, Netzteil, ESP bzw. NodeMCU?

Zitat von: Otto123 am 19 Mai 2020, 08:45:35

Nochmal aber: Dein Zähler SDM72D hat doch auch RS485 Modbus? Die Schnittstelle wäre viel besser geeignet um ihn auszulesen! Da musst Du nicht die Impulse zählen, sondern kannst wirklich "ablesen".

Gruß Otto
Ja in der Tat, mit dem Thema habe ich mich noch gar nicht beschäftigt.
Gibt es denn mit dem RS485 auch eine Möglichkeit, dass Ganze via Wlan ins Netz zu bekommen?
Am Liebsten mit Tasmota?

Hintergrund des Ganzen ist, dass ich die Werte ins Sunny Portal meines SMA Wechselrichters als Gerät exportieren möchte. Dies würde mit dem Smart Appliance Enabler passieren.
Die Werte werden dort via cm?cmnd=Status%208 ausgelesen und weiterverarbeitet (simpel ausgedrückt)

Hatte jetzt auf die Schnelle nichts gefunden in Bezug auf Tasmota und RS 485
Für weitere Hilfe wäre ich dir sehr dankbar.
Man sieht ja oft den Wald vor lauter Bäumen nicht :)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 19 Mai 2020, 13:42:06
Es sind zwei Dinge:
Schutzisolation:
Wikipedia sagt: "Die Schutzisolierung bewirkt den Schutz gegen Berühren elektrischer, unter Spannung stehender Teile, indem sie um die betriebsmäßig notwendige Basisisolierung noch eine zusätzliche Isolierung legt. "
Ich sage: Diese, vom Konstrukteur verbaute Isolation, wird durch ein Loch und einen quasi nicht gegen 230 Volt extra isolierten Draht durchbrochen. Ich weiß, das Bild ist sogar im FHEMWiki.
Das Netzteil:
Jedes externe Steckernetzteil hat eine Potentialtrennung: Beide Ausgangsleitungen Plus und GND sind gegen den Eingang 230 Volt zuverlässig getrennt.
Bei solchen Geräten wie Sonoff Basic, alles in einem Gehäuse, braucht man diesen Aufwand nicht. Man kann ein Sparnetzteil machen, dabei ist je nach Anschluss der GND entweder mit L (Phase) oder N (Null) verbunden.
Ich kenne das Netzteil im Sonoff Basic nicht, aber ich kenne die Sparindustrie. Die werden dort nichts einbauen was nicht gefordert ist. Die einzige Potentialtrennung die dort sein wird (weil sie muss) findet im Relais statt. Mit dem Innenleben kommt normal nie jemand in Berührung.

Zum Auslesen: Ich habe damit auch mal angefangen udn habe den RS485 / Modbus nicht zum laufen bekommen. Seit schiebe ich die Schaltung und die Bauteile von einer Ecke in die Andere  :-[
Aber gerade gefunden:
https://forum.fhem.de/index.php?topic=80989.0
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 19 Mai 2020, 14:10:23
Ok, dass mit der Geschichte GND gegen Phase oder Null hört sich ja wirklich abendteuerlich an, wußte ich tatsächlich nicht.

RS485 scheint dagegen eher eine Einbahnstraße zu sein, für das was ich vorhabe...

Also wäre nun das Einfachste eine NodeMCU mit ESP zu nehmen mit einem 5 Volt Netzteil.
Auf die NodeMCU geht meines Wissens nach auch Tasmota.

Muss ich mal in meiner Kiste kramen.
Habe glaube noch so ein Teil rumliegen, hatte seinerzheit mit meinen Jarolift Funkmotoren (Rolläden) so eine Schaltung gebastelt und mir gleich mehrere Node und ESP bestellt.

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 19 Mai 2020, 14:15:27
Zitat von: B.Stromberg am 19 Mai 2020, 14:10:23
RS485 scheint dagegen eher eine Einbahnstraße zu sein, für das was ich vorhabe...
Warum?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 19 Mai 2020, 17:19:36
In Bezug auf das Sunny Portal und die Übermittlung der Daten via..........tja.........via was ?
Müßte irgendwas mit Tasmota sein, via http abfragbar.....
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 19 Mai 2020, 21:55:14
Du wirfst die Flinte aber schnell ins Korn :)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 20 Mai 2020, 00:09:17
Ach naja...
Du hast ja eigentlich schon die richtigen Denkanstöße gegeben.
Es wird wohl auf die S0 NodeMCU / ESP Anbindung hinauslaufen.

Zeit ist auch ein Faktor und meine Skills in Bezug auf die Thematik eher begrenzt.
Dann müßte ich mir quasi Wissen und Code an anderer stelle "erbetteln" und das macht ja auch keinen Spaß.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 20 Mai 2020, 11:13:25
Ich denke die Modbus Anbindung ist das Eine, die Übertragung der Daten zu FHEM das Andere. Das muss auch mit Tasmota oder sonst was gehen.
Die S0 Anbindung habe ich schon seit Jahren. Ist irgendwie Pflegeinstensiv und ich verliere die Lust daran. Weil es ja eigentlich ein Vehikel ist.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: sash.sc am 20 Mai 2020, 11:20:47
Ich hatte nen wemos d1 Mini an einem Zähler mit s0 Schnittstelle und espeasy drauf. Danke hat man die Daten bzw Impulse ohne Probleme nach fhem bekommen. Tasmota sollte sich ohne Probleme möglich sein.

Gesendet von Handy

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 25 Mai 2020, 01:35:34
Zitat von: sash.sc am 20 Mai 2020, 11:20:47
Ich hatte nen wemos d1 Mini an einem Zähler mit s0 Schnittstelle und espeasy drauf. Danke hat man die Daten bzw Impulse ohne Probleme nach fhem bekommen. Tasmota sollte sich ohne Probleme möglich sein.

Gesendet von Handy

So, habe in meiner Grabbelkiste noch einen ESP8266 gefunden und flux mal esp Easy Flashes installiert.
Das Standard 4M bin geflashed.

Soweit läuft das alles.

Nun habe ich, bevor ich das an den S0 vom Zähler anklemme (der immer noch nicht verbaut ist, typisch Handwerker) einfach mal die Kabel von D5 und 3,3V via Taster verbunden.

Von GND nach D5 ist ein Widerstand, Gelb, Lila, Rot, also 4,7 K Ohm.

Drücke ich nun den Taster, sollte da nicht eigentlich gezählt werden?
Bin da etwas überfordert in Bezug auf Debounce Time, Mode Type.

Bei Hardware muss ich bei Pin mode GPIO-14 (D5): Input machen, oder?

Wäre cool wenn mir hier jemand die Einstellungen für den SDM 72 nennen könnte, wobei ist S0 nicht ein Standard?
Sollte das dann nicht bei jedem Zähler gleich sein?

Wie @Otto123 ja schon geschrieben hat, fungiert doch der S0 nur als Schließer.

Ergo müsste das mit dem Taster doch auch funktionieren, oder sehe ich hier etwas falsch?


EDIT:
Ich lese auch recht häufig, dass zum Anheben des Pegels der Widerstand der Signalleitung an VCC, also an 3,3 V gelegt wird.
Hier in dem Beispiel ist es GND???

Ach Gott, warum ist das alles bloß so kompliziert?

EDIT2:
Ich habe nun dieses Video hier auf Youtube gefunden:

https://www.youtube.com/watch?v=GlWSW4emEy4 (https://www.youtube.com/watch?v=GlWSW4emEy4)
Bei Minute 3:20 erklärt er, wie er den S0 angeschlossen hat.
Nur an GND und D5. Ohne Widerstand.
Ich habe das nun so ausprobiert und bekomme nun Zählwerte angezeigt.
Ein ähnliches Verhalten hatte ich damals auch mit dem sOnOff festgestellt.

Gibt es verschiedene Versionen von den ESP Boards?
Aber eigentlich sollte doch der Anschluss gleich sein oder?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 25 Mai 2020, 09:09:28
Hi,

die ESPs haben intern Pull Up Widerstände (Wie Arduino und Raspberry) unter Umständen sind diese an/ab schaltbar. Auch schaltbare pull down Widerstände können vorhanden sein.
Der Wert dieser Widerstände ist meist nicht genau spezifiziert, beim ESP wird glaube ich ein Bereich von 30 - 100 kOhm angegeben.

Was Du jetzt  hast: Du nutzt einfach den internen Pull up Widerstand und es funktioniert. ;)

Dein Widerstand nach GND wird wohl mit dem internen einen Spannungsteiler gebildet haben, damit war der Logikpegel nicht mehr klar.

Gruß Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 25 Mai 2020, 10:46:37
Hi,
habe bei mir den Pin auf Default stehen. Bei der stellung Input ist da glaube ich auch, ein Pullup aktiv.
Kleine Anmerkung: die Anzeige der Devices aktualisiert sich nicht alleine.
Um Zählergebnisse zu sehen Seite neu laden!

LG
p99p
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 25 Mai 2020, 13:15:27
Danke Jungs für die Rückantworten! :)

Das mit Default und Input habe ich jetzt so noch nicht ausprobiert.

Bin gespannt, was dabei herauskommt, wenn der ESP am Zähler hängt...

Ja, dass ich erst F5 drücken muss um Ergebnisse zu sehen hatte ich schon gemerkt.

Parallel hatte ich auch Tasmota installiert, da kam dann beim Zählen eine ziemliche Katastropher heraus.
Kann also durchaus sein, das Espeasy den internen Widerstand default (oder per Option "input") nutzt und Tasmota nicht.

Bin zumindest soweit erst einmal happy, dass sich überhaupt was getan hat.
Man schlägt sich die Nacht um die Ohren und hat nicht einmal einen kleinen Erfolg...
Dann zweifelt man schon an sich selbst.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 29 Mai 2020, 22:28:49
Zitat von: pink99panther am 25 Mai 2020, 10:46:37
Hi,
habe bei mir den Pin auf Default stehen. Bei der stellung Input ist da glaube ich auch, ein Pullup aktiv.
Kleine Anmerkung: die Anzeige der Devices aktualisiert sich nicht alleine.
Um Zählergebnisse zu sehen Seite neu laden!

LG
p99p

So, ich habe nun meinen S0 Stromzähler eingebaut.

Zählen tut dieser (Bild zähler1)

Über Mqtt kommen auch Werte:

Client mosqsub|2668-ubuntuOSca received PUBLISH (d0, q0, r0, m0, 'Stromcount/Watt/Count', ... (4 bytes))
Stromcount/Watt/Count 0.00
Client mosqsub|2668-ubuntuOSca received PUBLISH (d0, q0, r0, m0, 'Stromcount/Watt/Total', ... (6 bytes))
Stromcount/Watt/Total 228.00
Client mosqsub|2668-ubuntuOSca received PUBLISH (d0, q0, r0, m0, 'Stromcount/Watt/Time', ... (8 bytes))
Stromcount/Watt/Time 80264.00


Allerdings wird in FHEM nichts gezählt (Anhang readings)

Wo ist der Denkfehler?

Hier der Auszug aus meiner fhem.cfg

define PulsStrom MQTT_DEVICE
setuuid PulsStrom 5ed169a0-f33f-0855-ba07-abaf32c92accd2d8
attr PulsStrom IODev myBroker
attr PulsStrom stateFormat transmission-state
attr PulsStrom subscribeReading_Count /Stromcount/Watt/Count
attr PulsStrom subscribeReading_Time /Stromcount/Watt/Time
attr PulsStrom subscribeReading_Total /Stromcount/Watt/Total
define Strom dummy
setuuid Strom 5ed16a6f-f33f-0855-72ea-83c71f62c8325150
attr Strom event-on-change-reading StromverbrauchStd,StromverbrauchTag,zaehler_jetzt
attr Strom readingList StromverbrauchStd StromverbrauchTag zaehler_jetzt
attr Strom room Technik
attr Strom userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {ReadingsVal($name,'StromverbrauchTag',0)}
define StromverbrNoti notify PulsStrom {\
my $StromUmlaufzeit = ReadingsVal("PulsStrom","Time","0") / 1000;;\
my $count = ReadingsVal("PulsStrom","Count","0");;\
my $StromProStd=0;;\
if ($StromUmlaufzeit > 0){\
$StromProStd=3.6/$StromUmlaufzeit;;\
}\
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");;;;\
}
setuuid StromverbrNoti 5ed16b02-f33f-0855-94fe-5555d49cb8472e72
define ESP_reboot at *00:00:00 { system "wget -O /dev/null -q 192.168.2.70/?cmd=reboot";; }
setuuid ESP_reboot 5ed16b4f-f33f-0855-4b71-2046732e50043a1d
define FileLog_Stromverbrauch FileLog ./log/Stromverbrauch-%Y-%m.log Strom:StromverbrauchStd:.*|Strom:StromverbrauchTag:.*|Strom:zaehler_jetzt:.*
setuuid FileLog_Stromverbrauch 5ed16b75-f33f-0855-b82c-56f84cb38b6e1c8f
define Stromvervbauch readingsGroup Strom:zaehler_jetzt Strom:StromverbrauchStd
setuuid Stromvervbauch 5ed16b8d-f33f-0855-7fbd-5ec2fb0f5ebef72c
attr Stromvervbauch mapping {"zaehler_jetzt" => "Zählerstand", "StromverbrauchStd" => "Momentanverbrauch"}
attr Stromvervbauch nameStyle style="font-weight:bold"
attr Stromvervbauch notime 1
attr Stromvervbauch style style="font-size:20px"
attr Stromvervbauch valueFormat {zaehler_jetzt => "%.3f KW/h", StromverbrauchStd => "%.3f KW/h"}
attr Stromvervbauch valueStyle style="text-align:right"




Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 29 Mai 2020, 22:59:09
Was zeigt denn dein Eventmonitor bei diesem Filter? PulsStrom.*
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 29 Mai 2020, 23:41:43
Zitat von: Otto123 am 29 Mai 2020, 22:59:09
Was zeigt denn dein Eventmonitor bei diesem Filter? PulsStrom.*

Oh hallo Otto :)

ähm
Da kommt gar nichts...
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 29 Mai 2020, 23:55:49
Na dann kann da auch kein notify gehen. ;)

Dann würde ich sagen musst Du beim Gerät PulsStrom weitersuchen, das muss für Dein Konstrukt Events werfen.

ich kenn mich allerdings mit MQTT_DEVICE nicht aus, hab nur MQTT2...
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 30 Mai 2020, 00:01:35
Der "/" war der Übeltäter

attr PulsStrom subscribeReading_Count Stromcount/Watt/Count
attr PulsStrom subscribeReading_Time Stromcount/Watt/Time
attr PulsStrom subscribeReading_Total Stromcount/Watt/Total


vorher war es so:

attr PulsStrom subscribeReading_Count /Stromcount/Watt/Count
attr PulsStrom subscribeReading_Time /Stromcount/Watt/Time
attr PulsStrom subscribeReading_Total /Stromcount/Watt/Total


Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 30 Mai 2020, 13:12:12
Eine Frage hätte ich allerdings noch.

Gibt es die Möglichkeit den Zählerstand anzupassen?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 30 Mai 2020, 15:28:19
Du meinst den kontinuierlichen Zählerstand? Ich weiß jetzt nicht welches Reading es bei Dir  ist, aber ich mach das bei mir einfach mit setreading Zählerstand aktuellerWert

Gruß Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 30 Mai 2020, 22:17:56
Ich meinte den Zählerstand des Drehstromzählers...
Um diesen mit FHEM "gleich" zu haben.

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 30 Mai 2020, 22:52:08
Meinte ich auch.
Du musst einfach ein kontinuierlich zählendes Reading der Impulse machen (monotonic)
Das setzt Du mit setreading auf den aktuellen Wert, dein Impuls Zähler zählt dann weiter.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 30 Mai 2020, 23:08:25
Aaaaah....
Wieder einmal danke an dich Otto!

Wäre dann quasi bei mir:

setreading Strom zaehler_jetzt x.x

Jetzt müsste das nur noch mit dem aktuellen Verbrauch in Watt implementiert werden.

Habe das mit der Variable "time" noch nicht so ganz kapiert.

Time wäre hier der aktuelle Verbrauch, wenn ich den Wert durch 1000 (die Impulse pro KW bei meinem Zähler) Teile?

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 31 Mai 2020, 00:12:34
Aber time klingt nach etwas anderem.
Das muss ja dann die Zeit zwischen den Impulsen sein? Damit kannst Du die aktuelle Leistung errechnen.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 31 Mai 2020, 00:17:54
Ja genau...

Guuut, das Thema hattest du hier sogar schon mal.

Zitat
Wenn Du momentan 1 kW angeschlossen hast und das für eine Stunde, dann hast Du 1 kWh verbraucht und 1000 Impulse erzeugt.
Also 1000 Impulse in 3600 sec - die Zeit von 3,6 sec entspricht also 1000 Watt momentaner Leistung.
7,2 s entsprechen 500 Watt usw.
1,8 s entsprechen 2000 Watt.

Ist das hier auch anwendbar? Die Parameter sind ja die Gleichen.
In meinem Anhang oben habe ich einen Wert bei Time von 80490.
Das sind Millisekunden oder? Also rund 80 Sekunden.
(Zur kurzen Erläuterung, mein Wechselstromzähler hängt nur an meiner Wärmepumpe. Diese läuft zur Zeit nicht, also wohl nur Standby Strom)

Also müsste die Formel für den Momentanverbrauch ja so aussehen:

1000 x 3,6 / Wert von Time

= 1000 x 3,6 / 80490

Wäre dann der Wert in kW.

x 1000 wäre dann Watt?


Richtig?




Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 31 Mai 2020, 00:44:11
Der Zähler liefert 1000 Impulse pro kWh
Wenn Du 3000 Impulse hast, hast Du 3 kWh verbraucht.
Wenn diese 3000 Impulse in einer Stunde gezählt wurden/werden, hättest Du momentan 3 kW Leistung eingeschaltet.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 31 Mai 2020, 00:46:47
Zitat von: Otto123 am 31 Mai 2020, 00:44:11
Der Zähler liefert 1000 Impulse pro kWh
Wenn Du 3000 Impulse hast, hast Du 3 kWh verbraucht.
Wenn diese 3000 Impulse in einer Stunde gezählt wurden/werden, hättest Du momentan 3 kW Leistung eingeschaltet.

Hatte mein vorheriges Posting noch einmal editiert.

Oder ist das so einfach nicht anwendbar?
Aber wie dann, in einer Formel in FHEM?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 31 Mai 2020, 13:26:47
Zitat von: pink99panther am 25 Mai 2020, 10:46:37
Hi,
habe bei mir den Pin auf Default stehen. Bei der stellung Input ist da glaube ich auch, ein Pullup aktiv.
Kleine Anmerkung: die Anzeige der Devices aktualisiert sich nicht alleine.
Um Zählergebnisse zu sehen Seite neu laden!

LG
p99p

So...
Ich glaube ich habe das alles soweit mit meinem ESPeasy am Laufen :)

Was mir allerdings aufgefallen ist, ist, dass mein ESP keinen Reset der Daten Count, Total und Time macht nach einem Reboot.
Diese bleiben erhalten.

Ist das bei euch anders?

Wie realisiere ich eine Anzeige mit "Verbrauch Vortag" ?

Um 0 Uhr wurde bei mir der Tagesverbrauch nicht auf "0" gestellt.

Woran könnte das liegen?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 31 Mai 2020, 15:39:31
Wollte nur noch sagen: Deine Rechnung stimmt so, ich hätte es immer mit Einheiten runtergebrochen.
1000 Impulse -> 1kWh -> 3600kWs -> 3600000 Ws
Also 1 Impuls -> 3600 Ws

Da müssen jetzt die Sekunden weg - also durch den Wert der Zeit zwischen zwei Impulsen teilen.

Bei Dir muss da also eine elektrische Leistung von ca 45 Watt aktiv gewesen sein ;)

Gruß Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 31 Mai 2020, 22:18:22
Zitat von: Otto123 am 31 Mai 2020, 15:39:31
Wollte nur noch sagen: Deine Rechnung stimmt so, ich hätte es immer mit Einheiten runtergebrochen.
1000 Impulse -> 1kWh -> 3600kWs -> 3600000 Ws
Also 1 Impuls -> 3600 Ws

Da müssen jetzt die Sekunden weg - also durch den Wert der Zeit zwischen zwei Impulsen teilen.

Bei Dir muss da also eine elektrische Leistung von ca 45 Watt aktiv gewesen sein ;)

Gruß Otto

Danke für die Bestätigung...
Sieht soweit eigentlich alles auch ganz gut aus.

Kannst du mir evtl. einen Tipp geben bezüglich des Verbrauchs vom Vortag?
Müsste ja eigentlich "nur" um 23:59h der aktuelle Tageswert kopiert werden...... Und am nächsten Tag das Gleiche, am Besten noch mit Datum.....
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 31 Mai 2020, 23:27:52
Bei buienradar gab es das letzten mal, so in der Art:
defmod RegenGestern DOIF ([23:59:59])\
(setreading $SELF rain [RegenHeute:rain]) ##copy the value of today and keep it as our own value\
(setreading RegenHeute rain 0) ## set the rain value of today to 0 and start to count from there again
attr RegenGestern alias Regen Gestern 🌧
attr RegenGestern do always
attr RegenGestern event-on-update-reading .*
attr RegenGestern room Wetter
attr RegenGestern stateFormat { round(ReadingsNum($name, "rain", 0), 2)." l/m²"}
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 01 Juni 2020, 00:07:19
Also das Reading "StromverbrauchTag" wird um 0 Uhr nicht auf 0 zurückgesetzt.....

Ist das Problem bei mir nun, dass mein ESP die Daten nach einen Reboot nicht "vergißt" ?

Habe jetzt mal das "Reboot" in "ResetPulseCounter" geändert.

Damit wird "StromverbrauchTag" genullt

"zaehler_jetzt" zählt weiter hoch
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 01 Juni 2020, 01:26:07
Zitat von: Otto123 am 31 Mai 2020, 23:27:52
Bei buienradar gab es das letzten mal, so in der Art:
defmod RegenGestern DOIF ([23:59:59])\
(setreading $SELF rain [RegenHeute:rain]) ##copy the value of today and keep it as our own value\
(setreading RegenHeute rain 0) ## set the rain value of today to 0 and start to count from there again
attr RegenGestern alias Regen Gestern 🌧
attr RegenGestern do always
attr RegenGestern event-on-update-reading .*
attr RegenGestern room Wetter
attr RegenGestern stateFormat { round(ReadingsNum($name, "rain", 0), 2)." l/m²"}


Danke für den Denkanstoß.

Läßt sich leider nicht so einfach hier umsetzen.
setreading Strom StromverbrauchTag 0
funktioniert leider nicht. Das Reading wird nicht genullt.
Der Wert wird ja vom ESP gezogen, ergo müsste dieser auf dem ESP genullt werden.
Dies wäre mit einem
define ESP_reboot at *00:00:00 { system "wget -O /dev/null -q 192.168.2.70/?cmd=ResetPulseCounter";; }
machbar.

Dies geschieht dann aber eh um 0 Uhr bei mir. (habe den reset Befehl geändert, da der zumindest bei meinem ESP kein "Nullen" der Werte bringt.
Somit könnte doch normal auch der Code
setreading Strom StromverbrauchTag 0
wegfallen?

Allerdings bekomme ich bei
defmod StromGestern DOIF ([23:59:59])\(setreading $SELF StromVortag [StromverbrauchTag:StromVortag])
in FHEM einen Fehler:

Zitat
StromGestern DOIF: expected DOELSEIF or DOELSE: \(setreading StromGestern StromVortag [StromverbrauchTag:StromVortag])

Und da bin ich dann zur Zeit wieder mit meinem Latein am Ende :(
Oder einfach nur DOIF mit DOELSEIF ersetzen?

Allerdings aus der Übersetzung doch was ganz anderes oder?
DOIF = Mache - Wenn
DOELSEIF = Mache anders wenn

Ich werde das auf meine alten Tage nicht mehr in den Schädel bekommen...
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 01 Juni 2020, 09:14:16
Moin,

das sind jetzt zwei Dinge:
1. Das DOIF, der Code war aus der Raw Definition kopiert, den darfst Du nicht einfach in die einzelne FHEM Kommandozeile werfen. -> https://wiki.fhem.de/wiki/Import_von_Code_Snippets
Das \ ist das Zeilenende-aber-es-geht-weiter Zeichen :)
2. Ich weiß nicht genau was Du machen willst?
Die täglichen Werte kannst Du ja loggen.
Du kannst Mitternacht:
So hast Du immer den absoluten Stand aktueller Tag -1 und den Tagesverbrauch von Tag davor.

Gruß Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 02 Juni 2020, 05:21:02
Zitat von: Otto123 am 01 Juni 2020, 09:14:16
Moin,

Du kannst Mitternacht:

  • den Zählerstand von gestern vom aktuellen Zählerstand abziehen - dann hast Du den Verbrauch vom Tag -speichern!
  • Den aktuellen Stand speicherst Du danach als den von gestern.
So hast Du immer den absoluten Stand aktueller Tag -1 und den Tagesverbrauch von Tag davor.

Gruß Otto

Das hört sich soweit gut an... Und hätte ich die nötige Ahnung in FHEM würde ich das glatt so machen.
Im Dummy Strom sind die Werte die wir brauchen denke ich?

defmod Strom dummy
attr Strom event-on-change-reading StromverbrauchStd,StromverbrauchTag,zaehler_jetzt
attr Strom readingList StromverbrauchStd StromverbrauchTag zaehler_vortag zaehler_jetzt
attr Strom room Stromverbrauch
attr Strom userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {ReadingsVal($name,'StromverbrauchTag',0)}

Zitat
setstate Strom 0
setstate Strom 2020-06-02 05:14:21 StromverbrauchStd 0.022
setstate Strom 2020-06-02 05:14:21 StromverbrauchTag 0.071
setstate Strom 2020-05-30 23:17:16 state 0
setstate Strom 2020-06-02 05:12:40 zaehler_jetzt 8.74099999999997

Zitat
den Zählerstand von gestern vom aktuellen Zählerstand abziehen - dann hast Du den Verbrauch vom Tag -speichern!

Wäre es nicht viel einfacher um 23:59h ein eigenes Reading "StromGestern" zu erzeugen vom Reading StromverbrauchTag ?

Wenn ich nur wüßte wie...
Weiß ja nicht einmal warum der Zählerstand dort drölfzig Nachkommastellen hat :(


Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 02 Juni 2020, 09:40:51
drölfzig kommt davon, dass es Gleitkomma Berechnungen sind :)
Mit sprintf behebst Du die Anzeige ;)
{sprintf("%.2f",ReadingsVal($name,'StromverbrauchTag',0))}

ZitatWäre es nicht viel einfacher um 23:59h ein eigenes Reading "StromGestern" zu erzeugen vom Reading StromverbrauchTag ?
Klar mach das doch. setreading Strom StromGestern [Strom:StromverbrauchTag]

Gruß Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 02 Juni 2020, 13:09:02
Zitat von: Otto123 am 02 Juni 2020, 09:40:51
drölfzig kommt davon, dass es Gleitkomma Berechnungen sind :)
Mit sprintf behebst Du die Anzeige ;)
{sprintf("%.2f",ReadingsVal($name,'StromverbrauchTag',0))}

Der Kandidat ist leider hartnäckig :(

defmod Strom dummy
attr Strom event-on-change-reading StromverbrauchStd,ag,zaehler_jetzt
attr Strom readingList StromverbrauchStd StromverbrauchTag zaehler_vortag zaehler_jetzt
attr Strom room Stromverbrauch
attr Strom userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {sprintf("%.2f",ReadingsVal($name,'StromverbrauchTag',0))}

setstate Strom 0
setstate Strom 2020-06-02 13:08:00 StromverbrauchStd 0.045
setstate Strom 2020-06-02 13:08:00 StromverbrauchTag 0.755
setstate Strom 2020-05-30 23:17:16 state 0
setstate Strom 2020-06-02 13:02:10 zaehler_jetzt 9.4209999999999


Zitat
Klar mach das doch. setreading Strom StromGestern [Strom:StromverbrauchTag]

Dann wären wir wieder da:

defmod Strom DOIF ([23:59:59]) setreading $SELF StromVortag [Strom:StromverbrauchTag]

Das ging ja irgendwie nicht...

Ich verzweifle langsam....

Gibt es eigentlich gar kein Modul für FHEM, dass all diese Features schon implementiert hat?
Es wäre ja auch interessant nachsehen zu können, wieviel Strom z. B. letzte Woche Montag verbraucht wurde. (ja ich weiß, das steht alles im Log, aber ja nicht in "schön")
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Nobbynews am 02 Juni 2020, 13:37:23
Zitat von: B.Stromberg am 02 Juni 2020, 13:09:02
Der Kandidat ist leider hartnäckig :(


attr Strom userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {sprintf("%.2f",ReadingsVal($name,'StromverbrauchTag',0))}

Das funktioniert bezogen auf den Wert von ReadingsVal schon, nur durch das "monotonic" wird es wieder zunichte gemacht. Ist zwar nur eine Addition im Reading zaehler_jetzt, aber immer noch eine Gleitkommaberechnung.

Was natürlich geht, ist ein zusätzliches userReading zu definieren:

attr Strom userReadings ZwischenReading:StromverbrauchTag.* monotonic {ReadingsVal($name,'StromverbrauchTag',0)}, zaehler_jetzt {sprintf("%.2f",ReadingsVal($name,'ZwischenReading',0))}



Norbert
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 02 Juni 2020, 14:59:18
Es gibt da sogar mehrere Module.
Statistics
ElectricityCalculator
Hourcounter

aber einfach sind die auch nicht. ;)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Eisbaeeer am 04 August 2020, 07:48:33
Hallo zusammen
ist zwar schon ein älterer Thread, aber scheinbar immer noch aktiv. Ich wollte nur kurz eine Lösung vorstellen, die dem ein oder anderem hier weiterhelfen könnte.
Bei diesem Projekt kann man die älteren Ferraris Zähler oder auch einen S0-Impuls auswerten und per MQTT senden.
Grüße Eisbaeeer

Projekt: https://github.com/Eisbaeeer/Ferraris_MQTT_Energy_Counter_Meter_TCRT5000 (https://github.com/Eisbaeeer/Ferraris_MQTT_Energy_Counter_Meter_TCRT5000)
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: hanswerner1 am 11 August 2020, 17:26:52
Zitat von: Eisbaeeer am 04 August 2020, 07:48:33
Hallo zusammen
ist zwar schon ein älterer Thread, aber scheinbar immer noch aktiv. Ich wollte nur kurz eine Lösung vorstellen, die dem ein oder anderem hier weiterhelfen könnte.
Bei diesem Projekt kann man die älteren Ferraris Zähler oder auch einen S0-Impuls auswerten und per MQTT senden.
Grüße Eisbaeeer

Projekt: https://github.com/Eisbaeeer/Ferraris_MQTT_Energy_Counter_Meter_TCRT5000 (https://github.com/Eisbaeeer/Ferraris_MQTT_Energy_Counter_Meter_TCRT5000)

Hallo Eisbaeeer,

das sieht ja schon sehr interessant aus. Ich nutze bisher ESPEasy auf einen Wemos, bin damit aber nicht richtig zufrieden, da immer noch Berechnungen in Fhem laufen. Hab deinen Sketch mal auf einen Wemos geflasht. Was mir direkt aufgefallen ist, es wäre toll, wenn Du den Port für MQTT auch änderbar machst, da ich einen anderen Port als den Standard nutze. Ist es auch möglich die WLan Zugangsdaten zu ändern ohne den Sketch neu zu flashen ?
Kann man auch den Gaszähler anschließen ? Zähle dort mit einen Reedrelais.

Ich werde den Sketch die Tage mal auf dem Wemos am Stromzähler flashen und schauen wie es da funktioniert. Hab einen optischen Zähler mit S0 Ausgang

VG HW1
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: bfbs am 05 Januar 2021, 00:44:12
Moin.
@pink99panther
Kann man das auf MQTT2 um scheiben???
Ich bekomme Fehlermeldungen das Fhem Mqtt_Device nicht kennt. -> Ok Mqtt2_Device kennt er.
Dann komme ich aber mit subscribereading nicht weiter da es diese Attribut nicht gibt.
Oder was mache ich falsch????

Trotzdem vielen Dank für diese Vorarbeit ;-)

Flo
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: B.Stromberg am 05 Januar 2021, 01:11:08
Moin!
Habs auch aufgegeben mit MQTT2...

Bin mit dem Server auf Ubuntu 20.04.01 LTS und neuen Rechner umgestiegen.
FHEM lief vorher Jahre problemlos.

Backup gibts nicht und in der Zwischenzeit wurde ja MQTT2 zusammengeklöppelt.
Für jemand der neu anfängt mit FHEM mag ja MQTT2 ein Filetstück sein, aber für Leute wie mich, die wenig bis gar keine Ahnung haben vom Programmieren ist das eher suboptimal.

Da suchst du dir jahrelang Codeschnipsel zusammen und bist happy, wenn ein paar alte Cracks dir hier im Forum helfen bei deinen Projekten und dann geht der größte Teil nicht mehr... zumindest bei mir.

Wie habe ich das Problem gelöst?
Oldschool!

FHEM Ordner kopiert und MQTT1 auf Ubuntu installiert.
Fertig!
Läuft wieder so wie vorher die Jahre auch.

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: pink99panther am 05 Januar 2021, 09:46:44
Hallo Ihr 2,
ich denke, dass ihr einfach zu kompliziert denkt.
MQTT2_SERVER auf autocreate, dann wird bei der ersten Nachricht
das Device automatisch angelegt.
Da braucht es kein subscribereading.

Anbei mal ein List von meinem Kellersensor, der unter anderem den Gaszähler logt.
Internals:
   CID        ESPClient_5C_CF_7F_23_C7_0D
   DEF        ESPClient_5C_CF_7F_23_C7_0D
   DEVICETOPIC Kellersensor
   FUUID      5e90bf73-f33f-f73e-a914-168165fd7f491676
   IODev      MyBroker
   LASTInputDev MyBroker
   MSGCNT     29490
   MyBroker_MSGCNT 29490
   MyBroker_TIME 2021-01-05 09:38:30
   NAME       Kellersensor
   NR         222
   STATE      Online
<br>
<a> Temperatur 16.19 °C</a>
<br>
<a> Feuchte 46.48 %</a>
<br>
<a> Taupunkt 4.7 °C</a>
<br>
<a> Luftdruck 1016.14 mBar</a>
<br>
<a href="http://192.168.115.32" target="_blank"> 192.168.115.32</a>
   TYPE       MQTT2_DEVICE
   Helper:
     DBLOG:
       dewpoint:
         logdb:
           TIME       1609835866.28378
           VALUE      4.7
       humidity:
         logdb:
           TIME       1609835866.28378
           VALUE      46.48
       pressure:
         logdb:
           TIME       1609835866.4015
           VALUE      1016.14
       temperature:
         logdb:
           TIME       1609835866.2032
           VALUE      16.19
   READINGS:
     2021-01-05 09:38:04   Count           2.00
     2021-01-05 09:38:30   IP              192.168.115.32
     2021-01-05 04:26:03   LWT             Online
     2021-01-05 09:38:04   Time            84285.00
     2021-01-05 09:38:04   Total           2.43
     2021-01-05 09:37:46   absFeuchte      6.4
     2021-01-05 09:37:46   dewpoint        4.7
     2021-01-05 09:37:46   humidity        46.48
     2021-01-05 09:37:46   pressure        1016.14
     2021-01-05 09:37:46   temperature     16.19
Attributes:
   DbLogInclude temperature,humidity,dewpoint,pressure
   IODev      MyBroker
   devStateIcon Online:10px-kreis-gruen Offline:10px-kreis-rot
   icon       control_building_s_kg
   readingList ESPClient_5C_CF_7F_23_C7_0D:Kellersensor_19/status/LWT:.* LWT
ESPClient_5C_CF_7F_23_C7_0D:Kellersensor_19/Gas/Count:.* Count
ESPClient_5C_CF_7F_23_C7_0D:Kellersensor_19/Gas/Total:.* Total
ESPClient_5C_CF_7F_23_C7_0D:Kellersensor_19/Gas/Time:.* Time
ESPClient_5C_CF_7F_23_C7_0D:Kellersensor_19/BME280/temperature:.* temperature
ESPClient_5C_CF_7F_23_C7_0D:Kellersensor_19/BME280/humidity:.* humidity
ESPClient_5C_CF_7F_23_C7_0D:Kellersensor_19/BME280/pressure:.* pressure
ESPClient_5C_CF_7F_23_C7_0D:Kellersensor_19/IP:.* IP
ESPClient_5C_CF_7F_23_C7_0D:/Kellersensor_19/status/LWT:.* LWT
   room       Keller,MQTT2_DEVICE
   stateFormat LWT
<br>
<a> Temperatur temperature °C</a>
<br>
<a> Feuchte humidity %</a>
<br>
<a> Taupunkt dewpoint °C</a>
<br>
<a> Luftdruck pressure mBar</a>
<br>
<a href="http://IP" target="_blank"> IP</a>
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: bfbs am 05 Januar 2021, 11:47:11
Vielen Dank!!!
Zitat von: pink99panther am 05 Januar 2021, 09:46:44
Hallo Ihr 2,
ich denke, dass ihr einfach zu kompliziert denkt.
MQTT2_SERVER auf autocreate, dann wird bei der ersten Nachricht
das Device automatisch angelegt.
Da braucht es kein subscribereading.
Die Info hat gefehlt... :-)
War gestern einfach zu spät... Da ist man nur noch vorm Bildschirm, aber nicht mehr anwesend...
Vielen Dank für die schnelle Antwort
Flo
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Banis am 21 Januar 2021, 14:06:23
Hallo zusammen,

ich versuche mich gerade auch am Abfragen meiner S0 Schnittstelle hab aber schon ganz am Anfang Probleme. Mein Board ist folgendes:

D1 ESP8266 Mini WLAN Board Mikrokontroller Wifi Modul Wemos Nodemcu Arduino

Hierauf hab ich die folgende Datei geflasht:

ESP_Easy_mega_20210114_custom_ESP8266_1M

Bis hierher hat auch alles funktioniert.

Leider ist bei den Devices kein Puls counter verfügbar (siehe Screenshot)

Hat jemand eine Idee was ich falsch gemacht habe?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Nobbynews am 21 Januar 2021, 14:27:06
Wieseo nimmst Du die Custom-Version??

Probier mal diese BIN aus:
bin\ESP_Easy_mega_20210114_normal_ESP8266_4M1M.bin
Als device kannst Du dann "Generic - Pulse counter" auswählen.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: matthias soll am 04 Dezember 2021, 06:42:46
Hallo zusammen,
ich komme aktuell nicht weiter, ich habe einen esp mit tasmota der mir ein paar counter hochzählt.

Über mqtt bekomme ich alle 5 min das hier:
2021-12-04_06:26:03 MQTT2_smartmeter Time: 2021-12-04T06:26:03
2021-12-04_06:26:03 MQTT2_smartmeter LoadAvg: 22
2021-12-04_06:26:03 MQTT2_smartmeter MqttCount: 2
2021-12-04_06:26:03 MQTT2_smartmeter Sleep: 50
2021-12-04_06:26:03 MQTT2_smartmeter SleepMode: Dynamic
2021-12-04_06:26:03 MQTT2_smartmeter UptimeSec: 30313
2021-12-04_06:26:03 MQTT2_smartmeter Uptime: 0T08:25:13
2021-12-04_06:26:03 MQTT2_smartmeter COUNTER_C2: 0
2021-12-04_06:26:03 MQTT2_smartmeter Time: 2021-12-04T06:26:03
2021-12-04_06:26:03 MQTT2_smartmeter COUNTER_C4: 0
2021-12-04_06:26:03 MQTT2_smartmeter SML__Power_in: 566.8
2021-12-04_06:26:03 MQTT2_smartmeter SML__Power_act: 197.5
2021-12-04_06:26:03 MQTT2_smartmeter COUNTER_C3: 224
2021-12-04_06:26:03 MQTT2_smartmeter COUNTER_C1: 0


Jetzt möchte ich meinen s0 wasserzähler COUNTER_C3: der immer höher zählt nur die Differenz zum letzten Stand verwenden, mit meinem faktor (imp/1000) versehen und in ein log speichern.

Funktioniert das mit der hier beschriebenen Lösung und was müsste ich anpassen?
Gruß
Matthias
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 04 Dezember 2021, 09:11:18
Hallo Matthias,

baust Du Dir ein userReadings https://fhem.de/commandref_DE.html#userReadings mit difference

Gruß Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: matthias soll am 04 Dezember 2021, 10:40:48
Hallo Otto,
danke für die Hilfe.

ich habe das attribut so eingefügt:
attr MQTT2_smartmeter BWater differential { ReadingsVal("MQTT2_smartmeter","COUNTER_C3",0)/1000.0}
Ohne differential kommt der Wert /1000 korrekt raus, mit differential kommt immer 0 bei BWater....

Hast du einen Tip wo der Fehler liegt?
Gruß
Matthias
   
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 04 Dezember 2021, 17:23:32
Hallo Matthias,

1. fehlt der attribute Bezeichner userReadings - was mit dem Code überhaupt passiert weiß ich nicht.
2. ich sprach von difference Du versuchst es jetzt mit differential - Du hast die Doku gelesen und verstanden?

Deine Aufgabe klingt nach Momentanwerten? Dafür würde ich mit einem zweiten Counter die Zeit zwischen zwei Impulsen messen und diese umrechnen.
Bei mir: der aufsummierende Zähler liefert den Zählerstand, die Zeitdauer von zwei Impulsen liefert die momentane Leistung

Beispiel:
attr MQTT2_DVES_D8B7E5 userReadings Leistung:COUNTER_C2.* {sprintf("%.2f",48000/ReadingsVal($name,'COUNTER_C2',''))}
Mein Zähler hat eine Zählerkonstante von 75 Impulse pro kWh, 1kWh = 3600000 Ws, 1 Zählerrunde sind damit 48000 Ws.
Der COUNTER_C2 liefert die Zeit zwischen zwei Impulsen. Er ist vom CounterType 1 siehe Doku (https://tasmota.github.io/docs/Commands/#sensors).
Mein Impulsausgang ist einfach mit zwei GPIO Pins verbunden.

Gruß Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: matthias soll am 05 Dezember 2021, 09:17:00
Hallo Otto,

DANKE!!!  Hatte ich verwechselt mit difference funktioniert es:
attr MQTT2_smartmeter BWater difference { ReadingsVal("MQTT2_smartmeter","COUNTER_C3",0)/1000.0}
Die Doku hab ich noch nicht ganz verstanden, ist der attributive Bezeichner nicht einfach nur ein name oder macht der irgendwas?
Gucke ich mir nachher nochmal in Ruhe an, grundsätzlich funktioniert es aber schonmal für mich.
Setzt du die Counter auf dem Tasmota zurück oder lässt du den endlos hochzählen?
Gruß
Matthias

Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Otto123 am 05 Dezember 2021, 10:22:16
Hallo Matthias,

ich bin etwas verzweifelt:
Zitat von: Otto123 am 04 Dezember 2021, 17:23:32
1. fehlt der attribute Bezeichner userReadings - was mit dem Code überhaupt passiert weiß ich nicht.
Was ist an meinem Beispiel und an dem Beispiel in der von mir verlinkten Doku grundlegend zu deinem Code anders?
Tipp: Kontrolliere jeweils das dritte Wort!

Wie Du deinen Code eingetragen hast würde ich gern wissen.

Der Counter in Tasmota wird nicht endlos hochzählen, der wird irgendwann überlaufen. Nein ich setzte den nicht zurück, ich will damit ja einen Zählerstand abbilden. Ich schreibe den in ein userReadings mit dem modifier monotonic.
Wenn Du den Zähler gar nicht fortlaufen haben willst, rate ich Dir nochmal meinen Hinweis mit der Messung der Impulslänge aufzugreifen.

Gruß Otto
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: matthias soll am 05 Dezember 2021, 20:18:06
Hallo Otto,
Viele Dank für deine Hilfe, jetzt habe ich den Tasmota mit Strom,Gas,Wasser Countern und Log´s laufen wie ich es brauche.
Schönen Sonntag noch.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Bartimaus am 21 November 2022, 19:32:09
Hallo,

nachdem ich jetzt erfolgreich mein erstes ESP8266/NodeMCU Projekt (AHOY-DTU) umgesetzt habe, bin ich auch den Geschmack gekommen.
Ich habe noch 2 S0-Stromzähler im Haus. Bei YT bin ich auf ein Video gestoßen, wo man eine CustomTasmota speziell für Stromzähler für den ESP compiliert und flasht. Die Daten werden dann komplett berechnet via MQTT übergeben. Im Video wurde es mit einem IR-Lesekopf realisiert, den ich dank S0 nicht brauche.

Hat das schonmal jemand hier mit Tasmota versucht ?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Damian am 21 November 2022, 22:58:35
siehe: https://forum.fhem.de/index.php/topic,97959.msg1214276.html#msg1214276

In dem Thread warst du aber schon mal - vielleicht erst später eingestiegen :)

Ich lasse inzwischen alle meine Zähler (S0, D0) über Tasmota mit MQTT abwickeln .
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Bartimaus am 22 November 2022, 07:52:34
Moin,

danke Dir.
Hatte den Thread in der Tat nicht mehr auf dem Schirm. "Damals" habe ich die S0 noch per 1wire ausgelesen, aber nach einem SuperGAU suche ich jetzt nach Alternativen.
Das mit Tasmota&Co ist mir soweit glaube ich klar, weiß aber noch nicht, an welchen Pins/GPIO der S0 an den ESP8266 anzuschliessen ist. Die IR-Leseköpfe wurden in einem Video an +/-/Rx/Tx angeschlossen, aber das kommt doch für S0 nicht in Betracht. Hat da bitte nochmal jemand einen Tip ?

LG

Edith: Ah, wie im Eingangspost S0+ an 3,3v am ESP, S0- an einen GPIO. Aber mit dieser Anschlussvariante kommt auch TasmotaSML zurecht ?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Damian am 22 November 2022, 10:23:48
Zitat von: Bartimaus am 22 November 2022, 07:52:34
Moin,

danke Dir.
Hatte den Thread in der Tat nicht mehr auf dem Schirm. "Damals" habe ich die S0 noch per 1wire ausgelesen, aber nach einem SuperGAU suche ich jetzt nach Alternativen.
Das mit Tasmota&Co ist mir soweit glaube ich klar, weiß aber noch nicht, an welchen Pins/GPIO der S0 an den ESP8266 anzuschliessen ist. Die IR-Leseköpfe wurden in einem Video an +/-/Rx/Tx angeschlossen, aber das kommt doch für S0 nicht in Betracht. Hat da bitte nochmal jemand einen Tip ?

LG

Edith: Ah, wie im Eingangspost S0+ an 3,3v am ESP, S0- an einen GPIO. Aber mit dieser Anschlussvariante kommt auch TasmotaSML zurecht ?

Du kannst bis zu 4 S0 Counter auf unterschiedlichen GPIO definierten. So funktioniert es bei mir ohne Probleme.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Bartimaus am 22 November 2022, 11:46:39
Hm, ok, danke. Muss ich mal schauen, wie man das dann in Tasmota definiert/konfiguriert
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Damian am 22 November 2022, 12:02:47
Zitat von: Bartimaus am 22 November 2022, 11:46:39
Hm, ok, danke. Muss ich mal schauen, wie man das dann in Tasmota definiert/konfiguriert

Ist recht simpel. Unter Configuration -> Configure Module Modul type: Generic auswählen und beim entsprechenden GPIO "Counter" definieren - das war es.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Bartimaus am 22 November 2022, 12:13:00
Oh, das ist ja wirklich einfach. Du verwendest aber eine entsprechend kompilierte Tasmota.bin die die SML Daten beinhaltet ?
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Damian am 22 November 2022, 12:18:02
Zitat von: Bartimaus am 22 November 2022, 12:13:00
Oh, das ist ja wirklich einfach. Du verwendest aber eine entsprechend kompilierte Tasmota.bin die die SML Daten beinhaltet ?

ja, ich habe mir eine kompiliert. Es hängen an einem Tasmota 4 S0 Zähler und ein SML-Zähler.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Bartimaus am 22 November 2022, 12:22:28
Ok, das wird bei mir nicht funktionieren aufgrund von größerer räumlicher Trennung.

Aber erst mal sehen ob was von meinem 1wire-System übrig geblieben ist...., das waren sehr gute Counter. Aber gut zu wissen eine Alternative zu haben.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Bartimaus am 22 November 2022, 17:56:36
Das hier habe ich für S0@Tasmota gefunden:

https://github.com/arendst/Tasmota/discussions/16294
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Damian am 22 November 2022, 19:38:33
Zitat von: Bartimaus am 22 November 2022, 17:56:36
Das hier habe ich für S0@Tasmota gefunden:

https://github.com/arendst/Tasmota/discussions/16294

Auch nicht schlecht, dann hast du die Energie und Leistung direkt in Tasmota, ich berechne das in FHEM.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Bartimaus am 22 November 2022, 19:44:46
Ich überlege jetzt, wie ich damit meine Ölheizung auswerten kann. Einen S0-Stromzähler an den Brenner, dann weiss ich was der pro h an Strom zieht, daraus kann ich den Verbrauch in Öl errechnen. Habe den Verbrauch/h ausgelitert... müsste gehen.
Titel: Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
Beitrag von: Lucky2k12 am 24 Dezember 2022, 14:06:03
Den Ölverbrauch habe ich mit einem Userreading im sonoffpow gelöst "onoff1 {(ReadingsVal("sonoffpow1","ENERGY_Power",0) >150)?1:0;;}", und Hourcounter.

Aber die Wallbox möchte ich gern mit Tasmota und S0 auslesen. Mit Counter funktioniert's, aber die Lösung mit SML habe ich nicht hinbekommen.
Mein Script:

>D
>B
->Sensor53 r
>M 1
+1,4,c,1,-20,Energy
1,1-0:1.8.0255(@1000,consumption,KWh,Total_in,3)
1,1-0:1.7.0255(@0.01667, power,W,Power_actual,1)
#


Es zeigt an, aber zählt leider nix :(
Hat jemand ne Idee?