Hallo Gemeinde,
ich kämpfe nun schon viele Tagen mit dem ModbusSlave aber es will einfach nix an Daten austauschen. Ich gebe aber zu, so die Ahnung von FHEM hab ich nicht, brauchte aber vor ca. einem halben Jahr eine Möglichkeit 2 Modbus Master zu verbinden. IP-Symcon und C.M.I., was dank Anleitung und einigem probieren hin und her dann auch seitdem Störungsfrei läuft.
FHEM läuft bei mir auf einem win10 Laptop in der Version 5.9 mit strawberry-perl-5.30.0.1-64bit-portable.
Wie bereits erwähnt nur als Brücke zwischen den Mastern. Nun habe ich noch einen SDM630 Zähler angeschafft, dieser wird mittels RS485 USB Adapter von IP-Symcon ausgelesen.
Diese Daten werden dann per Modbus TCP an FHEM übertragen, mit ModbusTCP_CC. Nun müssen diese Daten bzw. eigentlich nur die Gesamtleistung, als Modbus Slave meinem PV Wechselrichter zur Verfügung gestellt werden, damit dieser sich so regeln kann das er etwa bei Nulleinspeisung liegt und der Rest zum Akku laden genutzt wird.
Nun der einzige Erfolg bisher, FHEM findet den Comport und öffnet ihn. Hab es ewig mit "define SDM630 ModbusSlave /dev/ttyS0@19200,8,N,1" und allen möglichen Varianten probiert, aber immer nur Fehler, nach einigen probieren und ewigem suchen mit Google und Co. Und dem Forum bin ich bei "define SDM630 ModbusSlave /com4@19200,8,N,1" gelandet, war nur ein kleiner Hinweis, irgendwo versteckt das es bei Windows anders aufgerufen wird, wobei ich das so nirgends gefunden habe immer mit „dev“ davor nur kommt dann immer „Pfad nicht gefunden“.
so sieht meine derzeitige Config aus:
define CMI ModbusTCP_CC 502
define SDM630 ModbusSlave /com4@19200,8,N,1
define SDM630_30049 dummy
attr SDM630_30049 comment MBR:1,49,H,,F
attr SDM630_30049 group SDM630
attr SDM630_30049 room SDM630
define SDM630_30053 dummy
attr SDM630_30053 comment MBR:1,52,H,,F
attr SDM630_30053 group SDM630
attr SDM630_30053 room SDM630
define SDM630_30057 dummy
attr SDM630_30057 comment MBR:1,56,H,,F
attr SDM630_30057 group SDM630
attr SDM630_30057 room SDM630
Mittels Modbus_CC wird die Leistung auch wie gewollt in SDM630_30053 dummy eingetragen.
Aber nun: der Wechselrichter senden ca. aller 1s die Anfrage zu: Daten lesen, aber es scheitert bei mir nun schon daran, dass irgendwie in FHEM zu erkennen wie und wo die Daten ankommen, geschweige dem, auszuwerten was er sendet. Dank HTerm weiß ich das der Wechselrichter „01 04 00 34 C7 91 17 72 63“ sendet für die Abfrage der Gesamtleistung.
Den Beschreibungen nach habe ich es so verstanden, das der ModbusSlave sich um alles kümmert genau so wie es der ModbusTCP_CC macht (einfügen und läuft) und ich mich nicht erst darum kümmern muss zu verstehen was da alles abläuft im Hintergrund.
Die Kombination ModbusTCP_CC "verbose 5" und ModbusSlave "verbose 5" ergibt das in der LogDatei:
2019.10.02 07:21:40 1: Including C:/FHEM/fhem.cfg
2019.10.02 07:21:40 3: WEB: port 8083 opened
2019.10.02 07:21:40 2: eventTypes: loaded 89 events from ./log/eventTypes.txt
2019.10.02 07:21:41 3: CMI: port 502 opened
2019.10.02 07:21:41 1: Including ./log/fhem.save
2019.10.02 07:21:41 3: Opening SDM630 device /com4
2019.10.02 07:21:41 3: Setting SDM630 serial parameters to 19200,8,N,1
2019.10.02 07:21:41 3: SDM630 device opened
wenn ModbusSlave "verbose 5" allein läuft:
2019.10.02 07:23:18 1: Including C:/FHEM/fhem.cfg
2019.10.02 07:23:18 3: WEB: port 8083 opened
2019.10.02 07:23:18 2: eventTypes: loaded 89 events from ./log/eventTypes.txt
2019.10.02 07:23:18 1: Including ./log/fhem.save
2019.10.02 07:23:18 3: Opening SDM630 device /com4
2019.10.02 07:23:18 3: Setting SDM630 serial parameters to 19200,8,N,1
2019.10.02 07:23:18 3: SDM630 device opened
wenn ModbusTCP_CC "verbose 5" allein läuft:
2019.10.02 07:27:15 1: Including C:/FHEM/fhem.cfg
2019.10.02 07:27:15 3: WEB: port 8083 opened
2019.10.02 07:27:15 2: eventTypes: loaded 89 events from ./log/eventTypes.txt
2019.10.02 07:27:16 3: CMI: port 502 opened
2019.10.02 07:27:16 1: Including ./log/fhem.save
2019.10.02 07:27:18 4: Connection accepted from CMI_192.168.2.11_50421
2019.10.02 07:27:18 5: ModbusTCP_CC_Parse: received [00 00 00 00 00 06] 14 03 00 14 00 01
2019.10.02 07:27:18 4: ModbusTCP_CC_Parse(CMI_192.168.2.11_50421) : caching devspec2array
2019.10.02 07:27:18 5: ModbusTCP_CC_Parse: sending [00 00 00 00 00 05] 14 03 02 01 97
2019.10.02 07:27:18 5: ModbusTCP_CC_Parse: received [00 00 00 00 00 06] 14 03 00 15 00 01
2019.10.02 07:27:18 5: ModbusTCP_CC_Parse: sending [00 00 00 00 00 05] 14 03 02 5C 08
2019.10.02 07:27:18 5: ModbusTCP_CC_Parse: received [00 00 00 00 00 06] 14 03 00 16 00 01
2019.10.02 07:27:18 5: ModbusTCP_CC_Parse: sending [00 00 00 00 00 05] 14 03 02 01 F4
2019.10.02 07:27:18 5: ModbusTCP_CC_Parse: received [00 00 00 00 00 06] 0A 06 00 01 00 7B
2019.10.02 07:27:18 5: ModbusTCP_CC_Parse: sending [00 00 00 00 00 06] 0A 06 00 01 00 7B
Ich hoffe nun auf viele Vorschläge und am besten wäre es natürlich wenn ich es daduch zum laufen bekomme.