Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script zum auslesen eines C.M.I von TA UVR1611

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Script zum auslesen eines C.M.I von TA UVR1611

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Sineos last edited by

      @Klausi:

      Wenn ich Werte von iobroker zur UVR übertrage werden nur Integerzahlen zum Modbuseingang der UVR weitergeben.

      Das Objekt in Iobroker (erstellt im Modbusadapter dort : input Registers ) zeigt eine Real-Zahl an. `

      Das liegt an der eigenwilligen Art der UVR mit Größen und Einheiten umzugehen. Über den Bus und, nach meinem Eindruck, auch intern arbeitet die UVR nur mit Integer Zahlen und erst in Kombination mit einer Einheit wird das ganze zu einer Float.

      So hat z.B. die Einheit Temperatur 1 Dezimalstelle, Leistung (kW) 2 Dezimalstellen usw. Ich hab mal für ein JS-Script die Anzahl Stellen rausgesucht:

        var MeasurementMapping = {
          '0': {
            Name: 'None',
            Unit: 'None',
            Decimals: 0
          },
          '1': {
            Name: 'Temperature',
            Unit: '°C',
            Decimals: 1
          },
          '2': {
            Name: 'Global Radiation',
            Unit: 'W/m²',
            Decimals: 0
          },
          '3': {
            Name: 'FlowRate',
            Unit: 'l/h',
            Decimals: 0
          },
          '4': {
            Name: 'Time',
            Unit: 's',
            Decimals: 0
          },
          '5': {
            Name: 'Time',
            Unit: 'min',
            Decimals: 0
          },
          '8': {
            Name: 'Percent',
            Unit: '%',
            Decimals: 1
          },
          '10': {
            Name: 'Power',
            Unit: 'kW',
            Decimals: 2
          },
          '11': {
            Name: 'Power Consumption',
            Unit: 'kWh',
            Decimals: 1
          },
          '12': {
            Name: 'Power Consumption',
            Unit: 'MWh',
            Decimals: 0
          },
          '13': {
            Name: 'Voltage',
            Unit: 'V',
            Decimals: 2
          },
          '14': {
            Name: 'Current',
            Unit: 'mA',
            Decimals: 1
          },
          '15': {
            Name: 'Time',
            Unit: 'h',
            Decimals: 0
          },
          '16': {
            Name: 'Time',
            Unit: 'd',
            Decimals: 0
          },
          '17': {
            Name: 'Pulse',
            Unit: 'None',
            Decimals: 0
          },
          '18': {
            Name: 'Resistance',
            Unit: 'kOhm',
            Decimals: 2
          },
          '19': {
            Name: 'Volume',
            Unit: 'l',
            Decimals: 0
          },
          '20': {
            Name: 'Speed',
            Unit: 'km/h',
            Decimals: 0
          },
          '22': {
            Name: 'FlowRate',
            Unit: 'l/min',
            Decimals: 0
          },
          '23': {
            Name: 'Pressure',
            Unit: 'bar',
            Decimals: 2
          },
          '24': {
            Name: 'Performance Factor',
            Unit: 'None',
            Decimals: 2
          },
          '28': {
            Name: 'Volume',
            Unit: 'm3',
            Decimals: 0
          },
          '35': {
            Name: 'FlowRate',
            Unit: 'l/d',
            Decimals: 0
          },
          '36': {
            Name: 'Speed',
            Unit: 'm/s',
            Decimals: 0
          },
          '37': {
            Name: 'FlowRate',
            Unit: 'm3/min',
            Decimals: 0
          },
          '38': {
            Name: 'FlowRate',
            Unit: 'm3/h',
            Decimals: 0
          },
          '39': {
            Name: 'FlowRate',
            Unit: 'm3/d',
            Decimals: 0
          },
          '50': {
            Name: 'Currency',
            Unit: 'Euro',
            Decimals: 2
          },
          '51': {
            Name: 'Currency',
            Unit: 'USD',
            Decimals: 2
          },
          '52': {
            Name: 'Absolute Humidity',
            Unit: 'g/m3',
            Decimals: 1
          },
          '53': {
            Name: 'None',
            Unit: 'None',
            Decimals: 5
          },
          '54': {
            Name: 'Angle',
            Unit: 'Degree',
            Decimals: 2
          },
          '58': {
            Name: 'None',
            Unit: 'None',
            Decimals: 1
          },
          '63': {
            Name: 'Current',
            Unit: 'A',
            Decimals: 1
          },
          '65': {
            Name: 'Pressure',
            Unit: 'mbar',
            Decimals: 1
          },
          '66': {
            Name: 'Pressure',
            Unit: 'Pa',
            Decimals: 0
          },
          '-1': {
            Name: 'Undefinded',
            Unit: 'None',
            Decimals: 0
          }
        };
      

      Ist aber ein älterer Firmware Stand, ich glaube die haben was geändert.

      Heisst also übersetzt, du musst in der UVR und im CMI die richtige Messgröße einstellen und eine entsprechend skalierte Integerzahl über den Bus schicken. So wird dann aus 227 und der Einheit Temperatur die gewünschten 22,7 °C.

      Im ioBroker Modbus Adapter kann man bei den Registern das Verhalten über den Faktor steuern. So würde hier ein Temperaturwert einen Faktor 10 bekommen. Sprich ein anderer ioBroker Adapter sendet 22,7 °C, der Modbus Adpater skaliert mit 10 (=227) und die UVR macht dann über die eingestellte Einheit wieder 22,7 draus.

      Braucht man eine höhere Genauigkeit, gibt es auch eine dimensionslose Einheit mit 5 Dezimalstellen. Hier wäre entsprechend mit 100.000 zu skalieren.

      1 Reply Last reply Reply Quote 0
      • K
        Klausi last edited by

        Vielen Dank für die tolle Erklärung.

        Das mit den Messgrößen habe ich damit super hinbekommen.

        Allerdings sieht es derzeit so aus, als würde die CMI das Register des Modbus-Adapters nicht triggern.

        Nur wenn ich den Modbus-Adapter neu starte, bekomme ich neue Werte.

        Meine CMI Einstellung:

        siehe Bild
        6962_download__1_.png

        1 Reply Last reply Reply Quote 0
        • S
          Sineos last edited by

          @Klausi:

          Allerdings sieht es derzeit so aus, als würde die CMI das Register des Modbus-Adapters nicht triggern.

          Nur wenn ich den Modbus-Adapter neu starte, bekomme ich neue Werte. `
          Die Anzeige in den CMI Einstellungen aktualisiert sich nicht freiwillig (zumindest bei mir). Wenn ein neuer Wert gesendet wurde (Intervallzeiten beachten) und man drückt, wie in deinem Screenshot dargestellt, nochmals auf "Speichern" aktualisiert sich der Wert.

          In der UVR sollten die Werte ankommen, also am besten dort testen oder über ein Online-Schema in der CMI.

          1 Reply Last reply Reply Quote 0
          • K
            Klausi last edited by

            Hallo,

            das sich die Anzeige im CMI nur nach dem Speichern erneut aktualisiert ist klar.

            Leider aktualisiert sich der Wert in der UVR sowie im Onlineschema erst nach Neustart des Modbus-Adapters.

            1 Reply Last reply Reply Quote 0
            • S
              Sineos last edited by

              Sorry für die späte Antwort, ich war geschäftlich unterwegs.

              Kann mir keinen direkten Reim drauf machen, warum es bei dir nicht funktioniert. Läuft bei mir anstandslos mit mehreren Werten. Ich hab mal ein Beispiel von mir angehängt:

              2178_screenshot_20180428-000409.png
              2178_screenshot_20180428-000444.png

              Kann es vielleicht sein, dass du eine hohe "Sendebedingung bei Änderung" hast?

              1 Reply Last reply Reply Quote 0
              • K
                Klausi last edited by

                Hallo Sineos:

                vielen Dank für deine Mühe.

                Genauso wie in deinen Beispiel habe ich die Einstellungen auch.

                Trotzdem werden ohne periodischen Modbus_Neustart keine Werte in Richtung Modbus (iobroker) und Modbus (UVR1611) aktualisiert.

                Ich habe Werte in sämtlichen Registern getestet – gleiches Ergebnis.

                Ich wollte einen Heizkreis der UVR mittels Raumthermostat der Homematic steurern (Vorlaufsoll).

                Ich muss mir was anderes einfallen lassen.

                Nochmal vielen Dank für die Mühe.

                1 Reply Last reply Reply Quote 0
                • S
                  Sineos last edited by

                  Vielleicht noch ein paar Ideen:

                  • Ich benutze node-red für die Übertragung an den Modbus Adapter. Siehe Screenshot

                  • Screenshot meines Eingangsregisters

                  • In der CMI Firmware gab es ein paar Bugfixes den Modbus betreffend. Neueste CMI Firmware ist gerade 1.30.2

                  • Ggf. mal den Modbus Adpater auf Debug setzen und schauen ob er auch tatsächlich periodisch neue Werte bekommt

                  • Den Modbus Adpater über die Konsole (nicht in der WebUI) neu installieren und schauen ob diese fehlerfrei durchläuft

                  2178_clipboard03.png
                  2178_clipboard02.png
                  2178_clipboard01.png

                  1 Reply Last reply Reply Quote 0
                  • K
                    Klausi last edited by

                    Habe alles durchprobiert.

                    Neuste Firmware auf dem CMI, Modbus Adpater auf Debug gesetzt, Adapter neu installiert über Konsole.

                    Immer das gleiche Ergebnis: in Richtung Iobroker läuft der Modbus; in Richtung CMI leider nicht.

                    Scheint am CMI zu liegen.

                    Nochmal vielen Dank für deine Mühe.

                    Wenn ich dazu komme teste ich es mal über node-red.

                    Grüsse

                    1 Reply Last reply Reply Quote 0
                    • S
                      Sineos last edited by

                      Wenn dein CMI einmalig die Daten nach einem Neustart des Modbus Adapter bekommt, dann glaube ich nicht, dass es am CMI liegt. Auch ist das CMI der Master und sitzt deshalb eigentlich nur faul rum und wartet bis ein Slave sich meldet. Heißt, der Modbus Adapter baut für jeden Wert eine neue Verbindung zum Master auf. Ich denke, das Problem liegt irgendwo in deiner ioBroker Instanz.

                      Du kannst den Modbus auch mit Tools wie z.B. http://www.tuomio.fi/ananas/index.htm testen:

                      2178_clipboard02.png

                      1 Reply Last reply Reply Quote 0
                      • K
                        Klausi last edited by

                        Hallo Sineos,

                        vielen Dank für den Tipp mit dem Tool Ananas.

                        An ihm konnte ich erkennen, dass es nicht am CMI liegt.

                        In Ananas wird der Modbus Wert des iobrokers auch nicht aktualisiert.

                        Dies bezieht sich aber nur auf das Input-Register.

                        Die Holdings und Coils werden aktualisiert!

                        Ich kann es mir nicht erklären.

                        Die Werte in den Objekten des Iobroker werden brav aktualisiert und angezeigt.

                        Ich weiss nicht weiter.

                        1 Reply Last reply Reply Quote 0
                        • S
                          Sineos last edited by

                          Mir fällt jetzt leider auch nichts mehr ein.

                          Einzig vielleicht auf https://github.com/ioBroker/ioBroker.modbus ein Issue aufmachen mit Referenz zu diesem Thread. Vielleicht können die Entwickler zusätzliche Debug-Ausgaben hinzufügen, um zu sehen wo was falsch läuft.

                          1 Reply Last reply Reply Quote 0
                          • Stabilostick
                            Stabilostick last edited by

                            Und momentan maximal den Modbus-Adapter in Version 1.1.2 verwenden, da die Slave-Option in 2.x broken ist.

                            1 Reply Last reply Reply Quote 0
                            • K
                              Klausi last edited by

                              Lässt sich leider bei mir nicht mehr downgraden..

                              1 Reply Last reply Reply Quote 0
                              • Stabilostick
                                Stabilostick last edited by

                                Öhm, doch geht. Brauchst Du aber nicht mehr, weil jetzt eine neuere Variante von 2.0.6 auf Github steht. Die neuste Version (immer noch 2.0.6, aber von Bluefox nachgebessert) tut jetzt bei "Slave" was sie soll.

                                Lösung: Die Partner-ID auf 0.0.0.0 stellen oder die IP des ioBroker Servers angeben. Das funktioniert bei mir. Den Rest wie bei 1.1.2 lassen.

                                Nutzt du auch eine UVR? Edit: Dumme Frage 😉

                                1 Reply Last reply Reply Quote 0
                                • K
                                  Klausi last edited by

                                  Vielen Dank für den Hinweis.

                                  Habe es getestet und es läuft mit der IP 0.0.0.0

                                  Ja, ich benutze auch eine UVR1611 und steuere mit dem Modbus Pumpenabschaltungen usw.

                                  1 Reply Last reply Reply Quote 0
                                  • K
                                    Klausi last edited by

                                    Nur sieht es derzeit so aus, als wäre die Logik der coil's umgedreht.

                                    true=false

                                    false=true

                                    1 Reply Last reply Reply Quote 0
                                    • Stabilostick
                                      Stabilostick last edited by

                                      Hilfe, was sind Coils? Ich übertrage nur einige analoge Messwerte. Und das klappt.

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        Klausi last edited by

                                        Das sind die diskreten Ausgänge des Modbus.

                                        Ich benutzte Sie zum Übertragen von Logikwerten.

                                        1 Reply Last reply Reply Quote 0
                                        • Stabilostick
                                          Stabilostick last edited by

                                          Kannst Du bitte einige Screenshots machen von den Einstellungen, die Du verwendest, um digitale Werte aus der UVR zu ioBroker zu übertragen und ggf auch zurück? Bei mir steht da z.B. immer 0 im ioBroker, obwohl das CMI am Modbus-Ausgang "Ein" sagt.

                                          1 Reply Last reply Reply Quote 0
                                          • Stabilostick
                                            Stabilostick last edited by

                                            Verflixt, wo sehe ich denn in Ananas die Coils, d.h. das, was das CMI so an Digitalwerten an den ioBroker sendet?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            783
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            25
                                            78
                                            20927
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo