Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] Victron MP2 MQTT Anbindung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Victron MP2 MQTT Anbindung

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Ben1983 last edited by mickym

      @ben1983 sagte in Victron MP2 MQTT Anbindung:

      @mickym ok.
      Und wenn jetzt Client a eine topic von Client b subscribt hat, leitet der Broker das an a weiter, wenn b diese published.

      das ist schon wieder die falsche Formulierung. Die Clients kennen sich nicht untereinander. Sprich der Client a subscribed ein TOPIC - egal wer dieses beschreibt. Wenn also b oder c oder d dies published, wird a wenn es diesen topic subscribed hat, informiert.

      Und kann auch Client a die topic (bspw.)
      b/topic schreiben und b übernimmt diese. (Vorausgesetzt es ist so in b implementiert).???

      Genau jeder Client kann jedes topic beschreiben und b übernimmt dies nur, wenn er das topic subscribed hat. Nur würde es in diesem Fall zu einer Endlosschleife kommen und Dein System hängt sich auf. Da wenn ein Client ein topic published und gleichzeitig subscribed gibt es eine Endlosschleife. Deswegen wird client b - nicht dieses topic publishen, wenn es dieses subscribed. Deswegen hast Du auch unterschiedliche topics beim Senden und Empfangen. Deswegen musst Du auch die Datenpunkte selbst anlegen, auf die ein Client hört, da es nicht topics publishen kann, die es selbst subscribed. Das ist für viele eine Hürde am Anfang, wenn sie zum Beispiel statt des Shelly Adapters - MQTT verwenden, da sie die Datenpunkte zum Steuern selbst anlegen müssen. Aber jetzt verstehst Du vielleicht warum und verstehst auch warum Du den keepalive DP selbst anlegen musstest. Wie gesagt die meisten Implementierungen sorgen inzwischen selbst dafür, dass die topics zum Steuern und die für Informationen unterschiedlich sind.
      Im mqtt-Adapter gibt es noch eine alte Einstellung, die aber heute eher nicht brauchbar ist.
      Es handelt sich um diese Option:
      2cb5dd97-74ff-42f1-a144-bfa0b9e34876-image.png

      Wenn man das angehakt hat wird die Info nicht unter dem eigentlichen topic gepublished, sondern unter topic/set.
      Nur wenn der Empfänger nicht auf topic/set hört, dann hilft das natürlich nicht. 😉

      Also subscribt b automatisch seine gepublischten topics?

      Nie im Leben, es würde wie gesagt Endlosschleifen geben.

      Die würde es auch im iobroker selbst geben, wenn hier nicht mit dem ACK-Flag gearbeitet würde, das gibt es aber unter MQTT nicht.
      Im iobroker kannst Du deshalb ohne Endlosschleifen mit einem Datenpunkt arbeiten, da Du zum steuern immer ACK=false nutzt und der Adapter den Vollzug mit ACK=true bestätigt. Unter MQTT muss das in verschiedenen topics erfolgen.

      Ben1983 1 Reply Last reply Reply Quote 1
      • Ben1983
        Ben1983 @mickym last edited by

        @mickym ok.
        Also in meinem Fall wäre ja auch der Adapter ein Client, der die Topics vom Broker (GX) subscribt.
        Möchte ich also dieNetzleistung schreiben nicht lesen, benötige ich einen anderen Topicnamen, als den der zum Lesen ist. Ok…. Also weis man den nicht, schade.

        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Ben1983 last edited by mickym

          @ben1983 sagte in Victron MP2 MQTT Anbindung:

          Ok…. Also weis man den nicht, schade.

          Ja wie die heißen muss der Hersteller in seiner API beschreiben. Das ist nicht selbsterklärend - ausser der Hersteller hat halt ein allgemeines Schema - wo du über einen topic verschiedene Parameter steuern kannst. Meist schickt man dann JSON Objekte an dieses topic. So kannst Du besipielsweise mit Zigbee2mqtt

          {"state":"on","brightness":50)
          

          gleichzeitig die Lampe mit 50% Helligkeit einschalten und brauchst dafür nicht 2 Befehle.

          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @mickym last edited by

            @mickym sagte in Victron MP2 MQTT Anbindung:

            ein GX Gerät (was auch immer das ist) i

            das ist ein Gerät auf dem das Venus OS läuft und die Zentrale eines Victron Systems ist.

            mickym 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @Homoran last edited by mickym

              @homoran sagte in Victron MP2 MQTT Anbindung:

              @mickym sagte in Victron MP2 MQTT Anbindung:

              ein GX Gerät (was auch immer das ist) i

              das ist ein Gerät auf dem das Venus OS läuft und die Zentrale eines Victron Systems ist.

              Gut und wenn ich mehrere Victron Systeme habe (weiß nicht ob das Sinn macht 😁) - dann habe ich halt auch mehrere GX Geräte und somit auch mehrere MQTT-Broker. 😉

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Ben1983 last edited by Homoran

                @ben1983 sagte in Victron MP2 MQTT Anbindung:

                @mickym eine Frage noch.. es braucht immer einen Broker… Client <=> Client geht nicht, oder?

                lies dich mal ein, wie schon @mickym geschrieben hat!

                Das MQTT-Protokoll erfordert einen Datenbroker. Dies ist die zentrale Idee der Technologie.

                https://www.iobroker.net/#de/adapters/adapterref/iobroker.mqtt/README.md

                einiges steht auch im GX Handbuch von victronenergy.de

                Screenshot_20230326-163904_Polaris Office.jpg

                1 Reply Last reply Reply Quote 0
                • Fichtendickicht
                  Fichtendickicht @mickym last edited by

                  @mickym
                  Lieber mickym.
                  Ich habe mit großem Interesse all Deine Post gelesen, scheinbar fehlt mir da noch ein wesentlicher Punkt.
                  Ich habe auch ein Victron System mit einer "Venus GX" (Visualisierungs Zentrale von Victron mit LAN, MODBUS und MQTT) sowie einer Synology mit IO-Broker-Docker.
                  Die Modbus Verbindung läuft seit Jahren ist aber nicht gut zu warten und Victron ändert da immer wieder Adressen also will ich auf MQTT umsteigen.
                  @Homoran hat bereits herausgefunden, dass die Venus ein MQTT-Broker ist. Also Habe ich einen MQTT-Adapter als Client angelegt und die Verbindung hergestellt.
                  Als Subscription ist # voreingestellt und ich bekomme bereits das hier angezeigt:
                  7c07df22-17e1-4f21-a826-020511aa71c7-grafik.png
                  Wie subscribe ich nun all die anderen Werte?
                  Angeblich sollen alle verfügbaren Werte mit dem '#' angezeigt werden - tun sie aber nicht.

                  Ben1983 1 Reply Last reply Reply Quote 0
                  • Ben1983
                    Ben1983 @Fichtendickicht last edited by Ben1983

                    @fichtendickicht Du musst dem Victron das KeepAlive setzen.
                    ich habe dazu alle 30s einfach "" gesxhrieben.
                    das funktioniert und er liefert alle anderen daten.

                    schedule('*/30 * * * * *',()=>{
                        setState("mqtt.0.R.c0619ab24727.keepalive","");
                    });
                    

                    natürlich musst Du vorher diesen state anlegen.

                    Fichtendickicht 1 Reply Last reply Reply Quote 0
                    • Fichtendickicht
                      Fichtendickicht @Ben1983 last edited by

                      @ben1983 said in Victron MP2 MQTT Anbindung:

                      schedule('*/30 * * * * *',()=>{

                      Danke für Deine rasche Antwort. Ich denke da hakt´s bei mir.
                      Wie lege ich den Datenpunkt an?
                      Wo gebe ich Deine Befehlszeile ein?
                      Ich verwende auch den MQTT Explorer:
                      2a370058-0e4a-496d-8f7e-a037befc5816-grafik.png

                      mickym 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @Fichtendickicht last edited by mickym

                        @fichtendickicht mit dem Mqtt Explorer publishst du einfach ein topic. In dem Fall von Ben wäre das Topic

                        
                        R/c0619ab24727/keepalive
                        
                        

                        Sobald einmal gepublished dann taucht der DP im Adapter auf. Du musst ihn nur unbestätigt beschreiben

                        Fichtendickicht 1 Reply Last reply Reply Quote 0
                        • Fichtendickicht
                          Fichtendickicht @mickym last edited by

                          @mickym said in Victron MP2 MQTT Anbindung:

                          keepalive

                          das "keepalive" gibt´s wohl schon:
                          06bbb53a-7e71-497f-b7d3-49b30bba94e6-grafik.png

                          Und wie beschreibe ich den Punkt? Mit Blockly?

                          mickym 1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @Fichtendickicht last edited by mickym

                            @fichtendickicht mit Blockly oder JavaScript. Mit NodeRed kannst auch direkt ohne iobroker beschreiben. Aber der Datenpunkt sollte ja auch im Adapter auftauchen

                            Fichtendickicht 1 Reply Last reply Reply Quote 0
                            • Fichtendickicht
                              Fichtendickicht @mickym last edited by Fichtendickicht

                              @mickym Ich bekomme es leider nicht hin. Hab einen Befehl abgesetzt wie @Ben1983
                              6162691c-e845-458a-82d9-c2b406a39afc-grafik.png

                              aber ich bekomme dadurch nicht mehr Datenpunkte:
                              f2051385-96b9-44c6-a879-268707aa3d09-grafik.png

                              mickym T 2 Replies Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @Fichtendickicht last edited by

                                @fichtendickicht dazu kann ich nicht viel sagen. Veröffentlichen muss die Info das Gerät selbst.

                                1 Reply Last reply Reply Quote 0
                                • T
                                  TT-Tom @Fichtendickicht last edited by TT-Tom

                                  @fichtendickicht

                                  Ich glaube dein Blockly ist falsch. Du musst doch sendTo nehmen. Ich an deiner Stelle würde einfach das JavaScript von @Ben1983 nehmen und den Pfad anpassen.

                                  Edit: ich habe mal das sendTo Blockly zusammengebastelt

                                  Bildschirmfoto 2023-07-17 um 09.32.19.png

                                  <xml xmlns="https://developers.google.com/blockly/xml">
                                   <block type="sendto_custom" id=":!bXD--l^tUatFozS-!:" x="13" y="13">
                                     <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation>
                                     <field name="INSTANCE">mqtt.0</field>
                                     <field name="COMMAND">sendMessage2Client</field>
                                     <field name="LOG"></field>
                                     <field name="WITH_STATEMENT">FALSE</field>
                                     <value name="ARG0">
                                       <shadow type="text" id="}XlN[ocgy0!,?euv)Ik;">
                                         <field name="TEXT">N/985dadd0cf3e/keepalive</field>
                                       </shadow>
                                     </value>
                                     <value name="ARG1">
                                       <shadow type="text" id="pNN)1$R0xTXP9TBG@`9A">
                                         <field name="TEXT"></field>
                                       </shadow>
                                     </value>
                                   </block>
                                  </xml>
                                  

                                  Ben1983 1 Reply Last reply Reply Quote 0
                                  • Ben1983
                                    Ben1983 @TT-Tom last edited by

                                    @tt-tom @Fichtendickicht
                                    Es muss lediglich der State über die Objekte angelegt werden.
                                    fc46f7bb-84cf-4133-9bf2-553c0d2f4c20-image.png
                                    Dann kannst Du diesen normal mit einem setState beschreiben.
                                    Du kannst es auch mittels MQTT Explorer machen, aber glaube nach einer Minuta verschwinden die Werte dann wieder.
                                    Deshalb "Keepalive" 😉

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      TT-Tom @Ben1983 last edited by

                                      @ben1983

                                      Wenn ich es richtig Verstanden habe, hat er ja schon den keepalive. Nur mit dem setzten/schreiben hapert es.

                                      Ben1983 1 Reply Last reply Reply Quote 0
                                      • Ben1983
                                        Ben1983 @TT-Tom last edited by Ben1983

                                        @TT-Tom
                                        63f4f306-4b73-4c1d-8307-6682d1db0b9a-image.png

                                        T 1 Reply Last reply Reply Quote 1
                                        • T
                                          TT-Tom @Ben1983 last edited by

                                          @ben1983

                                          Dein Script als Blockly. Na mal sehen was jetzt raus kommt.

                                          Ben1983 Fichtendickicht 2 Replies Last reply Reply Quote 0
                                          • Ben1983
                                            Ben1983 @TT-Tom last edited by

                                            @tt-tom Ich habe es nicht also blockly, sondern damals so gelöst.

                                            schedule('*/30 * * * * *',()=>{
                                                setState("mqtt.0.R.c0619ab24727.keepalive","");
                                            });
                                            
                                            
                                            Fichtendickicht 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            869
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            10
                                            74
                                            6551
                                            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