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.263 mal aufgerufen wurde. Der letzte Beitrag () ist von GOETSCHHOFER.

  • Hallo Karl


    Es kommt darauf an wie du Bezug und Lieferung definierst.


    Wenn Bezug als Positive Zahl (Watt) ist wird er in der Mathefunktion weggerechnet.(-)
    Wenn Bezug als negative Zahl (Watt) wird er in der Mathefunktion zugerechnet.(+)
    Wenn Lieferung (Einspeisung) als Positive Zahl wird er in der Mathefunktion weggerechnet(-).
    Wenn Lieferung (Einspeisung) als Negative Zahl wird er in der Mathefunktion Zugerechnet (+).


    Als Ergebnis bekommst du den Hausverbrauch (in Watt)
    Für weitere Berechnungen in einen zweiten Mathemodul auf KW hochrechnen (x 1000)
    Anschließend auf einen Stichtagsspeicher , Energiezähler odgl. geben für verschiedene Aufsummierungen .


    Beispiel Bezug und Einspeisung als Positive Zahlen .


    mfg Glutgeist

  • @SolarEngel
    Hallo, ich habe mittlerweile, dank der Hilfe hier im Forum, meine UVR1611 via CMI am ioBroker.
    Klappt soweit ganz gut, bis auf zwei Dinge die mich langsam verzweifeln lassen, daher schreib ich Dich mal an ;)


    Wie bekomme ich den Status eines Digitalen Ausgangs im ioBroker dargestellt.Ich habe den Ausgang der UVR auf einen Eingang am CMI gemappt und als Modbus Ausgang zur Verfügung gestellt. Der Wert wird hier korrekt dargestellt.
    Mein ioBroker bringt keinen Fehler, zeigt aber immer den Wert "0" an. Habe schon mit allen möglichen Typen und Rollen laboriert, bringt aber Nichts.Wäre für einen Tip Dankbar


    Meine zweite Frage ist...wie bekomme ich meine DL Bus Werte (hier Eingang 3/4/5) auf den CMI. Wenn ich diese unter Eingänge/Datenleitung/Analog eintrage steht beim aktuellen Wert immer "0".


    Danke schon mal fürs Durchlesen

  • Hallo Karl-Heinz,


    damit den Status eines Digitalen Ausgangs im ioBroker dargestellt bekommst,
    wird in der iobroker modbus instanz die Adresse (20) in den Diskreten Eingängen definiert mit der Rule value.


    Dann kannst in der Objekt hirarchie von modbus bei den diskreteInputs den status false oder true von der CMI-Modbusadresse (20) des Ausgangs sehen.


    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 ! Das hat perfekt geklappt. Die "Diskreten" hatte ich noch gar nicht auf dem Schirm.
    Hast Du vielleicht auch noch einen Tip wie ich die DL Bus Werte zum ioBroker bekomme?
    Gruss Karl-Heinz


    Hier auch mal der Link zum aktuellen Stand einer meiner vis Prototypen.

  • @Spspaul
    Hallo Alfred,
    ich steh noch immer auf dem Schlauch...
    Wo und wie lege ich die DL Bus Werte genau auf den welchen CAN Ausgang? An der UVR ?
    Wenn ich hier einen analogen NW Ausgang belegen will finde ich nirgendwo die DL Daten im Auswahlfenster. Nur "Benutzer", Eingänge, Ausgänge und Funktionen.


    Ich dachte ich kann einen Werte vom DL Bus "einfach" auf einen Analogen Eingang des CMI legen. Lässt sich ja auch auswählen, es kommt aber kein Wert an...


    Vielleicht kannst Du mich ja am "Händchen nehmen" und das haarklein für Dummies beschreiben?
    Ich glaube mir fehlt da ein Stück Wissen/Verständnis.
    Danke
    Gruss Karl-Heinz

  • Hallo Karl-Heinz,


    der DL Bus am CMI ist nur fürs Loggen über DL Bus und wenn du einen Wert vom DL Bus am CMI verarbeiten willst musst du dort wo der DL Bus angeschlossen ist den Wert des DL Eingangs auf einen NW Ausgang legen denn kann dann das CMI verarbeiten sind halt so ein paar Kleinigkeiten bei TA.


    Sonnige Grüße Reiner
    PS ich bin auch gerade dabei mich mit Iobroker zu befassen und dort versuchen Werte aus der x2 Serie einzubinden

    Sonnige Grüße Reiner

    ETA BK 15 mit Saugzuggebläse und Lambdasonde geregelt mit UVR16x2

    3 X 800 l PS zwei mit Solarwendel und 14 m2 FK mit einem CTC 265 EM als

    Backup und LUVANO 10kW geregelt mit zwei UVR16x2, UVR610 mit CAN-I/O45

    CAN-MTx2 und CMI für eine DHH mit Anbau und 110m2 Heizfläche

  • Hallo Reiner,
    aha, dann ist schon mal klar warum das nicht so geht wie ich will.
    Werde versuchen die DLs an der UVR auf nen NW Ausgang zu legen, bin gespannt.
    Achtung: IoBroker ist ein elender Zeitfresser ;) , und abhängig macht er auch noch.
    Gruß Karl-Heinz

  • Hallo Karl-Heinz,


    ja genauso wie die UVR aber jeder braucht doch ein Spielzeug,


    Sonnige Grüße Reiner

    Sonnige Grüße Reiner

    ETA BK 15 mit Saugzuggebläse und Lambdasonde geregelt mit UVR16x2

    3 X 800 l PS zwei mit Solarwendel und 14 m2 FK mit einem CTC 265 EM als

    Backup und LUVANO 10kW geregelt mit zwei UVR16x2, UVR610 mit CAN-I/O45

    CAN-MTx2 und CMI für eine DHH mit Anbau und 110m2 Heizfläche

  • Ich gebs demnächst auf...habe nun einen DL Eingang auf einen Netzwerk Analog Ausgang gelegt - das wars.... die UVR rebootet permanent, LEDs sind rot und Display zeigt Error27 im Display. Habe den CAN & DL abgezogen, dann hat sie sich beruhigt. Den Netzwerkausgang per "UVR Rändelrad" wieder gelöscht und alles wieder angestöpselt. Nun ist wieder Alles gut. Keine Ahnung was sich da angestellt habe. Ich geh jetzt Abendessen und mach erst mal nix mehr, denn eine warme Wohnung ist mir gerade lieber als die Messwerte...

  • Hallo, ich nochmal...
    Ich habe heute festgestellt, dass mein ioBroker den Status des Lüfters nicht mehr anzeigt. Habe die Registerconfig im ioBroker nochmal gelöscht und neu angelegt. Hat Nichts gebracht.
    Im CMI ist der Status sichtbar, unter den discrete inputs im ioBroker konfiguriert, die Modbus Instanz vom CMI ist auch "grün", aber die Stati werden nicht angezeigt, stehen immer auf "false".
    Was hab ich hier vergeigt...?

  • Hallo Karl-Heinz,


    "... habe heute festgestellt, dass mein ioBroker den Status des Lüfters nicht mehr anzeigt"


    heisst, es hat mal ordentlich funktioniert und es wurden korrekte Werte vom CMI an den ioBroker übertragen und die konntest im ioBroker auch anschauen?


    Mir ist aufgefallen, dass der ioBroker ein ziemlicher Speicherfresser ist, deshalb ist er bei mir immer noch im Teststatus und nicht produktiv.
    Ich würde mal den freien Speicher, die Speicherauslastung und SWAP von deinem NUC überprüfen und ggf. den Rechner neu starten
    und beobachten wie der Speicherverbrauch anwächst.
    Bei mir finden alledings umfangreiche Tests mit mehreren Kanälen (MQTT, Modbus, Javascript) und mehreren angeschlossenen Geräten gleichzeitig statt.


    Weitere Hinweise zu Problemen wirst in den Logs vom ioBroker finden. Da werden sehr viele Informationen in Logdateien geschrieben und ich habe da bisher
    alle meine Fehler und Probleme im ioBroker mit Hilfe dieser Infos nachvollziehen und bereinigen können.


    Beim Löschen würde ich die ganze Modbus-Instanz entfernen und dann wieder neu aufbauen,
    denn dann muss die Verbindung zum CMI neu erstellt und geprüft werden und etwaige Verbindungsprobleme können dann ausgeschlossen werden.


    Ist schon klar, wenn viele Änderungen in einem solchen umfangreichen Smarthome-System durchgführt hast, dass da eine Rückbesinnung
    vieler Änderungen bis zu einem bestimmten Fehler sehr schwierig ist.


    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, nachdem Du mir den Tip mit den diskreten Eingängen gegeben hattest, habe ich den Status des CMI Ausgangs im ioBroker gesehen.
    Speicher und CPU sehen unauffällig aus, haben zwar Spitzen bis 100%, aber ich installiere ja auch noch...
    Eckdaten vom ioBroker - 41 Adapter, 15 eigene Scripts, über 13.000 Objekte und ca. 12.000 Zustände.
    InfluxDB liegt auf einer anderen VM aber auf demselben NUC. Läuft auch alles echt stabil. Insofern kann ich da nicht klagen.


    Ich geh mal die Logs suchen und erforschen, wenn ich Nichts finde lösche ich die Instanz, guter Tipp.
    Dokumentiert habe ich nur Grundsätzliches, ich setze vermehrt auf Backups, mehrere am Tag. Ist nur blöd wenn einem der Fehler nach Tagen oder Wochen auffällt.
    Aber das ist ja (noch) kein Lebenswichtiges System. Wenn es ausfällt leidet der Komfort, die angebundenen System laufen ja trotzdem autark.
    Gruß Karl-Heinz

  • Hallo Karl-Heinz,


    schade, das noch nicht weitergekommen bist. Die wesentlichen Unterschiede unserer beiden Infrastrukturen haben wir beleuchtet.
    Ich bin ein Freund von Transparenz. Will damit sagen, wenn eine Blackbox Situation entsteht, wo ich nicht an die Infos die ich gerne hätte rankomme,
    dann versuche ich immer eine weitere etwas entfernte indirekte Möglichkeit mit dem Wissen, dass es etwas schwieriger und aufwendiger werden könnte zu schaffen.
    Aufgeben war noch nie eine Option...dafür ist dann viel Geduld und Ausdauer gefragt.


    Wir arbeiten hier ja mit Modbus/TCP. Alle Komponenten wie Server und Objekte sind also übers Netzwerk verbunden.
    Da würde ich mich weiter mit dem Netzwerkverkehr beschäftigen.


    Bei Linuxsystemen gibt es wichtige Werkzeuge wie tcpdump und wireshark usw. Ab jetzt wird es dann mühsam und kompliziert.
    Ich würde versuchen nur den Netzwerkverkehr zwischen dem CMI und deiner ioBroker Instanz ganz genau zu beleuchten.


    Findet überhaupt Netzwerkverkehr statt?
    Geht der Netzwerkverkehr in beide Richtungen?
    Kannst aus den Byte Blöcken Modbusbefehle herausfiltern?
    Erkennst du Sende- und Empfangssequenzen von den verwendeten Modbusregistern?
    usw...
    Ist jetzt halt sehr mühsames Kaffeesatzlesen. Je nach Linux-Kenntnisstand musst dich halt einlesen bezüglich der Tools und der
    Modbus-Kommunikation auf Byte Ebene...


    Aber es gibt sehr viele Infos im Internet und in Foren. Ein einfaches Rezept wirst nirgends finden, aber es ist auch eine
    Gelegenheit viel über Linux, Netzwerk und Modbus zu lernen. Es gibt viel zu tun.
    Viel Erfolg.


    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 für Deine Einschätzung und Tipps zur Lage.
    Ich denke auch, dass ich mich wohl tatsächlich auf Protokollebene hinunter begeben muss.
    Da so etwas bisher immer in nicht unerheblichem Aufwand geendet hat, und da bin ich glaube ich ähnlich gestrickt - aufgeben ist keine Option - schiebe ich das noch etwas bis ich Zeit und den Kopf dazu habe.


    Gruß Karl-Heinz

  • Hallo Jürgen,


    ich hätte eine ganz konkrete Frage zu folgendem Thema:

    Du kannst mir hier sicherlich weiterhelfen, da du ja in diesem Bereich mittlerweile "Weltmeister" bist.:)


    "Weiterhin hab ich zum testen an den Modbus/TCP-Slave Server der auf dem Raspi läuft den iobroker angeschlossen, um dort die UVR-Werte weiter zu verarbeiten,

    oder von dort Werte zur UVR zu schicken."


    Konkrete Werte (analoge oder digitale) vom iobroker an das CMI über Modbus-TCP-Eingang:


    Test:

    1. Analoge Werte im Modbus Adapter im iobroker unter 03-Holdingregister anlegen und im iobroker in den Objekten eintragen, dann werden diese

    automatisch übertragen, funktioniert soweit.


    2. Wie machst du dies mit digitalen Werten z. B. Heizskreispumpe (EIN/AUS), trägst du diese im modbus adapter unter "Diskrete Ausgänge" ein ?

    Welche Einstellungen machst du dazu im CMI ?

    Funktion ?

    Datentyp ?

    Byte Reihenfolge ?



    Danke im Voraus für deine Hilfe.


    LG




    Karl




  • Hallo Karl,


    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.


    iobroker - output - Diskrekte Ausgänge


    CMI - input - Modbus-Eingang-digital


    Wie ich schon im ersten Beitrag in der kleinen Übersicht geschrieben habe, werden Daten von ModBus/TCP

    die über C.M.I Modbus-Eingang-digital ins CMI reinkommen

    mit der Funktion 01 (Modbus-Coils lesen/read coil status) eingelesen.


    ...

    CMI Modbus-Ausgang-Analog Adresse 1-64 für Analog Ausgänge unit 1 zur Adresse 101-164 Modbus-HoldingRegister

    schreiben mit Funktion 06

    CMI Modbus-Eingang-Analog Adresse 1-64 für Analog Eingänge unit 1 von Adresse 201-264 Modbus-HoldingRegister

    lesen mit Funktion 03

    CMI Modbus-Ausgang-digital Adresse 1-64 für digital Ausgänge unit 1 zur Adresse 301-364 Modbus-Coils

    schreiben mit Funktion 05

    CMI Modbus-Eingang-digital Adresse 1-64 für digital Eingänge unit 1 von Adresse 401-464 Modbus-Coils

    lesen mit Funktion 01

    ...


    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 für deine detaillierte Erläuterung.

    Einen Test-analogen Wert kann ich mir mit dem CMI aus dem Holdingregister vom Modbus-TCP-Adaper abholen, z. B. Temperatur, welche ich vorher mit dem CMI-Master dorthin gesendet habe.

    Dies funktioniert interessanterweise.


    Beim senden des digitalen Wertes (Heizungspumpe EIN/AUS), , welche ich im Test-Objekt 10 verändere, bekomme ich eine Fehlermeldung, obwohl ich glaube, alles so wie du eingerichtet zu haben.


    Frage hast du absichtlich in den Objekten bei den coils beim Parameter als Rolle: "value" ?

    Ich habe hier überall state ?


    Coil 10 ist mein Testobjekt, welches ich händisch verändere, die restlichen coils 1-9 in den Diskreten Ausgängen bekomme ich aus dem CMI für Grafana.


    Im CMI bekomme ich blöderweise für Coil 10 ein Timeout bei meinen Einstellungen ?


    Die Einstellungen im Adapter müssten meines Erachtens auch passen.


    Was sind denn bei dir "Diskrete Inputs" ? Mit dieser Auswahl hätte ich es auch schon probiert, aber auch kein Erfolg.


    Besten Dank für die Hilfe.



    LG



    Karl







  • Hallo Karl,


    adresse 310 von discreten inputs im iobroker ist von einem Test in umgekehrter Richtung CMI-->iobroker, hat mit unserem Test iobroker-->CMI nichts zu tun.


    Ich hab nochmal zwei coils im iobroker angelegt. coil10 (adresse10) mit Rolle:"value" und coil11 (adresse11) mit Rolle:"state".


    wenn ich die Werte im iobroker von coil10 und coil11 auf true setze, dann werden beide Werte zum CMI übertragen.

    In beiden Fällen erscheint im CMI Modbus-Eingang-digital Adresse 10 und CMI Modbus-Eingang-digital Adresse 11 ein "EIN".

    Es funktionieren also beide Rollen.


    Beim Anlegen der coils im iobroker darf keine Fehlermeldung kommem.

    Was für eine Fehlermeldung ist da aufgetaucht? screenshot davon erstellen...wenn möglich.


    Im iobroker ist ein sehr ausführliches Log. Das solltest im Debug-Modus genauer anschauen, vielleicht steht da ein Hinweis zur Fehlermeldung drin.

    Weiterhin kannst die Ereignisse in der Liste anschauen, da wird auch sehr viel angezeigt... usw.


    Du solltest zuerst den Fehler beim Anlegen der coils im iobroker beseitigen.


    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 für die vielen Infos.

    Habe jetzt dieses Test-Objekt nochmals gelöscht und neu angelegt im modbus.1-Adapter.

    Keine Veränderung und auch keine Fehlermeldung in den Protokollen.


    Aber ich hätte dazu eine Verständnisfrage:

    Im Modbus.1-Adapter-Diskrete Ausgänge hole ich mir digitale Ausgänge aus dem CMI.


    Kann ich überhaupt gleichzeitig im gleichen Adapter einen digitalen Wert true/false (EIN/AUS) von den diskreten Ausgängen an das CMI senden ?


    Der gelb markierte Werte wird vom modbus adapter an das CMI gesendet, die restlichen kommen vom CMI an den Adapter.


    Wie sind bei dir die Einstellungen im Bereich Allgemein ?

    Da das CMI nur Master kann, muss hier folglich der Modbus Adapter Slave sein ?

    Könnte es an den Einstellungen ms(=Millisekunden) liegen ?


    Danke für die Hilfe bei der Lösung meines Problems.



    Sonnige Grüße



    Karl






Jetzt mitmachen!

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