NEWS
Modbus adapter
-
@Starfisch
Die Adresse 30865 steht für den Netzbezug, d.h. welche Leistung ich vom Energieversorger momentan beziehe. Der Wechselrichter holt sich die Information via Broadcast vom SMA Energy Meter. Dafür hatte ich eigens ein Node-Red-Flow gebaut, der dann hoffentlich überflüssig wird.
Die Information zu Einspeisung und Photovoltaik-Leistung rufe ich mit SBFspot alle 20 Sekunden ab. Das ist umständlich und alle 20 Sekunden ist schon recht lang.
Wenn man mehrere Wechselrichter hat, kann man z.B. die SunnyWebbox auslesen, die alle Wechselrichter zusammenfasst. Der ModBus-Adapter ist bzw. wäre daher ein sehr mächtiges Tool.
Im Anhang habe ich für den SMA SunnyBoy 1.5 & 2.5 die ModBus Adressen als Excel-Liste und eine Dokumentation von SMA hinterlegt.
Viele Grüße
Marco
721_modbus-sunnyboy-sb.xls
721_sma_modbus-tb-de-13.pdf -
Guten Morgen,
@BlueFox: Grandios! 2 Updates innerhalb einer Nacht. :mrgreen: :lol: Es funktioniert jetzt tadellos!
Ich bin begeistert.
Vielen Dank für deine Mühe.
-
dann kann man die Sache ja abhaken … ist schon eine beachtliche Leistung von Bluefox, wenn man bedenkt, dass er die Geräte nicht vorliegen hat.
-
dafür läufts bei mir nach dem update nicht mehr:
host-odroid 2015-10-27 08:34:18 info Restart adapter system.adapter.modbus.0 because enabled host-odroid 2015-10-27 08:34:18 error instance system.adapter.modbus.0 terminated with code 6 (uncaught exception) TypeError: 2015-10-27 08:34:18 error at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:134:20) TypeError: 2015-10-27 08:34:18 error at Decoder. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15) TypeError: 2015-10-27 08:34:18 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:301:8) TypeError: 2015-10-27 08:34:18 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:134:20) TypeError: 2015-10-27 08:34:18 error at Manager. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15) TypeError: 2015-10-27 08:34:18 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:220:12) TypeError: 2015-10-27 08:34:18 error at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:295:6) TypeError: 2015-10-27 08:34:18 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:623:35) TypeError: 2015-10-27 08:34:18 error at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:680:21 TypeError: 2015-10-27 08:34:18 error at /opt/iobroker/node_modules/iobroker.modbus/main.js:691:65 TypeError: 2015-10-27 08:34:18 error Cannot read property 'len' of undefined uncaught 2015-10-27 08:34:18 error exception: Cannot read property 'len' of undefined modbus-0 2015-10-27 08:34:18 info starting. Version 0.3.2 in /opt/iobroker/node_modules/iobroker.modbus
versuch mal reboot
reboot hat nichts gebracht …
-
hab zum Testen mal ne neue modbus-instanz erzeugt. das hat nichts geändert. folgendes konnte ich feststellen:
-
ein holding register eintrag funktioniert nur, wenn zuvor ein input register definiert wurde.
-
bei den Objekten wird kein input-register folder erzeugt (siehe Bild unten)
-
die input-register daten werden aber bei den Ereignissen angezeigt.
-
bestimmte register, die vorher als holding-register eingetragen werden mussten funktionieren nur noch als input-register
vielleicht helfen diese Angaben …(?)
Nachtrag 1: 20 Minuten später war der input-register folder da mitsamt den dazugehörigen datenpunkten, diesen Punkt kann man streichen.
leider wird in meiner Register-Liste nicht erwähnt, welche Register RO und welche RW sind. Aber irgendwie plausibel ist das schon, dass die gemessenen Netzspannungen RO sind, und deshalb in die Input-Registers gehören.
Nachtrag 2: hab jetzt alle Datenpunkte in "Input Registers" gezügelt. Scheint mir logisch, und alles funktioniert wieder wie vorher.
( :lol: :lol: :lol: Geduld kostet nichts - ausser Nerven :lol: :lol: :lol:)
-
-
dafür läufts bei mir nach dem update nicht mehr:
host-odroid 2015-10-27 08:34:18 info Restart adapter system.adapter.modbus.0 because enabled host-odroid 2015-10-27 08:34:18 error instance system.adapter.modbus.0 terminated with code 6 (uncaught exception) TypeError: 2015-10-27 08:34:18 error at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:134:20) TypeError: 2015-10-27 08:34:18 error at Decoder. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15) TypeError: 2015-10-27 08:34:18 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:301:8) TypeError: 2015-10-27 08:34:18 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:134:20) TypeError: 2015-10-27 08:34:18 error at Manager. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15) TypeError: 2015-10-27 08:34:18 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:220:12) TypeError: 2015-10-27 08:34:18 error at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:295:6) TypeError: 2015-10-27 08:34:18 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:623:35) TypeError: 2015-10-27 08:34:18 error at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:680:21 TypeError: 2015-10-27 08:34:18 error at /opt/iobroker/node_modules/iobroker.modbus/main.js:691:65 TypeError: 2015-10-27 08:34:18 error Cannot read property 'len' of undefined uncaught 2015-10-27 08:34:18 error exception: Cannot read property 'len' of undefined modbus-0 2015-10-27 08:34:18 info starting. Version 0.3.2 in /opt/iobroker/node_modules/iobroker.modbus
versuch mal reboot
reboot hat nichts gebracht … `
Ändere bitte die Zeile 691 in /opt/iobroker/node_modules/iobroker.modbus/main.js von`lastAddress = address + main.ac.inputRegs[i].len;` auf `~~[code]~~lastAddress = address + main.ac.holdingRegs[i].len;` Richtiger Fix kommt dann am Abend.[/i][/code][/i]
-
hallo Bluefox, danke für die Antwort. Ich habe jetzt alles unter inputregisters eingereiht, was m.M. auch Sinn macht. So funktioniert alles im Moment.
Unabhängig von Deinem Fix stellt sich jetzt die Frage nach dem RW bzw. RO der modbus-Register. Leider ist meine Tabelle diesbezüglich nicht klar. Aber Messwerte überschreiben ist eigentlich unlogisch, sodass input-registers passt. Anders verhält es sich bei akkumulierenden Zählern, die man dann und wann gern mal auf Null stellen möchte oder bei Ausgängen. Ich bin schon mal happy, dass es so läuft, wie es jetzt läuft.
LG Beat
3723_unbenannt3.png -
ist das nicht so:
-
RW - holding registers
-
RO - input registers
??
-
-
ja, genau - deshalb sind meine messwerte jetzt alle in input registers. Schreiben musste ich noch nie, deshalb kann ich nichts dazu sagen. (ist das überhaupt schon implementiert?)
-
> ist das überhaupt schon implementiert?
Ja. Muss gehen. -
so, jetzt habe ich 0.3.3 getestet, nun ist alles wieder wie vorher.
Unsigned long (32 bit bigEndian) für den Betriebsstundenzähler läuft auch, nur 64 bit float gibts glaub ich nicht. Im Radzio-tool ergibt dieses 64bit Register den richtigen Wert mit "64bit sw. floa" Das ist aber nicht so schlimm, weil dieser Parameter zusätzlich auf einer anderen Adresse in 32 bit float abgebildet wird. Ich wollte es nur der Vollständigkeit halber erwähnen. Sowohl beim 32bit als auch beim 64bit Register steht noch "overflow 1.0e+12 " in der Registertabelle.
-
__<size size="85">Guten Tag,
wie kann ich den Modbus Adapter installieren? Stehe hier gerade auf dem Schlauch?
Danke
Gruß</size>__
hat sich bereits erledigt
-
so nachdem ich nun erfolgreich den Modbus Adapter zum laufen bekomme habe schaffe ich es nicht die Daten einzulesen…aus der Dokumentation des Herstellers sind für mich nur folgende Angaben ersichtlich:
Variabe: FA1_TEMP
Adresse: 23
Beschreibung: Aktuelle Kesseltemperatur
Ich schaffe es beim besten willen nicht an die Daten ranzukommen. Kann mir jemand sagen in welchem Register ich die Daten wie eintragen muss? Ich hab schon alles versucht
-
Wie hast du bis jetzt eingestellt? Ist modbus an?
Sieht man das in Log, dass modbus adapter verbunden ist?
48_img_015.png -
Es ist holding register. - auch nach rueckfrage bei oekofen. Aber das lesen funktioniert nur mit ReadWrite das ging zumindest bis letzte woche nicht mit dem Adapter.
Du kannst das mit der Software ananas testen.
-
Es ist holding register. - auch nach rueckfrage bei oekofen. Aber das lesen funktioniert nur mit ReadWrite das ging zumindest bis letzte woche nicht mit dem Adapter `
Was bedeutet "ReadWrite"? Das ist doch HOLDING Register.Konnte man auch mit dem tool lesen?
-
Nein mit radzio geht es nicht. Mit ananas kannst du R und W einstellen. Dann geht es
-
Nein mit radzio geht es nicht. Mit ananas kannst du R und W einstellen. Dann geht es `
Du stellst eigentlich nichts ein. Du sagst nur ob du die Werte liest oder auch schreibst.Und lesen ist nichts anders als READ_MULTIPLE_HOLDING_REGISTERS.
Trotzdem währe es toll, wenn du mir eine Wireshark Aufzeichnung mit ioBroker und eine mit Ananas geben konntest.
-
einen komischen Effekt habe ich, wenn ich die modbus objekte im history adapter aufzeichne, wird keine Grafik gezeichnet. Die Messwerttabelle wird aber schön brav geschrieben. Temperaturen von hm-rpc sehen in der history tabelle genau gleich aus, aber hier wird eine Grafik erstellt. Woran kann das liegen?
Edit 29.10. sorry, Fehlalarm, heute morgen war die Grafik da Ich bin offenbar viel zu ungeduldig …
-
Bin zur zeit gesch. unterwegs. Files liefere ich morgen