NEWS
Adapter "smartmeter"
-
Das ist mir schon klar Damit kann ich die <u>Zählerstände</u> auseinander halten.
Bei mir sieht das so aus:
Für den Punkt "<u>Momentanwert</u>" bekomme ich aber nicht heraus, <u>in welche Richtung jetzt gerade der Strom fließt (180 oder 280)</u>, also ob die hier gerade geleisteten 1237W gerade aus dem Netz bezogen oder ins Netz eingespeist werden. Oder bin ich nur zu blöd, das zu erkennen?
Der "Trick" war übrigens, dass man den Lesekopf schief auf das Feld aufsetzen muss. Habe ich auch nur zufällig rausgefunden. Damit kann man natürlich den Magneten nicht mehr richtig nutzen. Habe mir jetzt mit viel Klebeband beholfen, aber es funktioniert nun
Viele Grüße
Christian
-
Für den Punkt "<u>Momentanwert</u>" bekomme ich aber nicht heraus, <u>in welche Richtung jetzt gerade der Strom fließt (180 oder 280)</u>, also ob die hier gerade geleisteten 1237W gerade aus dem Netz bezogen oder ins Netz eingespeist werden. Oder bin ich nur zu blöd, das zu erkennen? `
Das hängt vom Zähler ab. Es gibt Zähler da wird der Wert negativ wenn Du abgibst. Es gibt andere, da kannst Du das nicht erkennen Musst mal schauen was deiner sagt.
Der "Trick" war übrigens, dass man den Lesekopf schief auf das Feld aufsetzen muss. Habe ich auch nur zufällig rausgefunden. Damit kann man natürlich den Magneten nicht mehr richtig nutzen. Habe mir jetzt mit viel Klebeband beholfen, aber es funktioniert nun `
Lol
-
Für den Punkt "<u>Momentanwert</u>" bekomme ich aber nicht heraus, <u>in welche Richtung jetzt gerade der Strom fließt (180 oder 280)</u>, also ob die hier gerade geleisteten 1237W gerade aus dem Netz bezogen oder ins Netz eingespeist werden. Oder bin ich nur zu blöd, das zu erkennen? `
Das hängt vom Zähler ab. Es gibt Zähler da wird der Wert negativ wenn Du abgibst. Es gibt andere, da kannst Du das nicht erkennen Musst mal schauen was deiner sagt.
Der "Trick" war übrigens, dass man den Lesekopf schief auf das Feld aufsetzen muss. Habe ich auch nur zufällig rausgefunden. Damit kann man natürlich den Magneten nicht mehr richtig nutzen. Habe mir jetzt mit viel Klebeband beholfen, aber es funktioniert nun `
Lol `
Wie meiner, der gibt auch nur positive Werte raus. Wir arbeiten gerade daran es irgendwie über den Vergleich mit dem Erzeugungszähler heraus zu bekommen.
VG Torsten
-
Für den Punkt "<u>Momentanwert</u>" bekomme ich aber nicht heraus, <u>in welche Richtung jetzt gerade der Strom fließt (180 oder 280)</u>, also ob die hier gerade geleisteten 1237W gerade aus dem Netz bezogen oder ins Netz eingespeist werden. Oder bin ich nur zu blöd, das zu erkennen? `
Das hängt vom Zähler ab. Es gibt Zähler da wird der Wert negativ wenn Du abgibst. Es gibt andere, da kannst Du das nicht erkennen Musst mal schauen was deiner sagt.
Der "Trick" war übrigens, dass man den Lesekopf schief auf das Feld aufsetzen muss. Habe ich auch nur zufällig rausgefunden. Damit kann man natürlich den Magneten nicht mehr richtig nutzen. Habe mir jetzt mit viel Klebeband beholfen, aber es funktioniert nun `
Lol `
Wie meiner, der gibt auch nur positive Werte raus. Wir arbeiten gerade daran es irgendwie über den Vergleich mit dem Erzeugungszähler heraus zu bekommen.
VG Torsten `
Ich weiß ja nicht wie genau Dein Zähler auflöst, aber bei mir gibt es vier (!) Nachkommastellen. Von daher war es das einfachste, zwei neue Datenpunkte anzulegen: Einspeisung und Netzbezug. Für Scripte etc. werden dann halt diese Datenpunkte genutzt.
Nun kommt oben drauf ein Javascript, das bei Änderung des 280-Werts den Power-Wert des Zählers in die Einspeisung schreibt und den Netzbezug auf 0 setzt:
on({id: "smartmeter.0.1-0:2_8_0*255.value"/*1-0:2_8_0*255.value*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.Stromzaehler-Netzbezug"/*Stromzaehler-Netzbezug*/, 0, true); setState("javascript.0.Stromzaehler-Einspeisung"/*Stromzaehler-Einspeisung*/, getState("smartmeter.0.1-0:15_7_0*255.value").val, true); });
Analog ein zweites Script, das bei Änderung des 180 Werts den Power-Wert in den Netzbezug schreibt und die Einspeisung auf 0 setzt:
on({id: "smartmeter.0.1-0:1_8_0*255.value"/*1-0:1_8_0*255.value*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.Stromzaehler-Netzbezug"/*Stromzaehler-Netzbezug*/, getState("smartmeter.0.1-0:15_7_0*255.value").val, true); setState("javascript.0.Stromzaehler-Einspeisung"/*Stromzaehler-Einspeisung*/, 0, true); });
Das gibt bisher nur dann Probleme, wenn zwischen Netzbezug und Einspeisung geändert wird. Das dann aber auch nur im Zeitraum des Auslesefensters (bei mir 10sec). Die erzeugte Unschärfe ist daher überschaubar und meiner Meinung nach tragbar. Sollte sich der Verbrauch über längere Zeit zufällig immer um ein paar W an der Erzeugung bewegen, könnte es ebenfalls zu Unschärfen kommen, hier sind die W allerdings dann so gering dass das übers Jahr gesehen nicht mal eine kWh ausmachen dürfte, von daher verschmerze ich die 28ct dann gern
Durch die vier Nachkommastellen ändert sich der Zählerstand sogar im 10sek Takt, selbst wenn wir nur in der absoluten Grundlast liegen (was dann ca. 260W sind, darunter gibt es quasi nix außer Stromausfall ). Auch wenn sich nur die letzte Stelle ändert, es ändert sich der Wert, und damit ist der ioBroker Trigger erfüllt.
VG
Christian
-
Update:
heute beim Regen konnte man sehr gut beobachten wie Bezug und Einspeisung sich immer minimal abgelöst haben (z.T. ging es da um 10W Unterschied).
In diesen Situationen kommt die Unschärfe des Scripts tatsächlich raus. Zum Glück ist aber sowohl der Stromverbrauch im Haus als auch die Erzeugung über die PV so volatil, dass das meistens nur kurz anhält.
Ein weiterer Punkt: Das Script oben neigt dazu, manchmal den Vor-Wert zu übertragen, anstatt den neuen, frisch vom Zähler übermittelten Wert. Das liegt daran, dass der neue Wert manchmal noch nicht so schnell in die Datenbank geschrieben wurde, wie das Script ihn abfischt und weiterverwendet. Dieses Problem läßt sich aber elegant lösen, in dem man eine Verzögerung von 100ms einbaut.
So sieht es dann aus:
var timeout, timeout2; on({id: "smartmeter.0.1-0:1_8_0*255.value"/*1-0:1_8_0*255.value*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; timeout = setTimeout(function () { setState("javascript.0.Stromzaehler-Netzbezug"/*Stromzaehler-Netzbezug*/, getState("smartmeter.0.1-0:15_7_0*255.value").val, true); setState("javascript.0.Stromzaehler-Einspeisung"/*Stromzaehler-Einspeisung*/, 0, true); }, 1000); }); on({id: "smartmeter.0.1-0:2_8_0*255.value"/*1-0:2_8_0*255.value*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; timeout2 = setTimeout(function () { setState("javascript.0.Stromzaehler-Netzbezug"/*Stromzaehler-Netzbezug*/, 0, true); setState("javascript.0.Stromzaehler-Einspeisung"/*Stromzaehler-Einspeisung*/, getState("smartmeter.0.1-0:15_7_0*255.value").val, true); }, 1000); });
VG
Christian
-
funktioniert der Adapter auch mit ESPeasy und dem Pulse Counter?
Oder gibt es Arduino Lösungen? Habe am Arduino im moment ein Read-Schalter, der
Read-Schalter am Gaszähler.
Ähnlich wie hier: https://voizchat.de/gaszaehler-verbrauc … erry-gpio/
-
Der Adapter liest "smartmeter" aus, also solche die die Daten über ein Protokoll bereitstellen. Die Reed Schalter bei dir liefern an der Stelle "nur" einen S0 Zählimpuls. Dafür ist der Adapter nicht geeignet.
Es gibt Geräte die s0 zählen und per sml oder d0 oder json Formate bereitstellen. Die könnte der Adapter wieder auslesen.
-
kann man mit nem Arduino (Nodemcu) nichts zaubern?
-
im übrigen spuckt ESPeasy auch was im JSON aus. Weiß nur
nicht, ob man was damit anfangen kann
Folgender Code
http://192.168.1.43/json?tasknr=1
liefert
{ "TaskName": "Gaszaehler", "Count": 0.00, "Total": 5.00, "Time": 13251.00 }
-
Bisher basiert die auswertelogik des Adapters auf OBIS-IDs. Das ist ein Standard um zählerwerte zu kodieren. Ein json Format kann er schon: vom efr Smart Grid hub. Format: http://www.mysmartshop.de/pdf/bedienung … eitung.pdf Seite 10 ... Bau das als Ausgabe nach und es tut ;-). Es müssen auch nicht die gleichen und alle der im Beispiel gezeigten OBIS Werte kommen. Halt das was man haben will ... das wäre das einfachste.
-
Ps: einfaches auslesen so eines http Ziels ist aber auch mit iobroker JavaScript Mega simpel ohne Adapter. Der Adapter ist hier nur da weil er die Protokolle implementiert hat und das OBIS Mapping macht.
-
Ps: einfaches auslesen so eines http Ziels ist aber auch mit iobroker JavaScript Mega simpel ohne Adapter. Der Adapter ist hier nur da weil er die Protokolle implementiert hat und das OBIS Mapping macht. `
Für mich (im moment) leider nicht. -
Alls wie man HTTP Requests macht und JSON-Daten verarbeitet findest Du hier im Forum mehrfach :-))
Beispiel: http://forum.iobroker.net/viewtopic.php … est#p66916
-
Hallo,
ich habe den Thread durchgelesen, bin aber leider nicht weitergekommen!
Ich habe einen Easymeter Q3D, der im D0 Protokoll alle 2s ohne request ein Telegramm sendet! Mit
cat /dev/ttyUSB0
sieht ein kompletter Datensatz so aus (7E1 mit 9600baud eingestellt):
/ESY5Q3DA2004 V3.03 1-0:0.0.0*255(XXXXXX) 1-0:1.8.0*255(00090303.3530030*kWh) 1-0:21.7.255*255(000220.50*W) 1-0:41.7.255*255(000160.70*W) 1-0:61.7.255*255(000035.80*W) 1-0:1.7.255*255(000417.00*W) 1-0:96.5.5*255(82) 0-0:96.1.255*255(1ESYXXXXXXXXXX) !
In den Adapter Einstellungen habe ich dann u.a. folgendes probiert:
Das Resultat im log ist dann logendes (es werden keine Datenpunkte angelegt):
host.raspberrypi 2017-08-11 12:31:07.845 info Restart adapter system.adapter.smartmeter.0 because enabled host.raspberrypi 2017-08-11 12:31:07.844 error instance system.adapter.smartmeter.0 terminated with code 0 (OK) smartmeter.0 2017-08-11 12:31:07.339 warn Exception: Error: No or too long message from Serial Device. smartmeter.0 2017-08-11 12:31:07.338 error Error: No or too long message from Serial Device. at SerialResponseTransport.handleSerialTimeout (/opt/iobroker/node_modules/smartmeter-obis/lib/transports/SerialResponseTransport.js:200:11) a smartmeter.0 2017-08-11 12:31:07.332 error uncaught exception: No or too long message from Serial Device. smartmeter.0 2017-08-11 12:29:07.274 info SerialResponseTransport do not support sending of Data! Ignore them smartmeter.0 2017-08-11 12:29:06.247 info starting. Version 0.5.12 in /opt/iobroker/node_modules/iobroker.smartmeter, node: v6.11.2
Was hab ich falsch gemacht?
Danke und Gruss,
Church
-
Starte mal bitte den Adapter im Debug Modus (Instanzen expertenmodus dann ist da Spalte mit dem loglevel). Hast du im Adapter die Einstellungen und D0 als Protokoll gesetzt?
-
D0 ist als Protokoll gesetzt. Debug gibt folgendes:
smartmeter.0 2017-08-11 22:22:42.168 debug MESSAGE TIMEOUT TRIGGERED smartmeter.0 2017-08-11 22:20:42.108 debug REMAINING DATA AFTER MESSAGE HANDLING: smartmeter.0 2017-08-11 22:20:42.108 debug CURRENT PROCESS STEP 4 IN ISPROCESSCOMPLETE: false smartmeter.0 2017-08-11 22:20:42.107 debug SET MESSAGE TIMEOUT TIMER: 120000 smartmeter.0 2017-08-11 22:20:42.107 debug CURRENT PROCESS STEP 4 IN ISPROCESSCOMPLETE: false smartmeter.0 2017-08-11 22:20:42.107 debug OVERWRITE D0-MODE C WITH A smartmeter.0 2017-08-11 22:20:42.107 debug CURRENT PROCESS STEP 2 IN HANDLEMESSAGE smartmeter.0 2017-08-11 22:20:42.106 debug PAUSE READING SERIALPORT TO HANDLE MESSAGE smartmeter.0 2017-08-11 22:20:42.106 debug MATCH-RESULT SIGNON: "/ESY5Q3DA2004 V3.03\r\n" -> ["/ESY5Q3DA2004 V3.03\r\n","/ESY5Q3DA2004 V3.03"] smartmeter.0 2017-08-11 22:20:42.106 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-11 22:20:42.106 debug MATCH-RESULT SIGNON: "/ESY5Q3DA2004 V3.03" -> null smartmeter.0 2017-08-11 22:20:42.105 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-11 22:20:42.105 debug MATCH-RESULT SIGNON: "/ESY5Q3DA2004 V3.0" -> null smartmeter.0 2017-08-11 22:20:42.105 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-11 22:20:42.105 debug MATCH-RESULT SIGNON: "/ESY5Q3DA2004 V3" -> null smartmeter.0 2017-08-11 22:20:42.104 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-11 22:20:42.104 debug MATCH-RESULT SIGNON: "/ESY5Q3DA2004 V" -> null smartmeter.0 2017-08-11 22:20:42.104 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-11 22:20:42.103 debug MATCH-RESULT SIGNON: "/ESY5" -> null smartmeter.0 2017-08-11 22:20:42.102 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-11 22:20:41.092 debug SET MESSAGE TIMEOUT TIMER: 120000 smartmeter.0 2017-08-11 22:20:41.092 debug SERIALPORT OPEN smartmeter.0 2017-08-11 22:20:41.092 debug CREATE SERIALPORT: 9600 7 1 even
-
Ok, warum hast du den "D0 Mode overwrite" denn gesetzt in den Einstellungen ?! Nimm das mal raus. Denke das das das Problem ist. Wenn nicht tut bitte nochmal log komplett inkl Start (der fehlt hier).
-
Mit dem D0 overwrite hatte ich etwas "rumgespielt", daher im log im Modus "A", hatte aber auch schon andere Einstellungen!
Hier der log inkl. Start ohne overwrite:
host.raspberrypi 2017-08-12 09:22:56.878 info Restart adapter system.adapter.smartmeter.0 because enabled host.raspberrypi 2017-08-12 09:22:56.877 error instance system.adapter.smartmeter.0 terminated with code 0 (OK) smartmeter.0 2017-08-12 09:22:56.366 debug SERIALPORT CLOSE smartmeter.0 2017-08-12 09:22:56.366 warn Exception: Error: No or too long message from Serial Device. smartmeter.0 2017-08-12 09:22:56.366 error Error: No or too long message from Serial Device. at SerialResponseTransport.handleSerialTimeout (/opt/iobroker/node_modules/smartmeter-obis/lib/transports/SerialResponseTransport.js:200:11) a smartmeter.0 2017-08-12 09:22:56.365 error uncaught exception: No or too long message from Serial Device. smartmeter.0 2017-08-12 09:22:56.364 debug MESSAGE TIMEOUT TRIGGERED smartmeter.0 2017-08-12 07:20:56.315 debug REMAINING DATA AFTER MESSAGE HANDLING: smartmeter.0 2017-08-12 07:20:56.314 debug CURRENT PROCESS STEP 3 IN ISPROCESSCOMPLETE: false smartmeter.0 2017-08-12 07:20:56.313 debug SET MESSAGE TIMEOUT TIMER: 120000 smartmeter.0 2017-08-12 07:20:56.310 debug SerialResponseTransport do not support sending of Data! Ignore them smartmeter.0 2017-08-12 07:20:56.308 debug CURRENT PROCESS STEP 3 IN ISPROCESSCOMPLETE: false smartmeter.0 2017-08-12 07:20:56.303 debug CURRENT PROCESS STEP 2 IN HANDLEMESSAGE smartmeter.0 2017-08-12 07:20:56.300 debug PAUSE READING SERIALPORT TO HANDLE MESSAGE smartmeter.0 2017-08-12 07:20:56.299 debug MATCH-RESULT SIGNON: "/ESY5Q3DA2004 V3.03\r\n" -> ["/ESY5Q3DA2004 V3.03\r\n","/ESY5Q3DA2004 V3.03"] smartmeter.0 2017-08-12 07:20:56.298 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-12 07:20:56.297 debug MATCH-RESULT SIGNON: "/ESY5Q3DA2004 V3.03" -> null smartmeter.0 2017-08-12 07:20:56.296 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-12 07:20:56.295 debug MATCH-RESULT SIGNON: "/ESY5Q3DA2004 V3." -> null smartmeter.0 2017-08-12 07:20:56.294 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-12 07:20:56.293 debug MATCH-RESULT SIGNON: "/ESY5Q3DA2004 " -> null smartmeter.0 2017-08-12 07:20:56.292 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-12 07:20:56.290 debug MATCH-RESULT SIGNON: "/ESY" -> null smartmeter.0 2017-08-12 07:20:56.288 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE smartmeter.0 2017-08-12 07:20:55.518 debug SET MESSAGE TIMEOUT TIMER: 120000 smartmeter.0 2017-08-12 07:20:55.511 debug SERIALPORT OPEN smartmeter.0 2017-08-12 07:20:55.491 debug CREATE SERIALPORT: 9600 7 1 even smartmeter.0 2017-08-12 07:20:55.484 debug SmartmeterObis options: {"debug":2,"protocol":"D0Protocol","transport":"SerialResponseTransport","requestInterval":"10","transportSerialPort":"/dev/ttyUSB0","transportSerialBaudrate":9600,"transportS smartmeter.0 2017-08-12 07:20:55.473 info starting. Version 0.5.12 in /opt/iobroker/node_modules/iobroker.smartmeter, node: v6.11.2
-
Ok, die Identifikation wird empfangen und danach nichts mehr. Es kann sein das er ein "ack" erwartet … würde aber gegen das sprechen was du oben als Beispiel hattest wo er es von sich aus gesendet hat ... die overrides kannst du mal durchprobieren falls du es nicht schon hast. Sonst schau ich gern nach dem 20.8. rein, da bin ich zurück aus dem Urlaub
-
Ps: mode override geht aber nur wenn Transport auf bidirektional senden und empfangen steht!