Raspberry als ModBus/TCP SLAVE-Server: C.M.I über ModBus/TCP mit Raspi verbinden und analoge/digitale Ein-und Ausgänge von UVR16xx über ModBus lesen und schreiben

Es gibt 117 Antworten in diesem Thema, welches 58.539 mal aufgerufen wurde. Der letzte Beitrag () ist von GOETSCHHOFER.

  • Hallo Jürgen,


    "ja, im iobroker in der Modbus-Instanz unter "Diskrete Ausgänge" eintragen (senden) true/false

    und im CMI Modbus-Eingang-digital (empfangen) Aus/Ein oder Ja/Nein, je nach Einheiten-Definition.


    Könntest du mir bitte noch einen Screenshot von deinen Einstellungen u. den Verbindungseinstellungen im Modbus-Adapter hier einstellen ?


    Meines Erachtens kann es nur an einen dieser Hacken liegen ?

    Bei der Anlage habe ich keine Fehlermeldungen.


    Wo hackst du senden an ? Abfrage kann es ja nicht sein, da ich dieses Test-Objekt sende ?




    Danke



    LG



    karl

  • Hallo Karl,


    aus deinen Modbus-Instanz-Einstellungen und den Log-Informationen vom iobroker kann man erkennen,

    dass du eine ModBus/TCP Direktverbindung (CMI-Master <==> iobroker-Slave) betreibst.

    Ich betreibe die Modbus-Instanz vom iobroker nicht im Slave-Modus in ModBus/TCP Direktverbindung mit der IP-Adresse 0.0.0.0 (CMI-Master <==> iobroker-Slave).


    Leider gibt es keine CMI <==> iobroker Direktverbindung über ModBus/TCP die 100%ig funktioniert.

    Mit den Modbus-HoldingRegister (schreiben mit Funktion 06, lesen mit Funktion 03) scheint es damit bei vielen zu gehen, aber sonst nix ohne Probleme.


    Informationen aus dem Handbuch vom CMI:

    (2) Eingabe der IP-Adresse und der herstellerspezifischen Angaben für den Modbus-Wert, der ausgelesen wird.

    Diese Definition lässt natürlich sehr viele Interpretationen zu, hier liegt das eigentliche Problem.

    Ein Hersteller sagt zum anderen Hersteller herstellerspezifisch, nix genaues weiss man.

    (3) Festlegung des Ausleseintervalls.

    (4) Timeoutzeit: Wenn innerhalb dieser Zeit kein neuer Wert vom Modbus-Gerät ausgelesen werden kann,

    wird entweder der zuletzt abgefragte Wert oder der nachfolgend eingestellte Ausgabewert übernommen.


    Auch von TA (Technische Alternative, Hersteller vom CMI) gibt es bezüglich Verbindungen die über ModBus/TCP laufen könnten, keine Empfehlung dies so zu machen.

    Speziell für Modbus-Anbindung hat TA andere Produkte vorgesehen, z.B. den CAN Buskonverter mit Zusatzmoduln.


    Ansonsten sagt TA: Mit der JSON-API für das C.M.I. können Sie Werte und Logdaten aller verbundenen CAN-Knoten mittels HTTP-Request abfragen um sie in "externen" Anwendungen (eigene Visualisierungen oder Statistiken) zu verwenden.

    Die JSON-API für das C.M.I. ist aber nur zum auslesen von Daten aus der CMI und leider nicht zum reinschreiben von Daten in die CMI.


    Andere funktionierende Lösungen CMI mit iobroker über ModBus/TCP zu verbinden, machen eine Portumleitung (502->1502) oder verwenden einen zusätzlichen Slave-Server (fhem,..usw.).

    Wenn man lange sucht wird man noch ein paar andere Varianten finden, die aber schwer nachzuvollziehen sind.


    Weil die Direktverbindung CMI <==> iobroker über ModBus/TCP nicht 100%ig funktioniert, verwende ich diese auch nicht.

    Meine iobroker Verbindung zum CMI geht über den Hilfs-Server(diagslave) und funktioniert zum reinschreiben von Daten in die CMI, diese Verbindung habe ich schon im ersten Beitrag beschrieben:

    Da wird wie im CMI-Handbuch beschrieben im CMI-Modbus-Eingang-digital die IP-Adresse vom diagslave-Modbus-Slave-Server, oder hier in unserem Beispiel die IP-Adresse vom Raspi(192.168.15.116) auf dem der diagslave-Modbus-Slave-Server läuft, eingetragen.


    Folgender Daten-Fluss ergibt sich dann daraus:

    CMI-Modbus-Master-Server <==> diagslave-Modbus-Slave-Server <==> iobroker-Modbus-Master-Server

    CMI-Master-Modbus-Server <==> diagslave-Modbus-Slave-Server <==> python-scipt-Modbus-client


    iobroker-modbus-instanz


    iobroker-modbus-diskrete-Ausgänge


    iobroker-modbus-objekte


    CMI-modbus-Eingang-digital



    Bei mir sehen die Modbus-Logeinträge im iobroker wie folgt aus:

    ...

    modbus.0 2021-11-14 09:33:14.215 debug (23128) Poll coils DevID(1) address 0 - 16 bits

    modbus.0 2021-11-14 09:33:14.214 debug (23128) Poll device 1

    modbus.0 2021-11-14 09:33:13.159 debug (23128) Poll coils DevID(1) address 0 - 16 bits

    modbus.0 2021-11-14 09:33:13.158 debug (23128) Poll device 1

    modbus.0 2021-11-14 09:33:12.105 debug (23128) Poll coils DevID(1) address 0 - 16 bits

    modbus.0 2021-11-14 09:33:12.105 debug (23128) Poll device 1

    modbus.0 2021-11-14 09:33:11.049 debug (23128) Poll coils DevID(1) address 0 - 16 bits

    modbus.0 2021-11-14 09:33:11.048 debug (23128) Poll device 1

    modbus.0 2021-11-14 09:33:09.972 debug (23128) Poll coils DevID(1) address 0 - 16 bits

    modbus.0 2021-11-14 09:33:09.970 debug (23128) Poll device 1

    modbus.0 2021-11-14 09:33:09.968 info (23128) Connected to slave 127.0.0.1

    modbus.0 2021-11-14 09:33:09.265 info (23128) starting. Version 3.1.6 in /opt/iobroker/node_modules/iobroker.modbus, node: v10.22.1, js-controller: 3.1.6

    ...


    Der iobroker-Modbus-Master-Server und der diagslave-Modbus-Slave-Server laufen beide auf dem Raspi(192.168.15.116),

    deshalb muss dann im iobroker in der Modbus-Instanz im Master-Mode die Ip-Adresse localhost (127.0.0.1) eingetragen werden.


    Die Installation von pymodbus,pyModbusTCP zum Ausführen der python-scripte auf dem Raspi in einem Terminalfenster ausführen:

    sudo apt-get update

    sudo apt-get install python-dev

    sudo apt-get install python-pip

    sudo pip install pymodbus

    sudo pip install pyModbusTCP


    Installation diagslave:

    Die Datei diagslave-3.4.tgz in einen Ordner vom internet (https://www.modbusdriver.com/diagslave.html) herunterladen und dann das Archiv entpacken.

    Entpacken geht am einfachsten mit dem mc (vorher mc installieren mit sudo apt-get install mc).

    Einfach auf die Datei diagslave-3.4.tgz draufklicken, dann wird in ein Verzeichnis diagslave hinein entpackt.

    dann dieses entpackte diagslave-Verzeichnis ins andere Fenster kopieren mit F5 oder "kopieren" (Häkchen setzen bei "links folgen" und in "Unterverzeichnis legen..".


    Starten von diagslave-Modbus-Slave-Server:

    In einem Terminal-Fenster Im diagslave-Verzeichnis der Raspi-Version.

    pi@raspberrypi:~/diagslave/arm-linux-gnueabihf $

    die ausführbare datei diagslave aufrufen mit:


    pi@raspberrypi:~ $ sudo ./diagslave -m tcp

    diagslave 3.4 - FieldTalk(tm) Modbus(R) Diagnostic Slave Simulator

    Copyright (c) 2002-2021 proconX Pty Ltd

    Visit ----- for Modbus libraries and tools.


    Protocol configuration: MODBUS/TCP

    Slave configuration: address = -1, master activity t/o = 3.00s

    IP configuration: port = 502, connection t/o = 60.00s


    Server started up successfully.

    Listening to network (Ctrl-C to stop)


    validateMasterIpAddr: accepting connection from 192.168.15.130

    Slave 1: readCoils from 11, 1 references

    .....

    validateMasterIpAddr: accepting connection from 127.0.0.1

    Slave 1: readCoils from 11, 1 references

    Slave 1: writeCoils from 11, 1 references

    Slave 1: readCoils from 11, 1 references

    ...

    validateMasterIpAddr: accepting connection from 192.168.15.130

    Slave 1: readCoils from 11, 1 references

    ..

    validateMasterIpAddr: accepting connection from 127.0.0.1

    Slave 1: readCoils from 11, 1 references

    Slave 1: writeCoils from 11, 1 references

    Slave 1: readCoils from 11, 1 references

    ....

    validateMasterIpAddr: accepting connection from 192.168.15.130

    Slave 1: readCoils from 11, 1 references

    ...


    In der diagslave-console sieht man auch was der diagslave-Slave-Server grad so macht. Man kann dies auch als grobes Monitoring verwenden, um zu sehen ob die gewünscheten Modbus-Register gelesen und geschrieben werden.


    Die Aktivitäten in unserem Beispiel-Test sind:

    Direkt nach dem server-starten kommt vom CMI(192.168.15.130) ein connect und liest die coils.

    Danach kommt ein connect vom coil10ein.py script(127.0.0.1) und liest, schreibt, liest die coils.

    Anschliessend kommt vom CMI(192.168.15.130) wieder ein connect und liest die coils.

    Dann kommt ein connect vom coil10aus.py script(127.0.0.1) und liest, schreibt, liest die coils.

    Zum Schluss kommt vom CMI(192.168.15.130) wieder ein connect und liest die coils

    usw.


    Das python-script coil10ein.py wird in einem Terminal-Fenster wie folgt gestartet:


    pi@raspberrypi:~ $ python coil10ein.py

    define modbus localhost:502

    not c.is_open or reconnect localhost:502

    is open --> to connect to localhost:502

    Tx

    [5A E0 00 00 00 06 01] 01 00 0A 00 01

    Rx

    [5A E0 00 00 00 04 01] 01 01 00

    bit adr #10: [False]

    Tx

    [41 CE 00 00 00 06 01] 05 00 0A FF 00

    Rx

    [41 CE 00 00 00 06 01] 05 00 0A FF 00

    write ok

    Tx

    [4E A7 00 00 00 06 01] 01 00 0A 00 01

    Rx

    [4E A7 00 00 00 04 01] 01 01 01

    bit adr #10: [True]



    Das python-script coil10aus.py wird in einem Terminal-Fenster wie folgt gestartet:


    pi@raspberrypi:~ $ python coil10aus.py

    define modbus localhost:502

    not c.is_open or reconnect localhost:502

    is open --> to connect to localhost:502

    Tx

    [15 5A 00 00 00 06 01] 01 00 0A 00 01

    Rx

    [15 5A 00 00 00 04 01] 01 01 01

    bit adr #10: [True]

    Tx

    [C9 04 00 00 00 06 01] 05 00 0A 00 00

    Rx

    [C9 04 00 00 00 06 01] 05 00 0A 00 00

    write ok

    Tx

    [1A 39 00 00 00 06 01] 01 00 0A 00 01

    Rx

    [1A 39 00 00 00 04 01] 01 01 00

    bit adr #10: [False]



    Beide python-scripte, coil10ein.py und coil10aus.py sind im Datei-Anhang verfügbar.


    Die python-scripte sind mögliche Hilfsmittel um hier die coils von der Adresse 10 ein -und auszuschalten.

    Du kannst auch alles dirkt manuell im iobroker in der modbus-Objektliste in der Spalte "Wert", ganz rechts in der Zeile ändern, wenn in dem Kästchen den Haken einschaltest (true) oder den Haken im Kästchen weg machst (false).

    Eine spezielle Sende-Taste gibt es nicht, denn es wird ständig gepollt laut Definition in den iobroker-Modbus-Instanz-Definitionen von den diskreten Ausgängen und somit wird eine Änderung automatisch erkannt auch im CMI.


    Mein verwendeter ModBus/TCP diagslave-Modbus-Slave-Server ist multi-connect-fähig, ist frei verfügbar für alle gängigen OS (Win,Linux,Raspi) das war für mich wichtig, weil ich auch viel mit python-scripten und ESP32 arbeite.


    Für meinen Bedarf ist das vollkommen ausreichend, denn ich kann meine UVR-Solaranlage-Heizung-Steuerung mit der Aussenwelt zum Datenaustausch verbinden.

    Es gibt leider nichts fertiges zum kaufen, das die Vergangenheit und die Zukunft problemlos miteinander verbindet, nur das selbst erlebte dazwischen.


    Meine ganzen Datenquellen habe ich inzwischen in MQTT-Messages überführt.

    Das scheint mir für die Zukunft im digitalen Zusammenspiel vom Bereich Wärme und Energie mittels IOT (=Internet of Things) am vielversprechendsten zu sein.

    Die herstellerspezifischen Protokolle in den verschiedenen Produkten (Firmware) müssen innovationsfördernd sein,

    denn es ist kein Trend zur Vereinheitlichung zu erkennen.


    Gruß

    Jürgen

    Dateien

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen,


    vielen, vielen Dank für die profunde u. professionelle Dokumentation des Themas CMI u. Modbus-TCP/IP Ausgang u. Eingang. :thumbup:


    Du forderst mich aber geistig ganz schön heraus. :)


    Jetzt wird mir einiges klarer und so verstehe ich auch besser dein System und die Vorgehensweise.

    Ich habe mich schon gewundert, warum du dies über einen Hilfs-Server(diagslave) machst. ;)


    Ansonsten sagt TA: Mit der JSON-API für das C.M.I. können Sie Werte und Logdaten aller verbundenen CAN-Knoten mittels HTTP-Request abfragen um sie in "externen" Anwendungen (eigene Visualisierungen oder Statistiken) zu verwenden.

    Die JSON-API für das C.M.I. ist aber nur zum auslesen von Daten aus der CMI und leider nicht zum reinschreiben von Daten in die CMI.

    Ja, das Auslesen des CMI über JSON-API mache ich über ein Blockly, funktioniert auch einwandfrei, aber das reinschreiben vom iobroker ins CMI eben nicht.


    Andere funktionierende Lösungen CMI mit iobroker über ModBus/TCP zu verbinden, machen eine Portumleitung (502->1502) oder verwenden einen zusätzlichen Slave-Server (fhem,..usw.).

    Den Fhem-Adapter habe ich schon installiert, nur wie läuft dies dort genau ? Wäre dies für mich einfacher ?



    Ich hatte ja bis Mai einen RSPPi3+ im Einsatz und bin dann auf einen INTELNUC umgestiegen, da ich den RSPPi3+ bezüglich Rechnerleistung mit meinen vielen Anwendungen vollkommen überfordert habe. Der INTELNUC (16MB RAM) 256 MB SSD) macht dies mit Leichtigkeit.

    Hier läuft bei mir auf proxmox auf einer VM (Virtuel machine) IOBROKER und jeweils auf einem LXC (=Container) InfluxDB, Grafana.


    Die Frage ist wie ich dort den diagslave-Hilfsserver installieren muss ?

    Über Putty im iobroker wie von dir beschrieben ?

    Habe gerade durch meine Abfrage gesehen, dass auf dem iobroker ja bereits python 2.7.16. installiert ist.


    Da ich mit Python überhaupt keine Erfahrung habe, würde mich dies schon reizen.




    holzheizer-forum.de/attachment/28680/



    Danke nochmals für die tolle Abhandlung und die vielen Infos.



    LG



    Karl

  • Hallo Jürgen,


    habe mal nach deiner Anleitung im iobroker folgendes durchgeführt:


    Die Installation von pymodbus,pyModbusTCP zum Ausführen der python-scripte auf dem Raspi in einem Terminalfenster ausführen:

    sudo apt-get update

    sudo apt-get install python-dev

    sudo apt-get install python-pip

    sudo pip install pymodbus

    sudo pip install pyModbusTCP


    Habe da Hinweis-/Fehlermeldungen bekommen, weißt du was dies zu bedeuten hat ?

    Das folgende Paket wurde automatisch installiert und wird nicht mehr benötigt:

    linux-image-4.19.0-16-amd64

    Verwenden Sie »sudo apt autoremove«, um es zu entfernen.


    Installation diagslave: Da komme ich mit deiner Installationsanweisung nicht ganz klar ?

    Wie kann ich in Linux auf der Putty-Ebene downloaden ?

    sudo apt-get install mc habe ich installiert.


    Installation diagslave:

    Die Datei diagslave-3.4.tgz in einen Ordner vom internet (https://www.modbusdriver.com/diagslave.html) herunterladen und dann das Archiv entpacken.

    Entpacken geht am einfachsten mit dem mc (vorher mc installieren mit sudo apt-get install mc).

    Einfach auf die Datei diagslave-3.4.tgz draufklicken, dann wird in ein Verzeichnis diagslave hinein entpackt.

    dann dieses entpackte diagslave-Verzeichnis ins andere Fenster kopieren mit F5 oder "kopieren" (Häkchen setzen bei "links folgen" und in "Unterverzeichnis legen..".


    Beim Downloaden habe ich die Datei nur in Windows nicht in Linux-iobroker ?






    Danke für die Hilfe


    LG



    Karl


    login as: karl

    karl@192.168.1.176's password:

    Linux IOBROKER 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64


    The programs included with the Debian GNU/Linux system are free software;

    the exact distribution terms for each program are described in the

    individual files in /usr/share/doc/*/copyright.


    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

    permitted by applicable law.

    Last login: Sun Nov 14 17:22:51 2021 from 192.168.1.3

    karl@IOBROKER:~$ sudo apt-get update

    [sudo] Passwort für karl:

    OK:1 http://deb.debian.org/debian buster InRelease

    OK:2 http://security.debian.org/debian-security buster/updates InRelease

    OK:3 http://deb.debian.org/debian buster-updates InRelease

    OK:4 https://repos.influxdata.com/debian buster InRelease

    OK:5 https://deb.nodesource.com/node_12.x buster InRelease

    Paketlisten werden gelesen... Fertig

    karl@IOBROKER:~$ sudo apt-get install python-dev

    Paketlisten werden gelesen... Fertig

    Abhängigkeitsbaum wird aufgebaut.

    Statusinformationen werden eingelesen.... Fertig

    python-dev ist schon die neueste Version (2.7.16-1).

    Das folgende Paket wurde automatisch installiert und wird nicht mehr benötigt:

    linux-image-4.19.0-16-amd64

    Verwenden Sie »sudo apt autoremove«, um es zu entfernen.

    0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

  • Hallo Karl,


    ja, das wichtigste ist zuerstmal der diagslave. Das Programm ist eigenständig und kann sich unter anderem auch mit iobroker verbinden, aber auch mit anderen modbus-Mastern wie CMI oder modbus-Client-Programmen.


    Nachdem das Installieren von sudo apt-get install mc auf dem NUC geklappt hat, dann solltest alles weitere auch fertigbekommen.


    Dateien kann man auch im putty-Fenster im NUC mit wget herunterladen mit:


    wget https://www.modbusdriver.com/downloads/diagslave.tgz


    Die Datei, die das Tool herunterlädt, wird im aktuellen Arbeitsverzeichnis des Benutzers gespeichert.


    Das nicht mehr benötigte Paket (linux-image-4.19.0-16-amd64) muss nicht unbedingt sofort mit autoremove weggelöscht werden, das kann weggelöscht werden, würde mich im Moment aber nicht stören.


    Für den ersten Test zuerst mal den digislave zum laufen bringen.

    Für den NUC ist die Version vom diagslave aus dem Verzeichnis /diagslave/x86_64-linux-gnu zu verwenden,

    denn dein Intel-NUC hat eine andere CPU-Architektur als der Raspi.


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen,


    super, Download hat dank deiner präzisen Anweisung geklappt. :thumbup::)


    Nur wie entpacke ich diese nun und wo hat er diese abgespeichert ?


    Oder hätte ich vorher einen Ordner z. B. mit mkdir diagslave anlegen müssen und in diesen downloaden ?


    Mit tar xzf diagslave-3.2.tgz bekomme ich eine Fehlermeldung ?





    holzheizer-forum.de/attachment/28689/

    Sorry, hier stehe ich auf dem Schlauch.


    Danke


    LG



    karl




    holzheizer-forum.de/attachment/28688/

  • Hallo Karl,


    jetzt fehlt nicht mehr viel.


    Also man kann im putty-Fenster im NUC auch mit dem bereits gelb markierten Befehl auch entpacken...wenn mit mc das noch nicht klappt.


    Du bist ja noch im gleichen Verzeichnis in dem vorhin die Datei mit wget runtergeladen hast.

    Dann im putty-Fenster im NUC den Befehl eingeben:

    tar xzf diagslave-3.2.tgz


    dann wird ausgepackt und ein Verzeichnis /diagslave mit Unterverzeichnissen angelegt.


    diagslave-Server starten heisst das richtige diagslave-Programm einfach starten.


    dazu ins richtige Verzeichnis wechseln mit:

    cd diagslave eingeben ,dann solltest im neuen diagslave-Verzeichnis sein.

    dann:

    cd x86_64-linux-gnu eingeben, dann solltest im neuen x86_64-linux-gnu-Verzeichnis sein.


    in diesem Verzeichnis das Programm diagslave starten mit:

    sudo ./diagslave -m tcp


    dann sollte der server starten und die bereits von mir gezeigten Meldungen sollten so ähnlich erscheinen.

    Wenn das so ist, dann läuft der diagslave-Modbus-Slave-Server auf deinem NUC.


    Dann kannst in der iobroker Modbus-Master Instanz die IP-Adresse 127.0.0.1 eintragen

    und im CMI-Modbus-Eingang-digital mit Adresse 10 die IP-Adresse vom NUC eintragen,

    so wie in den Bildern von mir sehen kannst.

    Dann sollte eine Modbus-Verbindung von CMI über digslave zum iobroker zum laufen kommen.


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Karl,


    sorry, hab die Fehlermeldung übersehen.


    Also einfach mc eingeben, dann wird der Midnight-Commander gestartet.


    Normalerweise sollte die datei diagslave-3.2.tgz im aktuellen Verzeichnis zu finden sein.


    Also mit dem mc die Datei suchen. Wenn gefunden, dann in das Verzechnis wechseln und die Aktionen von vorhin durchführen.


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen,


    kein Problem.


    Aktuell sieht es bei mir so aus.

    Die Datei diagslave.tgz liegt im Verzeichnis: /home/karl


    Ich habe unten in mc auf das Verzeichnis geklickt. Ist es damit schon entpackt ?

    Die links rot markierte Zeile, F5 Häckchen setzen hab ich noch nicht verstanden, aber es wird schon, dank Anleitung. :)




    Danke



    LG



    Karl

  • Hallo Karl,


    super, hast die Datei diagslave-3.2.tgz gefunden und schon ausgepackt.

    das mit den Häkchen beim kopieren benötigt man nur zum kopieren von ganzen Verzeichnissen incl. Unterverzeichnissen, damit diese auch mitgenommen werden.


    Zum kopieren einer einzigen Datei vom rechten Fenster ins linke Fenster braucht man keine Häkchen setzten, da genügt einfach F5 Taste zum Kopieren.


    Also dann würde ich sagen wir kopieren nur eine Datei diagslave vom rechen Fenster ins linke Fenster.

    Zuerst musst noch im rechten Fenster ins richtige Verzeichnis wechseln. Ins "x86_64-linux-gnu" Verzeichnis.

    Dann siehst in dem Verzeichnis eine datei diagslave. Und genau diese kopieren wir vom rechten ins linke Fenster mit F5 Taste.


    Musst dir noch den Verzeichnisnamen vom linken Fenster merken, damit nachher wenn der mc beendet ist, mit cd Kommandos dahin wechseln kannst.

    Wenn der mc beendet ist dann kannst mit dem Befehk pwd das aktuelle Verzeichnis ermitteln in dem du dich gerade befindest.


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen,


    jetzt ist die Datei diagslave im Verzeichnis: node_modules. Macht dies was oder sollte diese Datei besser in einem anderen Verzeichnis stehen ?


    LG



    Karl

  • Hallo Karl,


    normalerweise sollte das /home/karl Verzeichnis dein standard-Verzeichnis sein.. dorthin würde ich es kopieren.

    Also im linken Fenster ins /home/karl Verzeichnis wechseln und nochmal vom rechten Fenster ("x86_64-linux-gnu" Verzeichnis) die datei diagslave mit F5 ins linke Fenster kopieren.


    Dann wäre die richtige diagslave datei im /home/karl Verzeichnis.


    Dann mc beenden und ins /home/karl Verzeichnis wechseln. Dort muss dann die diagslave datei sein.


    Gut, dann kanns ja weiter gehen mit dem server starten aus dem /home/karl Verzeichnis heraus.




    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen,


    ja, das Verzeichnis war schon richtig, aber irgendwie hat mir der Backslash/ vorhin vor der Datei gefehlt.

    Damit lautet das Verzeichnis: cd /home/karl/x86_64......



    Habe in das Verzeichnis x86.... gewechselt und mit sudo ./diagslave -m tcp den 1. Server gestartet.

    ist dies o.k. ? Ich glaube das passt noch nicht, wenn ich dies mit deiner Doku vergleiche. Ich sehe keine Infos.


    Weiters:

    TCP Port alread bound!

    Shutting down server.





    Hilft dir diese Info über die Abfrage sudo netstat -tulpn weiter ?


    1. Ansicht:


    2. Wenn ich auf Verzeichnis karl klicke, bekomme ich folgende Ansicht:

  • Hallo Karl,


    super, dann hast ja schon fast das Ziel erreicht, wenn der server nicht wegen port Problem heruntergfahren würde.


    Wahrscheinlich läuft noch im iobroker eine SLAVE-Instanz auf port 502 oder hast eine anderes Programm laufen das auf port 502 arbeitet?

    Im iobroker musst halt die SLAVE-Instanz auf port 502 löschen und eine neue Master-Instanz auf port 502 anlegen.


    In welchem Verzeichnis der diagslave letztendlich läuft, bleibt dir überlassen. Es gibt kein vorgeschriebenes Verzeichnis dafür.


    Also den port freimachen und ein neuer Versuch.


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen,


    ich habe den modbus.0-Adapter mit Port: 502 als Master laufen, welcher mir die Werte vom Smartfox Pro (=Stromseite) holt.


    Weiters läuft der modbus.1-Adapter mit Port: 502 als Slave, welcher vom CMI über Modbus TCP-Ausgang analoge u. digitale Werte gesendet bekommt.


    Im iobroker musst halt die SLAVE-Instanz auf port 502 löschen und eine neue Master-Instanz auf port 502 anlegen.

    In welchem Verzeichnis der diagslave letztendlich läuft, bleibt dir überlassen. Es gibt kein vorgeschriebenes Verzeichnis dafür.

    Also den port freimachen und ein neuer Versuch.


    Hier kann ich dir noch nicht folgen ?

    Wenn ich den bestehenden Modbus.1-Adapter auf Slave und 127.0.0.1 (Localhost), wie in einer detaillierten Abhandlung ändere, müsste das Ganze ja dann wie folgt laufen:

    CMI-Master - Port-502 an Diagslave - Diagslave Port:127.0.0.1-Localhost an Master: 502 Modbus.1-Adapter


    Könnte dies so funktionieren ?




    holzheizer-forum.de/attachment/28711/



  • Hallo Karl,


    in deiner Portauflistung wird mit netstat -tulpn wird ja die modbus.1 Instanz angezeigt, die schon auf port 502 horcht.


    Zwei Programme können anscheinend nicht auf dem gleichen port 502 auf dem gleichen rechner horchen.


    Man könnte versuchsweise in der SLAVE-Instanz modbus.1 im iobroker die port adresse von 502 nach 1502 ändern, damit siehst, ob die modbus.1 Instanz tatsächlich das Problem ist. Du kannst sowiso nicht zwei verbindungen zum CMI gleichzeitig machen. Das CMI ist nicht multiconnectfähig, der diagslave sehrwohl.


    Dann kannst ja später entscheiden wann die SLAVE-Instanz modbus.1 im iobroker (direkt-Verbindung zum CMI) löschen willst.


    Eine Modbus-Master-Instanz im iobroker brauchst auf jedenfall zur Verbindung zum diagslave.


    CMI - Port-502 an Diagslave - Diagslave Port:127.0.0.1-Localhost an Slave Modbus.1-Adapter -> funktioniert nicht.


    Es geht immer nur Master zu Slave und nicht Slave to Slave und auch nicht Master zu Master.


    In unserem Fall CMI-(Master-server) zu diagslave-(Slave-server) zu iobroker-(Master-server).


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen,


    danke nochmals für deine Mühe und Geduld mit mir. :thumbup:


    "Zwei Programme können anscheinend nicht auf dem gleichen port 502 auf dem gleichen rechner horchen."

    Dies habe ich schon befürchtet, dass sich dies hier gegenseitig in die Quere kommt.


    192.168.1.176: IOBROKER


    Bis vor einigen Jahren war laut TA auf dem CMI nur ein fixer Port: 502 möglich. Mittlerweile kann man diesen abändern, z. B. auf 1502


    Dies habe ich noch nicht ganz verstanden:

    Man könnte versuchsweise in der SLAVE-Instanz modbus.1 im iobroker die port adresse von 502 nach 1502 ändern, damit siehst, ob die modbus.1 Instanz tatsächlich das Problem ist. Du kannst sowiso nicht zwei verbindungen zum CMI gleichzeitig machen. Das CMI ist nicht multiconnectfähig, der diagslave sehrwohl.

    Die Daten vom CMI-Master kommen ja über Port: 502. Müsste ich da nicht auch im CMI den Port auf 1502 u. in der Slave-Instanz modbus.1 auf 1502 ändern ?


    Könnte dies funktionieren ?

    In unserem Fall CMI-(Master-server-Port: 1502) zu diagslave-(Slave-server-Port: 1502) zu iobroker-(Master-server-Port: 1502).


    Da ich mir aktuell eine Menge analoge und digitale Werte vom CMI-Port: 502 direkt an den modbus.1-Adaper zur Visualisierung in Grafana sende, könnte ich nicht die bisherigen Werte sämtliche über den diagslave-Slave-Server senden und anschließend vom iobroker Master-Server abholen lassen ?

    Da dies aktuell sehr gut funktioniert, möchte ich die digitale Spiegelung des Winsol in iobroker u. Grafana nicht aufgeben.



    Echt ein interessantes und spannendes Thema. Habe mit dir hier seit gestern sehr viel gelernt, z. B. multiconnectfähig, kannte ich bisher nicht. :)


    Danke


    LG




    Karl





  • Hallo Karl,


    ja das Port-Problem lässt sich leicht entschärfen, wenn für jede Modbus-Instanz auf dem iobroker einen eigenen TCP/IP-Port verwendest.

    Das Geheimnis dass mehrere Modbus-Instanzen im iobroker mit dem gleichen Port 502 betreibst, hast ja erst am Schluss gelüftet.


    Ich habe bei mir auch ein zweites Modbusgerät gesucht und gefunden, das ich zum testen an den iobroker per ModbusTCP anschliessen kann.

    Mein victron-venus-gx Steuergerät kann auch ModbusTCP und MQTT.


    Da habe ich jetzt zum testen auch zwei Modbus-Master-Instanzen im iobroker aufgebaut.


    Ja genau, beim CMI kann man ab der Firmware-Version 1.37.1 den Modbus TCP/IP-Port ändern.

    Ich hab für den Test im CMI usw. den Modbus TCP/IP-Port auf 503 geändert.


    Zum starten des diagslave mit dem neuem TCP/IP-Port 503 kommt dann noch ein Parameter dazu:

    sudo ./diagslave -m tcp -p 503


    In einem Handbuch für Modbus-Router-Benutzer von Industrieanlagen hab ich gelesen,

    dass bei mehreren Mastern pro IP-Adresse die TCP/IP-Ports (502,503,504..) entsprechend erhöht wurden.


    Mein iobroker-Testaufbau mit zwei Modbus-Master(modbus.0, modbus.1) und zwei TCP/IP-Ports(502,503):

    modbus.0 iobroker-(Master-server-Port: 503) <==> diagslave-(Slave-server-Port: 503) <==> CMI-(Master-server-Port: 503)

    modbus.1 iobroker-(Master-server-Port: 502) <==> victron-venus-gx-(Slave-Port: 502)


    In allen Logs, die inzwischen auch kennst, kann man einen fehlerfreien Betrieb feststellen.

    Also so müsste es bei dir dann auch problemlos funktionieren.


    Gruß

    Jürgen

    Atmos D15P mit A25; LambdaCheck; UVR1611 mit CAN-I/O44, BL-NET und CMI ;
    2x1000l Puffer mit 2x10m² VRK und glykolfreie Solarthermie(Ost-West); WW-FWS; zentrale Wasserenthärtung;

    PV 3,2 kWp EEG; PV-Insel 6 kWp mit Victron MultiPlus-II 48/5000/70-50 und 8 x PylonTech LiFePo4 Modul 48V 2,4 kWh US2000 mit BMS; Victron Cerbo-GX;

    Herkules SE 5000 DF DIESEL Elektrostart Stromerzeuger Generator 2x220V-1x380V, Dauerleistung 4.200 Watt, 11 Stunden Dauerbetrieb, Tankinhalt 13,3 l

  • Hallo Jürgen,


    sorry, da war ich etwas naiv, da ich das Problem nicht gleich erkannt habe, ich habe es nur leise vermutet. :)

    '"Das Geheimnis dass mehrere Modbus-Instanzen im iobroker mit dem gleichen Port 502 betreibst, hast ja erst am Schluss gelüftet"


    Falls ich deine Infos verstanden habe und mal für mich zusammenfassen darf, müsste ich wie folgt vorgehen:


    1. Änderung des Ports im CMI auf z. B. 503 (anstatt 502)

    2. Starten des diagslave-Hilfsservers mit sudo ./diagslave -m tcp -p 503,

    3. Änderung der Einstellungen im modbus.1-Adapter wie folgt: CMI-Master - Daten an diagslave an Master-Modbus.1-Adapter

    Partner IP-Adresse: 127.0.0.1 (vorher listen on all IP`s)

    Port: 503 (vorher 502)

    Typ: Master (vorher Slave)





    Danke




    LG




    Karl

  • Hallo Jürgen,


    ich habe jetzt folgendes gemacht.


    1. Im richtigen Ordner mit sudo ./diagslave -m tcp -p 503 den diagslave mit Port 503 gestartet.

    2. Im CMI den Port von 502 auf 503 umgestellt.

    3. Den Modbus.1 Adapter auf 127.0.0.1, Port 503 u. Master umgestellt.

    4. Der Port 503 ist aber bei der Abfrage sudo netstat -tulpn nicht offen ?


    Ich bekomme aber eine Fehlermeldung.


    Was kann dies für einen Grund haben ?


    Jetzt habe ich wieder alles zurückgestellt und jetzt will der Port 502 auch nicht mehr ?


    Danke für die Hilfe.



    LG



    Karl







Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!