Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] MQTT Datenaustausch in beide Richtungen ?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] MQTT Datenaustausch in beide Richtungen ?

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

      Immer wieder das Verständnisproblem, dass ein Mqtt-Server Broker nichts !!! aktiv sendet, sondern nur die Informationen verwaltet. 2 Server machen also überhaupt keinen Sinn. In Deinem Fall müsste halt der RPI 2 Client alles subscriben- Du solltest aber immer alle Haken rausmachten, sonst hast du ganz schnell Endlosschleifen. Man kann es so probieren- ganz sauber ist es aber auch nicht. Theoretisch sollte auf dem RPI1 auch noch ein Client laufen und nur dort werden die Werte geändert. Der Server ist eigentlich immer der passive Informationsverwalter, der gepublishte Information entgegennimmt und nur an Clients, die topic subscribed hat, über aktualisierte Werte informiert.

      Im Prinzip würde ich in diesem Beispiel sogar den Broker/Server ganz auslagern, z. Bsp als mosquitto Broker und ggf. jeden iobroker unter einem eigenen Präfix publishen lassen, do dass Du immer Kontrolle darüber hast, von wem welche Änderungen stammen.

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

        @djmarc75 sagte in MQTT Datenaustausch in beide Richtungen ?:

        Nur möchte ich ja dass sich beide RPI per MQTT "austauschen" also beide quasi als Server und Client funktionieren sollten

        Missverständnis!
        das hat nix mit Server und Client zu tun.
        MQTT benötigt einen Server (=Broker) um den Datenverkehr zu regeln.
        Jeder Client kann Senden (publish) und Empfangen (subscribe)

        1 Reply Last reply Reply Quote 1
        • DJMarc75
          DJMarc75 last edited by

          Puh, erstmal danke für den Input @Homoran @paul53 @mickym

          Da werd ich mich mal reinknien.

          @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

          den Broker/Server ganz auslagern, z. Bsp als mosquitto Broker

          Hm, wohin "auslagern" ?

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

            @djmarc75 halt gesondert auf Deinem RPI1 installieren- also den Broker nicht im iobroker betreiben.

            Mit dem publishen unter unterschiedlichen Präfixen, würdest Du halt in jedem Fall Endlosschleifen vermeiden, da jeder Client einen eigenen Bereich zum Veröffentlichen hat und gleichzeitig den Namensraum des kompletten Baums des Partners abonnieren kann

            Würde aber trotzdem den Client/Server Adapter verwenden. Ich mag den anderen nicht, aber ich weiß @Homoran verwendet den anderen und ist glücklich.😉

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

              @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

              also den Broker nicht im iobroker betreiben.

              ok, wie wird der dann Konfiguriert ? Per SSH ? Oder gibbed da auch eine schöne bunte Oberfläche?

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

                @djmarc75 per ssh.

                sudo apt install mosquitto.
                

                Konfiguriert wird das über Konfigdatei ist aber easy.. https://mosquitto.org/man/mosquitto-conf-5.html

                Du kannst es aber auch erst mal mit 2 Instanzen des mqtt Adapters probieren, wenn Du nicht willst. Eine Instanz als Server und eine als Client. Bin mir halt nicht sicher, ob das sauber funktioniert. Wäre insofern aber auch eine Zwischenlösung, weil man den Broker dann auch später noch auslagern könnte.

                DJMarc75 Homoran 2 Replies Last reply Reply Quote 0
                • DJMarc75
                  DJMarc75 @mickym last edited by DJMarc75

                  @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                  u kannst es aber auch erst mal mit 2 Instanzen des mqtt Adapters probieren

                  Daran hab ich auch gedacht aber gleich wieder verworfen wegen den Ordnernamen dann "mqtt.0" und "mqtt.1"

                  Ich mach mich mal an die "Auslagerung", kann ja nicht so schwer sein.

                  @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                  ist aber easy.. https://mosquitto.org/man/mosquitto-conf-5.html

                  Heiliges Blechle - ganz easy? Naja, es soll ja heute nicht ganz soo heiss werden, dann kann man das mal machen.

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

                    @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                    Eine Instanz als Server und eine als Client. Bin mir halt nicht sicher, ob das sauber funktioniert.

                    war damals kein Problem. Hab das genau so gemacht.

                    @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                    weil man den Broker dann auch später noch auslagern könnte.

                    nur dewegen habe ich einen MQTT Multihost client. 🙂
                    da ich meine Geräte (hier 2x Raumsensoren auf Basis von Teensy LC) nicht programmieren kann, muss ich jetzt immer die alte IP nutzen.
                    Auf dem Client ist nur der Broker

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

                      @djmarc75 sagte in MQTT Datenaustausch in beide Richtungen ?:

                      @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                      u kannst es aber auch erst mal mit 2 Instanzen des mqtt Adapters probieren

                      Daran hab ich auch gedacht aber gleich wieder verworfen wegen den Ordnernamen dann "mqtt.0" und "mqtt.1"

                      Ich mach mich mal an die "Auslagerung", kann ja nicht so schwer sein.

                      Na ich habe mehrere Instanzen - das ist doch nicht schlimm. 😉

                      Aber ansonsten halte es einfach und der Broker ist easy zu installieren. Die Clients brauchst ja nicht. Hier mal eine kleine Anleitung meines NodeRed- Professors:

                      http://www.steves-internet-guide.com/mosquitto-broker/

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

                        @djmarc75 sagte in MQTT Datenaustausch in beide Richtungen ?:

                        Heiliges Blechle - ganz easy? Naja, es soll ja heute nicht ganz soo heiss werden, dann kann man das mal machen.

                        Na das sind Möglichkeiten, aber doch kein muss. 😉

                        Wenn Du nur via ssh

                        sudo apt install mosquitto
                        

                        den Broker installiert hast - geht ja ratz fatz - schau nur, dass Du Deinen iobroker Server Adapter stoppst - 2 Broker auf der gleichen Maschine mit dem gleichen Port mögen sich nicht 😉

                        würde ich die Standardkonfiguration behalten und eine eigene Konfig-Datei anlegen (hier mal meine Struktur):

                        $cd /etc/mosquitto
                        
                        $ ls
                        aclfile.example  ca_certificates  certs  conf.d  mosquitto.conf  pskfile.example  pwfile  pwfile.bak  pwfile.example
                        
                        $cat mosquitto.conf
                        # Place your local configuration in /etc/mosquitto/conf.d/
                        #
                        # A full description of the configuration file is at
                        # /usr/share/doc/mosquitto/examples/mosquitto.conf.example
                        
                        pid_file /run/mosquitto/mosquitto.pid
                        
                        persistence true
                        persistence_location /var/lib/mosquitto/
                        
                        log_dest file /var/log/mosquitto/mosquitto.log
                        
                        include_dir /etc/mosquitto/conf.d
                        

                        Das heißt Du machst Dir die Konfigurationsdatei unter /etc/mosquitto/conf.d

                        Prüfen ob der Broker läuft:

                        $ systemctl status mosquitto
                        ● mosquitto.service - Mosquitto MQTT Broker
                             Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
                             Active: active (running) since Wed 2022-08-03 22:20:15 CEST; 1 day 13h ago
                               Docs: man:mosquitto.conf(5)
                                     man:mosquitto(8)
                            Process: 511 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS)
                            Process: 542 ExecStartPre=/bin/chown mosquitto /var/log/mosquitto (code=exited, status=0/SUCCESS)
                            Process: 544 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, status=0/SUCCESS)
                            Process: 552 ExecStartPre=/bin/chown mosquitto /run/mosquitto (code=exited, status=0/SUCCESS)
                            Process: 24355 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
                           Main PID: 561 (mosquitto)
                              Tasks: 1 (limit: 4915)
                                CPU: 6min 35.243s
                             CGroup: /system.slice/mosquitto.service
                                     └─561 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
                        
                        Aug 03 22:20:13 MWHome systemd[1]: Starting Mosquitto MQTT Broker...
                        Aug 03 22:20:14 MWHome mosquitto[561]: 1659558014: Loading config file /etc/mosquitto/conf.d/mwhome.conf
                        Aug 03 22:20:14 MWHome mosquitto[561]: 1659558014: Warning: Error resolving bridge address: Temporary failure in name r>
                        Aug 03 22:20:15 MWHome systemd[1]: Started Mosquitto MQTT Broker.
                        

                        Wie Du siehst heisst meine Konfigdatei mwhome.conf - kannst Du natürlich nennen wie Du willst - muss halt nur in dem Verzeichnis stehen.

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

                          @mickym kann ich den eigentlich auch auf einem ganz anderen RPI installieren ? Wieviel Ressourcen benötigt der ?
                          Ich frage deshalb weil ich auf einem RPI3B+ im LAN-Netz PiHole, Influx, Grafana und Tautulli am Laufen habe.
                          Könnte ich den MQTT dort draufmachen ?! Hätte ja den Vorteil dass ich weitere ioB Installationen dann auch dort bequem einbinden kann. Oder sehe ich das falsch ?

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

                            @djmarc75 Klar kannst Du das und der broker ist auch genügsam, das sollte mE schon funktionieren und ist sicher eine gute Idee. Es sollte trotzdem nicht unbedingt eine Maschine sein, die direkt vom Internet erreichbar ist. 😉

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

                              @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                              die direkt vom Internet erreichbar ist

                              Du meinst mit so offenen Ports usw ? Ich frage für einen Freund 😜

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

                                @djmarc75 sagte in MQTT Datenaustausch in beide Richtungen ?:

                                @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                                die direkt vom Internet erreichbar ist

                                Du meinst mit so offenen Ports usw ? Ich frage für einen Freund 😜

                                Ja genau mit sowas. 😉

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

                                  @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                                  Ja genau mit sowas

                                  Gibbed bei mir nicht 🤓
                                  Na dann weiss ich ja wie ich den Nachmittag verbringen werde.

                                  Danke fürs Erste an alle für die vielen tollen Tips !

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

                                    So hier mal meine Konf-Datei:

                                    $ cat mwhome.conf
                                    allow_anonymous false
                                    password_file /etc/mosquitto/pwfile
                                    
                                    listener 1883
                                    

                                    Im Prinzip kannst Du erst mal allow_anonymous auf true machen. Dann ist mit den 2 Zeilen, der Broker schon einsatzbereit. Falls Du es mit user und Passwort absichern willst, musst Du eben noch eine Passwortdatei erstellen.

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

                                      @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                                      allow_anonymous auf true machen.

                                      und wie deaktiviere ich die Zeile danach ? Also die PW Datei

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

                                        @djmarc75 Ein # davor machen. 😉

                                        allow_anonymous true
                                        # password_file /etc/mosquitto/pwfile
                                         
                                        listener 1883
                                        

                                        Im 2. Schritt kannst Du ja dann den Zugang einschränken und nur mit User-ID und Passwort den Zugang zum Broker erlauben und diese Passwort-Datei erstellen.

                                        sudo mosquitto_passwd  -c passwordfile username
                                        

                                        Das -c darfst halt nur das erste Mal nehmen, da eine neue Datei erstellt wird.

                                        Beispiel: Du legst für einen Benutzer mit Namen benutzer eine neue Datei an:

                                        $ sudo mosquitto_passwd -c /etc/mosquitto/testpw benutzer
                                        

                                        Darauf wirst du interaktiv nach Passwort mit Bestätigung gefragt:

                                        Password:
                                        Reenter password:
                                        
                                        /etc/mosquitto $ ls
                                        aclfile.example  certs   mosquitto.conf   pwfile      pwfile.example
                                        ca_certificates  conf.d  pskfile.example  pwfile.bak  testpw
                                        

                                        In dem von Dir angegebenen Pfad siehst Du die Passwortdatei - man muss deshalb mit sudo machen, da Du sonst keine Schreibrechte im /etc/mosquitto Verzeichnis hast.

                                        Wenn Du Dir die Datei anschaust siehst - Du den Benutzernamen mit dem verschlüsselten Passwort:

                                        /etc/mosquitto $ cat testpw
                                        benutzer:$7$101$nS4SrGwWjhQfaCWX$JTheD4rsE44TdzmzjRWDKlF6lXN0m42zu1PaLVVJvj22C8Q28zwBeRuaW/TObAj6tvbbSfCLU3Hzqh2SI19xsg==
                                        
                                        1 Reply Last reply Reply Quote 1
                                        • mickym
                                          mickym Most Active last edited by

                                          Für die Client Konfiguration stehst Du mit den mqtt-Adapter bisschen im Regen. Eigentlich wurde da in meinen Augen zwischenzeitlich Mist von den Entwicklern gebaut, aber ich hab es dann doch geschafft sie davon zu überzeugen, dass es Sinn macht auch eigene States außerhalb der jeweiligen mqtt- Instanz zu publishen. Ab Version 3.0.6 wurde das aus der GUI verbannt und sogar in der 1. 4er Version komplett entfernt. Erst ab Version 4.0.3 🙂 - ist es wieder konfigurierbar. Leider meckert dieser Adapter und höher die Versionsnummer des Adminadapters an. Ich hab die damals upgegraded und habe deshalb den Admin in der Version 5.4.9 drauf - der es allerdings nie in Stable geschafft hat. Warum weiß ich nicht, weil ich 0 Probleme habe - außerdem sollte man in meinen Augen vor dem großen Versionssprung immer die letzte Version ins Stable hieven - aber wurde halt nicht gemacht. Das heißt wenn Du im offiziellen stable Kontext bleiben willst, dann musst Du bei mqtt 3.0.6 bleiben oder anderenfalls wie ich ggf. 5.4.9 oder eine admin 6 Version nutzen.

                                          Am Anfang ist das gar nicht so schlimm da Du ein eigenes Prefix und ein Subscribe Pattern angeben kannst.

                                          25bf634a-6997-42d5-97ff-4567dbe89ae7-image.png

                                          Die eigenen States sind bei diesen Versionen halt nicht konfigurierbar und beschränken sich immer auf die eigenen mqtt-Instanz. - Aber wie gesagt später kannst Du dann auch fremde Instanzen verwenden, um diese zu publishen und so Deiner anderen Instanz zur Verfügung zu stellen.

                                          Homoran DJMarc75 2 Replies Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @mickym last edited by Homoran

                                            @mickym sagte in MQTT Datenaustausch in beide Richtungen ?:

                                            Für die Client Konfiguration stehst Du mit den mqtt-Adapter bisschen im Regen. Eigentlich wurde da in meinen Augen zwischenzeitlich Mist von den Entwicklern gebaut, aber ich hab es dann doch geschafft sie davon zu überzeugen, dass es Sinn macht auch eigene States außerhalb der jeweiligen mqtt- Instanz zu publishen.

                                            ich will diese Diskussion nicht wieder führen. Aber für @DJMarc75 zur Info ist genau das der Vorteil des mqtt-client Adapters, da kann über jeden x-beliebigen Datenpunkt in den Objekten mit beliebigen Topics gepublished oder subscribed werden

                                            DJMarc75 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

                                            917
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            36
                                            1170
                                            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