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

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

Vorheriges Thema - Nächstes Thema

bfbs

#150
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

B.Stromberg

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.


pink99panther

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>

bfbs

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

Banis

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?
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

Nobbynews

#155
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.

matthias soll

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

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

matthias soll

#158
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
   

Otto123

#159
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.
Mein Impulsausgang ist einfach mit zwei GPIO Pins verbunden.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

matthias soll

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


Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

matthias soll

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.

Bartimaus

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 ?
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Damian

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 .
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF