NEWS
Modbus adapter
-
@bluefox
> Ich habe jetzt modbus adapter erwitert, so dass Floats and Integers unterstützt sind.
Du codest ja schneller, als ich posten kann da cann ich mein python-script bald in Pension schicken.
> Du kannst so beitragen, dass du Geduld hast und die Interesse nicht verlierst, so dass wir gemeinsam den Adapter fertig machen könne. :!:
Kein Problem - Geduld kostet ja nix (ausser Nerven /Spass off)Das Radzio-Tool ist übrigens Spitze, sowas habe ich gesucht,
Beat
-
was soll ich sagen: ganz einfach - float Big Endian läuft - 100x danke.
erst wollte ich meckern, aber dann merkte ich, dass das radzio-tool auf dem Schlauch stand und deshalb keine Daten im modbus-adapter ankamen.
vielleicht noch ein kleiner Schönheitsfehler: je nach Anwendung hats massenhaft Nachkomma-Stellen, wenn man die begrenzen, bzw. runden könnte wäre schön. Ein Faktor lässt sich ja bereits einstellen und z.B. Wattstunden in Kilowattstunden umformatieren. Super.
jetzt geh ich noch die anderen Formate durch.
-
Klasse! Das freut mich, dass beim jemandem modbus Treiber funktioniert. :!:
Prinzipiell geht es. Jetzt kommt an Details an.
-
habe etwas weiter getestet, da habe ich folgendes festgestellt:
in den Einstellungen der modbusinstanz, wenn man ganz oben in der grünen Zeile links die Adresse etc. einträgt dann sollte doch eine neue Zeile mit diesen Angaben erstellt werden, wenn man auf das + Zeichen drückt? das machts bei mir nicht, zumindest die Adresse ist irgendwas undefinierbares. Ich muss dann in der neuen Zeile korrigieren, dann werden die richtigen Angaben übernommen.
Wenn ich richtig verstanden habe, dann sind erst float und integer eingebaut? bei mir läuft float big endian mit 2 Registern, bei unsigned long und double klemmts noch.
bei hohen Zahlenwerten scheint auch noch ein Problem. Ein Float der in Radzio 1,76365E0006 ergibt, stoppt den modbus-adapter - log:
modbus.0 2015-10-24 03:45:17 error modbus.0 try reconnection modbus.0 2015-10-24 03:45:17 info modbus.0 Disconnected from slave 192.168.0.68 modbus.0 2015-10-24 03:45:17 warn modbus.0 Poll error count: 6 code: Error: Illegal Data Value modbus.0 2015-10-24 03:45:15 warn modbus.0 Poll error count: 5 code: Error: Illegal Data Value modbus.0 2015-10-24 03:45:13 warn modbus.0 Poll error count: 4 code: Error: Illegal Data Value modbus.0 2015-10-24 03:45:11 warn modbus.0 Poll error count: 3 code: Error: Illegal Data Value modbus.0 2015-10-24 03:45:09 warn modbus.0 Poll error count: 2 code: Error: Illegal Data Value modbus.0 2015-10-24 03:45:07 warn modbus.0 Poll error count: 1 code: Error: Illegal Data Value modbus.0 2015-10-24 03:45:07 info modbus.0 Connected to slave 192.168.0.68 modbus.0 2015-10-24 03:45:06 info modbus.0 starting. Version 0.2.6 in /opt/iobroker/node_modules/iobroker.modbus
-
Guten Morgen,
wie läuft das mit der Device-ID? Ich habe mir auch mal das Superprogramm zugelegt. Den Wechselrichter muss ich mit der Device-ID 3 ansprechen, sonst kommt nur 65535…FF.
Gruß Marco
-
@Bluefox: Verständnisfrage: Du verwendest den TooTallNate stack, ist es so, dass man mit dieser library nur RAW-Daten lesen und schreiben kann und man das ganze Zahlenhandling dann selbst macht?
-
Hallo,
Danke Bluefox für das Update mit der DeviceID.
Was für mich wirklich irreführend ist, ist die Adressierung.
Wenn ich die 30803 z.B. für die Netzfrequenz angebe, macht er daraus eine 30802.
Der Valuewert ist nicht richtig.
Im RMM sieht es so aus und ist korrekt:
4998=49,98Hz
Wie lese ich nun die zweite Zeile aus. Alle Adresse haben den Inhalt in der zweiten Zeile bzw. bestehend aus erster und zweiter Zeile.
Bei mir kommt entweder -1 oder eine utopische Zahl heraus. Habe schon mit allen möglichen Varianten versucht.
-
Entwarnung:
> bei hohen Zahlenwerten scheint auch noch ein Problem. Ein Float der in Radzio 1,76365E0006 ergibt, stoppt den modbus-adapter - log:
Dies kam zustande, weil ich das Register in "holdingRegisters" definiert habe. Richtig wäre gewesen: "inputRegisters", zumindest läufts jetzt.oft wird inputRegisters und holdingRegisters verwechselt. inputRegisters sind reine Lese-Register, während holdingRegisters RW sind.
-
Erste Erfolge:
Messwerte aus Siemens PAC 3200 in iobroker
-
Guten Abend.
Kann das sein, dass beim Signed32 die Werte multipliziert werden?
Gruß Marco
-
Nein. Die Werte werde richtig geliefert. (Getestet mir Radzio MMS)
-
Hilft das vielleicht weiter? (Transmission.log vom Radzio!)
<tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x75</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x73</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x73</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x76</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x86</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x88</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x8C</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x97</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x95</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x93</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x94</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x93</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x93</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x92</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x92</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x92</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x67</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x55</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x54</rx> <tx>0x00 0x00 0x00 0x00 0x00 0x06 0x03 0x04 0x78 0x91 0x00 0x02</tx> <rx>0x00 0x00 0x00 0x00 0x00 0x07 0x03 0x04 0x04 0x00 0x00 0x05 0x54</rx>
-
> Hilft das vielleicht weiter? (Transmission.log vom Radzio!)
Da sehe ich jetzt, dass da 2 InputRegister vom DeviceID 3 gelesen werden 30865 und 30866 und es kommt zurück ~1395.Wie sehen deine Einstellungen aus?
-
@Marcolotti - was beinhaltet die Adresse 30865 ? was steht da in Deiner Tabelle 2 U32 FIX2 RO ???
-
@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]