Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Frage zu MQTT, SonOff-Adapter und mqqt über Shell

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Frage zu MQTT, SonOff-Adapter und mqqt über Shell

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
36 Beiträge 6 Kommentatoren 5.2k Aufrufe 7 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Offline
    T Offline
    topsurfer
    schrieb am zuletzt editiert von topsurfer
    #1

    Hallo,
    bislang hatte ich OpenHab2, und auf dem Raspi3 wo auch OH2 lief, lief auch der Mosquito-Broker.
    Auch hatte ich auf der Shell die Befehle mosquitto_sub und mosquitto_pub zur Verfügung.
    Beides hatte ich genutzt (_pub zum senden an OH odr einen anderen Rspi, und _sub zum "debuggen" von requests).

    Auf einem neue Raspi4 mit neuem iobroker habe ich zuerst das MQTT Paket (Client und Server) installiert, dann noch zusätzlich das SonOff.
    Dann habe ich das MQTT Paket wieder de-installiert und meine mit Tasmota geflashten Smart-Switche funktionieren immer noch; unter "Objekte" sehe ich aktuellen Werte incl. Schalterzustand. Super!

    Beinhaltet das SonOff Pakate einen MQTT-Broker?

    Und: Wie kann ich es realisieren, das ich von einer Linux-Shell (Script) auch MQTT requests absetzen kann sowie auch "prüfen" kann, welche MQTT-Daten andere Geräte lossenden (#mosquitto_sub) ?
    Kann ich ein (bestimmt verfügbares mosquitto-Paket) installieren, oder kommt es der jetzigen Installation (MQTT/SonOff -seitig) in die Quere?

    Martin

    mickymM T 2 Antworten Letzte Antwort
    0
    • T topsurfer

      Hallo,
      bislang hatte ich OpenHab2, und auf dem Raspi3 wo auch OH2 lief, lief auch der Mosquito-Broker.
      Auch hatte ich auf der Shell die Befehle mosquitto_sub und mosquitto_pub zur Verfügung.
      Beides hatte ich genutzt (_pub zum senden an OH odr einen anderen Rspi, und _sub zum "debuggen" von requests).

      Auf einem neue Raspi4 mit neuem iobroker habe ich zuerst das MQTT Paket (Client und Server) installiert, dann noch zusätzlich das SonOff.
      Dann habe ich das MQTT Paket wieder de-installiert und meine mit Tasmota geflashten Smart-Switche funktionieren immer noch; unter "Objekte" sehe ich aktuellen Werte incl. Schalterzustand. Super!

      Beinhaltet das SonOff Pakate einen MQTT-Broker?

      Und: Wie kann ich es realisieren, das ich von einer Linux-Shell (Script) auch MQTT requests absetzen kann sowie auch "prüfen" kann, welche MQTT-Daten andere Geräte lossenden (#mosquitto_sub) ?
      Kann ich ein (bestimmt verfügbares mosquitto-Paket) installieren, oder kommt es der jetzigen Installation (MQTT/SonOff -seitig) in die Quere?

      Martin

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #2

      @topsurfer Der Sonoff ist kein MQTT- Broker - nutzt aber das MQTT Protokoll als Kommunikationsprotokoll. Wenn Du also einen MQTT Broker dann brauchst den MQTT (Client Server) Adapter oder nutzt einen externen Broker, wie mosquitto. In jedem Fall brauchst Du einen anderen Port - sonst kollidiert alles auf 1883.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      1 Antwort Letzte Antwort
      0
      • T topsurfer

        Hallo,
        bislang hatte ich OpenHab2, und auf dem Raspi3 wo auch OH2 lief, lief auch der Mosquito-Broker.
        Auch hatte ich auf der Shell die Befehle mosquitto_sub und mosquitto_pub zur Verfügung.
        Beides hatte ich genutzt (_pub zum senden an OH odr einen anderen Rspi, und _sub zum "debuggen" von requests).

        Auf einem neue Raspi4 mit neuem iobroker habe ich zuerst das MQTT Paket (Client und Server) installiert, dann noch zusätzlich das SonOff.
        Dann habe ich das MQTT Paket wieder de-installiert und meine mit Tasmota geflashten Smart-Switche funktionieren immer noch; unter "Objekte" sehe ich aktuellen Werte incl. Schalterzustand. Super!

        Beinhaltet das SonOff Pakate einen MQTT-Broker?

        Und: Wie kann ich es realisieren, das ich von einer Linux-Shell (Script) auch MQTT requests absetzen kann sowie auch "prüfen" kann, welche MQTT-Daten andere Geräte lossenden (#mosquitto_sub) ?
        Kann ich ein (bestimmt verfügbares mosquitto-Paket) installieren, oder kommt es der jetzigen Installation (MQTT/SonOff -seitig) in die Quere?

        Martin

        T Offline
        T Offline
        topsurfer
        schrieb am zuletzt editiert von
        #3

        Moin,
        den ioBroker-Adapter "MQTT Broker/Client" hatte ich ja schon installiert, aber keine Shell-Befehle "gefunden". Sind diese da nicht dabei?
        Wichtig wäre mir ein mosquitto_pub zum versenden von MQTT-Pketen ...

        Und wenn der Sonoff kein Broker ist, wie bzw. wer nimmt bei mir aktuell die vom SmartSwitch (Tasmota) gesendeten MQTT Pakete entgegen?
        Irgendwie hab ich da (noch) ein Verständnisproblem :-(

        mickymM 1 Antwort Letzte Antwort
        0
        • T topsurfer

          Moin,
          den ioBroker-Adapter "MQTT Broker/Client" hatte ich ja schon installiert, aber keine Shell-Befehle "gefunden". Sind diese da nicht dabei?
          Wichtig wäre mir ein mosquitto_pub zum versenden von MQTT-Pketen ...

          Und wenn der Sonoff kein Broker ist, wie bzw. wer nimmt bei mir aktuell die vom SmartSwitch (Tasmota) gesendeten MQTT Pakete entgegen?
          Irgendwie hab ich da (noch) ein Verständnisproblem :-(

          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #4

          @topsurfer Grundsätzlich hast Du wahrscheinlich wirklich ein Verständnisproblem, wie MQTT arbeitet. Du musst Dir einfach vorstellen, dass MQTT wirklich wie ein Broker arbeitet und nicht weiß welche Inhalte in den Paketen vorliegt.

          • MQTT versendet grundsätzlich keine Informationen von sich aus, sondern informiert einen MQTT Client nur, dass Informationen für ihn vorliegen, falls er bestimmte Topics Themen abonniert hat (subscribed). Bei den mosquitto Kommandozeilentools macht man das mit mosquitto_sub. Du musst Dir einfach vorstellen, dass der MQTT Broker nur Listen führt, wer welche Topics (Themen) abonniert hat.
            Meldet sich ein Client beim Broker an oder ändert sich für einen angemeldeten Client eine Information, so informiert der Broker den Client hierüber lediglich, der Client muss dann aber diese Information explizit anfordern. Wenn man das mit QoS 0 macht, sendet der MQTT Broker einmal die Information - macht einen Haken auf seiner Liste - und wird diese Informationen nie wieder an diesen Client verschicken. Wenn alle Clients die Information zu einem Topic abgerufen haben, löscht der Broker diese Information wieder. Bei QoS1 und 2 muss der Client auch noch bestätigen, dass er die Information auch empfangen hat.
          • Sobald ein MQTT Client sich angemeldet hat, kann dieser egal wo im MQTT Baum eine Information veröffentlichen. Der MQTT Broker nimmt diese Information entgegen und legt diese ohne den Inhalt zu interpretieren und zu kennen ab und informiert alle Clients, die dieses Thema abonniert haben, dass neue Informationen vorliegen. Mit den mosquitto Kommandozeilentools veröffentlich eine Client ein Thema mit mosquitto_pub.

          So mit diesem Verständnis sollten Deine Fragen Deines letzten Posts beantwortbar sein:

          den ioBroker-Adapter "MQTT Broker/Client" hatte ich ja schon installiert, aber keine Shell-Befehle "gefunden". Sind diese da nicht dabei?

          Natürlich nicht. Ein MQTT Broker oder auch der MQTT Adapter als Broker weiß nichts von irgendwelchen Shell Befehlen und weiß nicht was das ist. Er versendet auch keine Informationen via mosquitto_pub. Er fieselt auch keine JSON Strings auseinander und schreibt diese in Datenpunkte.
          Wenn Du also Informationen an Deine mit Tasmota geflashten Switch schicken willst musst Du dies dadurch tun, indem Du Themen auf Deinem MQTT Broker veröffentlichst, auf die die Switche hören bzw. diese abonniert haben.
          Dafür hast Du mit dem MQTT Broker - 2 Möglichkeiten.

          1. Du nimmst einen anderen MQTT Client - zum Beispiel installierst Du Dir die mosquitto Clients auf Deiner iobroker Maschine und veröffentlichst Tasmota Befehle, indem Du zu Themen veröffentlichst auf die Tasmota gefläschte Geräte hören, die also abonniert haben - in der Regel also Topics unter dem cmnd-Ast. So ein anderere MQTT-Client kann entweder mit den Kommandozeilentools ein mosquitto_pub sein - mit dem Du Dich gleichzeitig anmeldest und ein Topic veröffentlichst, der sich aber sofort wieder abmeldet, wenn der Befehl gesendet wurde. Deswegen musst Du ja bei mosquitto_pub - neben dem topic immer Anmeldedaten mitgeben.
            mosquitto_pub { [-h hostname] [--unix socket path] [-p port-number] [-u username] [-P password] -t message-topic... | -L URL }
            oder Du nimmst einen anderen MQTT Client - zum Beispiel auf Deinem Handy mit dem Du Topics für Deine Geräte publishst. (veröffentlichst)
          2. Du erstellst im MQTT-Adapter einfach einen Datenpunkt (also topic) und schreibst Informationen da rein. Damit arbeitet der MQTT-Adapter als Broker und informiert seine Abonnenten dieses Themas, das neue Informationen vorliegen und zum Abruf bereit stehen.
            d0d881c6-1c5a-4972-85b4-cc8bb51debcc-image.png

          All diese Punkte unter dem cmnd Ast eines Devices legst Du also im MQTT-Adapter selber an.
          Wie Du das machst ist also dem MQTT Adapter als Broker egal.

          • Du kannst das über das + Zeichen unter den Objekten machen bb1b152d-488e-4102-a0ab-de3acb4732c3-image.png
          • Du kannst das mit einem Kommandozeilentool wie mosquitto_pub machen
          • Du kannst das mit einer MQTT-App auf Deinem Handy machen
          • Falls Du nicht weisst welch DP Du anlegen musst, kannst Du das unter Windows oder dem MAC auch mit dem Tasmota Device Manager machen. https://github.com/jziolkowski/tdm
            0c59dc33-e1ba-48bf-93a2-89ecdb96183f-image.png

          Und wenn der Sonoff kein Broker ist, wie bzw. wer nimmt bei mir aktuell die vom SmartSwitch (Tasmota) gesendeten MQTT Pakete entgegen?

          Wie gesagt er nimmt Informationen entgegen, die ein MQTT-Client an den Sonoff Adapter geschickt hat. Aber er

          • interpretiert diese Informationen und zerlegt JSON Informationen und schreibt diese Informationen in bestimmte Datenpunkte (das würde ein MQTT Broker nie machen - den interessiert die Information nicht, die gepublished werden, sondern legt diese lediglich ab.)
          • er kann diese Informationen aber lediglich interpretieren, wenn diese ihm bekannt sind. Meist sind das eben Sonoff Geräte. Sobald Du aber Geräte betreibst, die dem Sonoff Adapter nicht bekannt sind, fehlen ggf. Datenpunkte oder können nicht interpretiert werden.
          • in Parallelthreads wird davon berichtet, dass der Adapter die mqtt-Kommandos halt auch seriell abarbeiten und deshalb schnell bei großen Mengen an Anfragen überfordert ist - da die Verarbeitung von Informationen eben aufwändig ist - ein normaler MQTT Broker ist hingegen schnell - weil er die Infos nur ablegt und ihn der Inhalt nicht interessiert

          Damit bleibt noch Deine letzte Frage - aus dem Eingangsposting:

          Wie kann ich es realisieren, das ich von einer Linux-Shell (Script) auch MQTT requests absetzen kann sowie auch "prüfen" kann, welche MQTT-Daten andere Geräte lossenden (#mosquitto_sub) ?

          Ja in dem Du Dir die mosquitto clients installierst:

          sudo apt install mosquitto-clients
          

          Unter debian also auch auf dem Raspi - sind die mosquitto clients als Paket verfügbar:

          apt policy mosquitto-clients
          mosquitto-clients:
            Installiert:           (keine)
            Installationskandidat: 2.0.11-1
            Versionstabelle:
               2.0.11-1 500
                  500 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf Packages
          

          Lies Dir mal Steves Seite durch - damit sollte dann alles klar sein: http://www.steves-internet-guide.com/mosquitto_pub-sub-clients/

          Fazit:

          1. Sonoff Adapter und MQTT-Adapter als Broker kannst Du auf dem gleichen Port nicht gleichzeitig betreiben. Entweder schmeisst Du einen von beiden runter. Wenn Du beide Adapter betreiben willst muss das auf unterschiedlichen Ports geschehen und Du musst halt in Deinen MQTT Devices (Tasmota oder auch andere) über den Port sagen mit welchem MQTT Broker sie kommunizieren sollen.
          2. Die mosquitto Clients kannst Du immer auf Deinem Raspberry neben Deinem iobroker installieren.
          3. Du kannst auch einen mosquitto Broker auf Deinem Raspberry installieren und den MQTT (Client/Broker) Adapter als Client betreiben. So mache ich das, also meine präferierte Lösung, weil der Adapter trotzdem als Broker bei mir schon mal ungut aufgefallen ist. (https://forum.iobroker.net/topic/33772/mqtt-message-xxx-deleted-after-11-retries?_=1636628522075). Damit bekommst dann alle Datenpunkte im mosquitto broker als Datenpunkte im iobroker zu Gesicht.
            Den mosquitto Broker installierst Du einfach mit:
          sudo apt install mosquitto
          

          Wie Du im obigen Screenshot siehst - stehen Dir dann im iobroker alle topics zur Verfügung.
          c77aa0e6-4288-495e-a80a-d983dcc9c1ab-image.png

          MQTT- Einstellungen - alle auf Standard belassen !!! - nichts anhaken.

          28cedd7c-0b0b-42ad-88e3-e4ad2cf76b2c-image.png

          Bei Dir wird dann halt bei den gepublishten Topics mqtt.0.* stehen, wenn es Deine 1. Instanz ist.
          Falls Du den mosquitto Broker installierst musst Du den Sonoff Adapter falls Du den weiter nutzen willst halt auch wieder auf einem anderen Port betreiben.

          Ich persönlich !!! - mag alle Adapter nicht, die als Pseudo-mqtt Broker :grin: arbeiten (dazu gehören neben Sonoff, noch Shelly Adapter und owntracks Adapter und ggf. noch andere die das mqtt-Protokoll nutzen). Wenn Du alle diese Adapter nutzen willst, dann muss das immer über einen eigenen Port laufen. Ich habe lieber alles unter einem Broker.
          Die Nutzung solcher Adapter würde ich nur empfehlen, wenn sie sich als Clients sich an einen vorhandenen MQTT-Broker anschließen ließen - dann können diese Adapter spezifische Informationen aufbereiten, aber halt nicht in der Form, wie das bislang geschieht.

          Noch Fragen???? :grin:

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          K 1 Antwort Letzte Antwort
          1
          • mickymM mickym

            @topsurfer Grundsätzlich hast Du wahrscheinlich wirklich ein Verständnisproblem, wie MQTT arbeitet. Du musst Dir einfach vorstellen, dass MQTT wirklich wie ein Broker arbeitet und nicht weiß welche Inhalte in den Paketen vorliegt.

            • MQTT versendet grundsätzlich keine Informationen von sich aus, sondern informiert einen MQTT Client nur, dass Informationen für ihn vorliegen, falls er bestimmte Topics Themen abonniert hat (subscribed). Bei den mosquitto Kommandozeilentools macht man das mit mosquitto_sub. Du musst Dir einfach vorstellen, dass der MQTT Broker nur Listen führt, wer welche Topics (Themen) abonniert hat.
              Meldet sich ein Client beim Broker an oder ändert sich für einen angemeldeten Client eine Information, so informiert der Broker den Client hierüber lediglich, der Client muss dann aber diese Information explizit anfordern. Wenn man das mit QoS 0 macht, sendet der MQTT Broker einmal die Information - macht einen Haken auf seiner Liste - und wird diese Informationen nie wieder an diesen Client verschicken. Wenn alle Clients die Information zu einem Topic abgerufen haben, löscht der Broker diese Information wieder. Bei QoS1 und 2 muss der Client auch noch bestätigen, dass er die Information auch empfangen hat.
            • Sobald ein MQTT Client sich angemeldet hat, kann dieser egal wo im MQTT Baum eine Information veröffentlichen. Der MQTT Broker nimmt diese Information entgegen und legt diese ohne den Inhalt zu interpretieren und zu kennen ab und informiert alle Clients, die dieses Thema abonniert haben, dass neue Informationen vorliegen. Mit den mosquitto Kommandozeilentools veröffentlich eine Client ein Thema mit mosquitto_pub.

            So mit diesem Verständnis sollten Deine Fragen Deines letzten Posts beantwortbar sein:

            den ioBroker-Adapter "MQTT Broker/Client" hatte ich ja schon installiert, aber keine Shell-Befehle "gefunden". Sind diese da nicht dabei?

            Natürlich nicht. Ein MQTT Broker oder auch der MQTT Adapter als Broker weiß nichts von irgendwelchen Shell Befehlen und weiß nicht was das ist. Er versendet auch keine Informationen via mosquitto_pub. Er fieselt auch keine JSON Strings auseinander und schreibt diese in Datenpunkte.
            Wenn Du also Informationen an Deine mit Tasmota geflashten Switch schicken willst musst Du dies dadurch tun, indem Du Themen auf Deinem MQTT Broker veröffentlichst, auf die die Switche hören bzw. diese abonniert haben.
            Dafür hast Du mit dem MQTT Broker - 2 Möglichkeiten.

            1. Du nimmst einen anderen MQTT Client - zum Beispiel installierst Du Dir die mosquitto Clients auf Deiner iobroker Maschine und veröffentlichst Tasmota Befehle, indem Du zu Themen veröffentlichst auf die Tasmota gefläschte Geräte hören, die also abonniert haben - in der Regel also Topics unter dem cmnd-Ast. So ein anderere MQTT-Client kann entweder mit den Kommandozeilentools ein mosquitto_pub sein - mit dem Du Dich gleichzeitig anmeldest und ein Topic veröffentlichst, der sich aber sofort wieder abmeldet, wenn der Befehl gesendet wurde. Deswegen musst Du ja bei mosquitto_pub - neben dem topic immer Anmeldedaten mitgeben.
              mosquitto_pub { [-h hostname] [--unix socket path] [-p port-number] [-u username] [-P password] -t message-topic... | -L URL }
              oder Du nimmst einen anderen MQTT Client - zum Beispiel auf Deinem Handy mit dem Du Topics für Deine Geräte publishst. (veröffentlichst)
            2. Du erstellst im MQTT-Adapter einfach einen Datenpunkt (also topic) und schreibst Informationen da rein. Damit arbeitet der MQTT-Adapter als Broker und informiert seine Abonnenten dieses Themas, das neue Informationen vorliegen und zum Abruf bereit stehen.
              d0d881c6-1c5a-4972-85b4-cc8bb51debcc-image.png

            All diese Punkte unter dem cmnd Ast eines Devices legst Du also im MQTT-Adapter selber an.
            Wie Du das machst ist also dem MQTT Adapter als Broker egal.

            • Du kannst das über das + Zeichen unter den Objekten machen bb1b152d-488e-4102-a0ab-de3acb4732c3-image.png
            • Du kannst das mit einem Kommandozeilentool wie mosquitto_pub machen
            • Du kannst das mit einer MQTT-App auf Deinem Handy machen
            • Falls Du nicht weisst welch DP Du anlegen musst, kannst Du das unter Windows oder dem MAC auch mit dem Tasmota Device Manager machen. https://github.com/jziolkowski/tdm
              0c59dc33-e1ba-48bf-93a2-89ecdb96183f-image.png

            Und wenn der Sonoff kein Broker ist, wie bzw. wer nimmt bei mir aktuell die vom SmartSwitch (Tasmota) gesendeten MQTT Pakete entgegen?

            Wie gesagt er nimmt Informationen entgegen, die ein MQTT-Client an den Sonoff Adapter geschickt hat. Aber er

            • interpretiert diese Informationen und zerlegt JSON Informationen und schreibt diese Informationen in bestimmte Datenpunkte (das würde ein MQTT Broker nie machen - den interessiert die Information nicht, die gepublished werden, sondern legt diese lediglich ab.)
            • er kann diese Informationen aber lediglich interpretieren, wenn diese ihm bekannt sind. Meist sind das eben Sonoff Geräte. Sobald Du aber Geräte betreibst, die dem Sonoff Adapter nicht bekannt sind, fehlen ggf. Datenpunkte oder können nicht interpretiert werden.
            • in Parallelthreads wird davon berichtet, dass der Adapter die mqtt-Kommandos halt auch seriell abarbeiten und deshalb schnell bei großen Mengen an Anfragen überfordert ist - da die Verarbeitung von Informationen eben aufwändig ist - ein normaler MQTT Broker ist hingegen schnell - weil er die Infos nur ablegt und ihn der Inhalt nicht interessiert

            Damit bleibt noch Deine letzte Frage - aus dem Eingangsposting:

            Wie kann ich es realisieren, das ich von einer Linux-Shell (Script) auch MQTT requests absetzen kann sowie auch "prüfen" kann, welche MQTT-Daten andere Geräte lossenden (#mosquitto_sub) ?

            Ja in dem Du Dir die mosquitto clients installierst:

            sudo apt install mosquitto-clients
            

            Unter debian also auch auf dem Raspi - sind die mosquitto clients als Paket verfügbar:

            apt policy mosquitto-clients
            mosquitto-clients:
              Installiert:           (keine)
              Installationskandidat: 2.0.11-1
              Versionstabelle:
                 2.0.11-1 500
                    500 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf Packages
            

            Lies Dir mal Steves Seite durch - damit sollte dann alles klar sein: http://www.steves-internet-guide.com/mosquitto_pub-sub-clients/

            Fazit:

            1. Sonoff Adapter und MQTT-Adapter als Broker kannst Du auf dem gleichen Port nicht gleichzeitig betreiben. Entweder schmeisst Du einen von beiden runter. Wenn Du beide Adapter betreiben willst muss das auf unterschiedlichen Ports geschehen und Du musst halt in Deinen MQTT Devices (Tasmota oder auch andere) über den Port sagen mit welchem MQTT Broker sie kommunizieren sollen.
            2. Die mosquitto Clients kannst Du immer auf Deinem Raspberry neben Deinem iobroker installieren.
            3. Du kannst auch einen mosquitto Broker auf Deinem Raspberry installieren und den MQTT (Client/Broker) Adapter als Client betreiben. So mache ich das, also meine präferierte Lösung, weil der Adapter trotzdem als Broker bei mir schon mal ungut aufgefallen ist. (https://forum.iobroker.net/topic/33772/mqtt-message-xxx-deleted-after-11-retries?_=1636628522075). Damit bekommst dann alle Datenpunkte im mosquitto broker als Datenpunkte im iobroker zu Gesicht.
              Den mosquitto Broker installierst Du einfach mit:
            sudo apt install mosquitto
            

            Wie Du im obigen Screenshot siehst - stehen Dir dann im iobroker alle topics zur Verfügung.
            c77aa0e6-4288-495e-a80a-d983dcc9c1ab-image.png

            MQTT- Einstellungen - alle auf Standard belassen !!! - nichts anhaken.

            28cedd7c-0b0b-42ad-88e3-e4ad2cf76b2c-image.png

            Bei Dir wird dann halt bei den gepublishten Topics mqtt.0.* stehen, wenn es Deine 1. Instanz ist.
            Falls Du den mosquitto Broker installierst musst Du den Sonoff Adapter falls Du den weiter nutzen willst halt auch wieder auf einem anderen Port betreiben.

            Ich persönlich !!! - mag alle Adapter nicht, die als Pseudo-mqtt Broker :grin: arbeiten (dazu gehören neben Sonoff, noch Shelly Adapter und owntracks Adapter und ggf. noch andere die das mqtt-Protokoll nutzen). Wenn Du alle diese Adapter nutzen willst, dann muss das immer über einen eigenen Port laufen. Ich habe lieber alles unter einem Broker.
            Die Nutzung solcher Adapter würde ich nur empfehlen, wenn sie sich als Clients sich an einen vorhandenen MQTT-Broker anschließen ließen - dann können diese Adapter spezifische Informationen aufbereiten, aber halt nicht in der Form, wie das bislang geschieht.

            Noch Fragen???? :grin:

            K Offline
            K Offline
            klassisch
            Most Active
            schrieb am zuletzt editiert von
            #5

            @mickym sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

            Noch Fragen???? :grin:

            Ja, ich habe noch Fragen. Andere. Wage aber den Thread zu nutzen, weil er in eine ähnliche Richtung geht, ansonsten verlassen scheint und Du ein exzellenter MQTT Kenner bist. Ich habe bisher nur den den MQTT broker Adapter zum Empfangen von Sensordaten verwendet und das hat funktioniert. Also Problem gelöst aber nichts gelernt.
            Jetzt möchte ich auf einem kleinen Victron Wechselrichter auch mal MQTT testen.
            Dazu habe ich zusätzlich den MQTT Client installiert und eingerichtet. Das funktioniert teilweise. Victron-Venus sendet was, aber nur die Seriennummer.

            Man liest und hört, daß man dem Victron MQTT zyklisch einen Request senden müssen, damit er seine Subscribenten bedient.

            Mit mosquitto_pub soll der Befehl so aussehen:

            dmosquitto_pub -h 192.168.172.99 -m '' -t 'R/asdf1234567/system/0/Serial'
            

            wobei asdf1234567 für eine bekannte Zugangsnummer steht

            mosquitto_pub habe ich nicht. Kann ich das auch irgendwie vom ioBroker aus, z.B. durch JScript getriggert senden?
            Habe schon die ioBroker Doku durchforstet. Die ist aber kanpp, oder in einem "löchrigen" Zustand (es fehlen z.B. eingebundene Bilder, Screenshots etc.

            K mickymM 2 Antworten Letzte Antwort
            0
            • K klassisch

              @mickym sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

              Noch Fragen???? :grin:

              Ja, ich habe noch Fragen. Andere. Wage aber den Thread zu nutzen, weil er in eine ähnliche Richtung geht, ansonsten verlassen scheint und Du ein exzellenter MQTT Kenner bist. Ich habe bisher nur den den MQTT broker Adapter zum Empfangen von Sensordaten verwendet und das hat funktioniert. Also Problem gelöst aber nichts gelernt.
              Jetzt möchte ich auf einem kleinen Victron Wechselrichter auch mal MQTT testen.
              Dazu habe ich zusätzlich den MQTT Client installiert und eingerichtet. Das funktioniert teilweise. Victron-Venus sendet was, aber nur die Seriennummer.

              Man liest und hört, daß man dem Victron MQTT zyklisch einen Request senden müssen, damit er seine Subscribenten bedient.

              Mit mosquitto_pub soll der Befehl so aussehen:

              dmosquitto_pub -h 192.168.172.99 -m '' -t 'R/asdf1234567/system/0/Serial'
              

              wobei asdf1234567 für eine bekannte Zugangsnummer steht

              mosquitto_pub habe ich nicht. Kann ich das auch irgendwie vom ioBroker aus, z.B. durch JScript getriggert senden?
              Habe schon die ioBroker Doku durchforstet. Die ist aber kanpp, oder in einem "löchrigen" Zustand (es fehlen z.B. eingebundene Bilder, Screenshots etc.

              K Offline
              K Offline
              klassisch
              Most Active
              schrieb am zuletzt editiert von
              #6

              @klassisch Ein Stückchen weiter:
              Eine Zeite MQTT Instanz angelegt.

              mqtt.1
              

              Also Instanz des "großen" MQTT Brokers/clients, weil dazu eine Beschreibung gefunden
              Diese als Client konfiguriert. Also im Wesentlichen die IP des Venus Raspi eingetragen und

              R/abcde123456af/#
              

              subscribiert.

              Durch ein JScript, welches enthält

              sendTo('mqtt.0, 'sendMessage2Client', {topic:'R/abcde123456af/system/0/Serial', message: ''}); // https://github.com/ioBroker/ioBroker.mqtt 
              

              Wird Venus gesprächig und es werden Objekte angelegt.

              Aber es fehlen nocht die Zahlenwerte (Daten):

              d8489947-ab37-4038-9194-708ad963b809-grafik.png

              mickymM 1 Antwort Letzte Antwort
              1
              • K klassisch

                @mickym sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                Noch Fragen???? :grin:

                Ja, ich habe noch Fragen. Andere. Wage aber den Thread zu nutzen, weil er in eine ähnliche Richtung geht, ansonsten verlassen scheint und Du ein exzellenter MQTT Kenner bist. Ich habe bisher nur den den MQTT broker Adapter zum Empfangen von Sensordaten verwendet und das hat funktioniert. Also Problem gelöst aber nichts gelernt.
                Jetzt möchte ich auf einem kleinen Victron Wechselrichter auch mal MQTT testen.
                Dazu habe ich zusätzlich den MQTT Client installiert und eingerichtet. Das funktioniert teilweise. Victron-Venus sendet was, aber nur die Seriennummer.

                Man liest und hört, daß man dem Victron MQTT zyklisch einen Request senden müssen, damit er seine Subscribenten bedient.

                Mit mosquitto_pub soll der Befehl so aussehen:

                dmosquitto_pub -h 192.168.172.99 -m '' -t 'R/asdf1234567/system/0/Serial'
                

                wobei asdf1234567 für eine bekannte Zugangsnummer steht

                mosquitto_pub habe ich nicht. Kann ich das auch irgendwie vom ioBroker aus, z.B. durch JScript getriggert senden?
                Habe schon die ioBroker Doku durchforstet. Die ist aber kanpp, oder in einem "löchrigen" Zustand (es fehlen z.B. eingebundene Bilder, Screenshots etc.

                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #7

                @klassisch sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                Ja, ich habe noch Fragen. Andere. Wage aber den Thread zu nutzen, weil er in eine ähnliche Richtung geht, ansonsten verlassen scheint und Du ein exzellenter MQTT Kenner bist. Ich habe bisher nur den den MQTT broker Adapter zum Empfangen von Sensordaten verwendet und das hat funktioniert. Also Problem gelöst aber nichts gelernt.

                Danke für das Kompliment - aber ich denke ich bin nur ein durchschnittlicher Anwender von mqtt, habe mich nun nicht mit den Tiefen dieses Protokolls auseinandergesetzt.
                Andererseits habe ich aber auch das Gefühl, dass ich mich wohl nicht ganz klar ausgedrückt habe, sonst wäre es wohl etwas klarer, wie es funktioniert und das Problem wäre gelöst und was gelernt. ;) ;) ;)

                Jetzt möchte ich auf einem kleinen Victron Wechselrichter auch mal MQTT testen.

                Dazu habe ich zusätzlich den MQTT Client installiert und eingerichtet.

                Nun wenn Du den MQTT-Adapter als Broker laufen hast, dann brauchst Du keinen MQTT Client mehr - aber man kann ihn natürlich laufen lassen, was aber unnötig ist. Also den MQTT Client kannst Du getrost wieder runterschmeissen. Auch musst Du nicht publishen über SendTo und Adapter, sondern einfach den Datenpunkt beschreiben, wie ich unten gepostet habe,

                Das funktioniert teilweise. Victron-Venus sendet was, aber nur die Seriennummer.

                Nun war soll man unter 'R/asdf1234567/system/0/Serial' den anderes senden, als die Seriennummer - Ich kenne den Wechselrichter nicht, aber wenn man was anderes bekommen will, dann braucht man andere Topics.

                Man liest und hört, daß man dem Victron MQTT zyklisch einen Request senden müssen, damit er seine Subscribenten bedient.

                Na das ist vielleicht eher missverstanden worden. Der Victron published sicherlich nur einmal seine Info. Der mqtt Broker informiert seine Subscribenten. Sobald das geschehen ist, schmeisst der mqtt-Broker diese Info weg und sie kann kein 2. Mal abgerufen werden. Das ist das Missverständnis eines mqtt-Brokers bzw. die Behandlung von mqtt - Nachrichten, es ist keine Datenbank die Zustände speichert, sondern diese nur solange behält, bis alle verbundenen Clients damit versorgt sind. Und jeder Client bekommt die auch nur einmal. Will ich also permanent Nachrichten haben, dann muss ich den "Publisher" schon dauernd dazu auffordern, seine Infos immer und immer wieder kund zu tun und zu publishen.

                Wenn Du Dir die Syntax von dem Befehl anschaust, dann macht dieser Befehl nichts anderes, als an einen MQTT-Broker
                -h hostname

                -h 192.168.172.99
                

                (also nicht an den Victron MQTT) einen leeren String
                -m message

                -m ''
                

                an das topic
                -t topic

                -t 'R/asdf1234567/system/0/Serial'
                

                Der Victron Wechselrichter hört wohl auf alles was unter R/asdf1234567 veröffentlicht wurde und reagiert entsprechend.

                Wenn ich mir diese technische Dokumentation ansehe https://www.victronenergy.de/upload/documents/Technical-Information-Data-communication-with-Victron-Energy-products_DE.pdf dann wird bzgl mqtt auf dieses Dokument verwiesen:
                https://github.com/victronenergy/dbus-mqtt/blob/master/README.md

                Sprich was Du abgesendet hast mit

                R/asdf1234567/system/0/Serial
                

                ist ein Read Request der Seriennummer.

                Notifications sollten dann wohl eher über dieses Topic kommen

                N/asdf1234567/....
                

                und schreibn erfolgt über

                W/asdf1234567/....
                

                Das Auslesen der Seriennummer erzeugt wohl ein generelles Ausspukten der Informationen:

                4cee005f-1975-48d6-8972-3dcab2247364-image.png

                Die Infos kommen dann aber unter Notifications unter N/....

                mosquitto_pub habe ich nicht. Kann ich das auch irgendwie vom ioBroker aus, z.B. durch JScript getriggert senden?

                Habe schon die ioBroker Doku durchforstet. Die ist aber kanpp, oder in einem "löchrigen" Zustand (es fehlen z.B. eingebundene Bilder, Screenshots etc.

                mosquitto_pub - habe ich ja unten beschrieben - kann man sich durch Installation der mosquitto-clients installieren, das brauchst Du aber nicht.

                Schmeisse Deinen mqtt-Client runter. Erstelle Dir einfach unter Deinem mqtt Broker wahrscheinlich mqtt.0 einfach in der Hierachie diesen Datenpunkt:

                32a2372b-84f5-455c-b187-82964b2e96a0-image.png

                Diesen Datenpunkt fütterst Du dann um ein keepalive zu erzeugen mit einem leeren String via Javascript, Blockly oder was Du sonst benutzt.

                Das funktioniert teilweise. Victron-Venus sendet was, aber nur die Seriennummer.

                Was soll auch sonst da drin stehen, Du liest ja auch nur Seriennummern. Wie gesagt die anderen Informationen sollten unter einem N Ast auftauchen.

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                1 Antwort Letzte Antwort
                1
                • K klassisch

                  @klassisch Ein Stückchen weiter:
                  Eine Zeite MQTT Instanz angelegt.

                  mqtt.1
                  

                  Also Instanz des "großen" MQTT Brokers/clients, weil dazu eine Beschreibung gefunden
                  Diese als Client konfiguriert. Also im Wesentlichen die IP des Venus Raspi eingetragen und

                  R/abcde123456af/#
                  

                  subscribiert.

                  Durch ein JScript, welches enthält

                  sendTo('mqtt.0, 'sendMessage2Client', {topic:'R/abcde123456af/system/0/Serial', message: ''}); // https://github.com/ioBroker/ioBroker.mqtt 
                  

                  Wird Venus gesprächig und es werden Objekte angelegt.

                  Aber es fehlen nocht die Zahlenwerte (Daten):

                  d8489947-ab37-4038-9194-708ad963b809-grafik.png

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #8

                  @klassisch Es ist zwar schön, wenn Du mit sendTo was an den Adapter schickst, es würde es aber auch tun, wenn Du einfach den DP mit JS beschreibst. Das habe ich nun alles lange erklärt. Welche Information Du über den N Ast bekommst, das liest Du bitte in der Doku nach - scheint ja, dass der N-Ast nun bei Dir im Broker aufgetaucht ist. (Sehe ich zumindest an dem Namen (N/..../system/0/Ac/Consuption/L1/Power)

                  Und wann der Zahlen schickt oder wie man das antriggert müsstest Du selbst lesen, das übersteigt die mqtt Grundlagen.

                  Im Prinzip brauche ich das auch anscheinend alles gar nicht zu beschreiben, denn mit Trial & Error kommt man meist auch ans Ziel, wie man ja an diesem Beispiel am Besten sieht.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  K 1 Antwort Letzte Antwort
                  1
                  • mickymM mickym

                    @klassisch Es ist zwar schön, wenn Du mit sendTo was an den Adapter schickst, es würde es aber auch tun, wenn Du einfach den DP mit JS beschreibst. Das habe ich nun alles lange erklärt. Welche Information Du über den N Ast bekommst, das liest Du bitte in der Doku nach - scheint ja, dass der N-Ast nun bei Dir im Broker aufgetaucht ist. (Sehe ich zumindest an dem Namen (N/..../system/0/Ac/Consuption/L1/Power)

                    Und wann der Zahlen schickt oder wie man das antriggert müsstest Du selbst lesen, das übersteigt die mqtt Grundlagen.

                    Im Prinzip brauche ich das auch anscheinend alles gar nicht zu beschreiben, denn mit Trial & Error kommt man meist auch ans Ziel, wie man ja an diesem Beispiel am Besten sieht.

                    K Offline
                    K Offline
                    klassisch
                    Most Active
                    schrieb am zuletzt editiert von
                    #9

                    Vielen Dank für Deine Erläuterungen. Werde ich nochmals detailliert durchgehen, in der Hoffnung, daß er auch noch Zahlenwerte sendet.

                    @mickym sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                    @klassisch Es ist zwar schön, wenn Du mit sendTo was an den Adapter schickst, es würde es aber auch tun, wenn Du einfach den DP mit JS beschreibst.

                    Das hatte ich natürlich zuallerrst getestet, hat aber leider nicht funktioniert. zumindest nicht mit dem mqtt-client und meinen Eisntellungen.

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • K klassisch

                      Vielen Dank für Deine Erläuterungen. Werde ich nochmals detailliert durchgehen, in der Hoffnung, daß er auch noch Zahlenwerte sendet.

                      @mickym sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                      @klassisch Es ist zwar schön, wenn Du mit sendTo was an den Adapter schickst, es würde es aber auch tun, wenn Du einfach den DP mit JS beschreibst.

                      Das hatte ich natürlich zuallerrst getestet, hat aber leider nicht funktioniert. zumindest nicht mit dem mqtt-client und meinen Eisntellungen.

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #10

                      @mickym sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                      @klassisch Es ist zwar schön, wenn Du mit sendTo was an den Adapter schickst, es würde es aber auch tun, wenn Du einfach den DP mit JS beschreibst.

                      Das hatte ich natürlich zuallerrst getestet, hat aber leider nicht funktioniert. zumindest nicht mit dem mqtt-client und meinen Eisntellungen.

                      Im mqtt-Broker - den mqtt-Client brauchst Du nicht - hab ich doch geschrieben.

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      K 1 Antwort Letzte Antwort
                      1
                      • mickymM mickym

                        @mickym sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                        @klassisch Es ist zwar schön, wenn Du mit sendTo was an den Adapter schickst, es würde es aber auch tun, wenn Du einfach den DP mit JS beschreibst.

                        Das hatte ich natürlich zuallerrst getestet, hat aber leider nicht funktioniert. zumindest nicht mit dem mqtt-client und meinen Eisntellungen.

                        Im mqtt-Broker - den mqtt-Client brauchst Du nicht - hab ich doch geschrieben.

                        K Offline
                        K Offline
                        klassisch
                        Most Active
                        schrieb am zuletzt editiert von klassisch
                        #11

                        Nochmals vielen Dank für Deine Geduld und Deine detaillierten Erläuterungen und Deine Zeit.
                        Und das Licht am Ende des Tunnels wird etwas heller

                        @mickym sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                        Im mqtt-Broker - den mqtt-Client brauchst Du nicht - hab ich doch geschrieben.

                        Ja, habe den MQTT-Client jetzt ausser Betrieb gesetzt.

                        Habe für meine ESPEasy und anderen Kleinkram eine Instanz mqtt.0
                        Für den Victron habe ich jetzt mqtt.1 Instanziert. Ist das i.O. oder wird diese zweite Instanz auch nicht gebraucht? Wie gesagt, habe MQTT bisher nur in Plug&Play Lösungen eingesetzt. Ziele erreicht, aber eben nichts wirklich über MQTT gelernt.

                        Die Sache mit der Sendung der Seriennummer hatte ich auch so "aufgeschnappt" und verstanden. Venus braucht das wohl, um eine bestimmte Zeit seine Subscriptionen zu bedienen. Danach werden die Subscriptionen wieder eingestellt.
                        Kam aber nicht wirklich weiter, die Zahlenwerte waren nicht da.
                        Habe eben Den Venus-Raspi rebootet und nur sieht das freundlicher aus:ab4a1412-8a60-4f64-a14c-21fb009a94e1-grafik.png

                        Wartet man dann einige Zeit, sieht es wieder so aus:
                        12910f5c-8489-46cb-a520-f8b41c07f71c-grafik.png
                        Keine Zahlen mehr :-(

                        Dann - wie Du geschrieben hast - in den R-Pfad in die Seriennummer einfach eine Ziffer eingetippt und es gibt wieder Werte!

                        Jetzt gibt es nur noch den Schönheitsfehler, daß statt Zahlenwerte Strings rauskommen:

                        {"value": 233.8300018310547}
                        

                        Gibt es dafür eine Option im MQTT-Adapter, oder ist das per Stringoperation z.B. durch JScript zu lösen?

                        mickymM Andreas JordanA 2 Antworten Letzte Antwort
                        0
                        • K klassisch

                          Nochmals vielen Dank für Deine Geduld und Deine detaillierten Erläuterungen und Deine Zeit.
                          Und das Licht am Ende des Tunnels wird etwas heller

                          @mickym sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                          Im mqtt-Broker - den mqtt-Client brauchst Du nicht - hab ich doch geschrieben.

                          Ja, habe den MQTT-Client jetzt ausser Betrieb gesetzt.

                          Habe für meine ESPEasy und anderen Kleinkram eine Instanz mqtt.0
                          Für den Victron habe ich jetzt mqtt.1 Instanziert. Ist das i.O. oder wird diese zweite Instanz auch nicht gebraucht? Wie gesagt, habe MQTT bisher nur in Plug&Play Lösungen eingesetzt. Ziele erreicht, aber eben nichts wirklich über MQTT gelernt.

                          Die Sache mit der Sendung der Seriennummer hatte ich auch so "aufgeschnappt" und verstanden. Venus braucht das wohl, um eine bestimmte Zeit seine Subscriptionen zu bedienen. Danach werden die Subscriptionen wieder eingestellt.
                          Kam aber nicht wirklich weiter, die Zahlenwerte waren nicht da.
                          Habe eben Den Venus-Raspi rebootet und nur sieht das freundlicher aus:ab4a1412-8a60-4f64-a14c-21fb009a94e1-grafik.png

                          Wartet man dann einige Zeit, sieht es wieder so aus:
                          12910f5c-8489-46cb-a520-f8b41c07f71c-grafik.png
                          Keine Zahlen mehr :-(

                          Dann - wie Du geschrieben hast - in den R-Pfad in die Seriennummer einfach eine Ziffer eingetippt und es gibt wieder Werte!

                          Jetzt gibt es nur noch den Schönheitsfehler, daß statt Zahlenwerte Strings rauskommen:

                          {"value": 233.8300018310547}
                          

                          Gibt es dafür eine Option im MQTT-Adapter, oder ist das per Stringoperation z.B. durch JScript zu lösen?

                          mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von mickym
                          #12

                          @klassisch Keine 2 Instanzen nötig - die müssen ja dann auch auf unterschiedlichen Ports laufen. Bei mir ist sämtlich mqtt Kommunikation auf einem Broker in einem Adapter zusammen.

                          mqtt kennt nur Strings - und zwar JSON-Strings - weil Du so alle Informationen ohne Berücksichtigung des Datentyps ansprechen kannst.

                          Wenn Du Javascript programmierst - liest Du den Datenpunkt ein und machst mit parse ein JS ein Objekt daraus:

                          str='{"value": 233.8300018310547}';
                          obj = JSON.parse(str);
                          wert = obj.value;
                          

                          Stand doch in der Beschreibung mit dem Keep Alive - die ich Dir verlinkt habe. Du musst die Seriennummer zyklisch auslesen. Also einfach in Datenpunkt via JS einfach einen leeren String - alle Minuten oder so schicken.

                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                          K 1 Antwort Letzte Antwort
                          1
                          • mickymM mickym

                            @klassisch Keine 2 Instanzen nötig - die müssen ja dann auch auf unterschiedlichen Ports laufen. Bei mir ist sämtlich mqtt Kommunikation auf einem Broker in einem Adapter zusammen.

                            mqtt kennt nur Strings - und zwar JSON-Strings - weil Du so alle Informationen ohne Berücksichtigung des Datentyps ansprechen kannst.

                            Wenn Du Javascript programmierst - liest Du den Datenpunkt ein und machst mit parse ein JS ein Objekt daraus:

                            str='{"value": 233.8300018310547}';
                            obj = JSON.parse(str);
                            wert = obj.value;
                            

                            Stand doch in der Beschreibung mit dem Keep Alive - die ich Dir verlinkt habe. Du musst die Seriennummer zyklisch auslesen. Also einfach in Datenpunkt via JS einfach einen leeren String - alle Minuten oder so schicken.

                            K Offline
                            K Offline
                            klassisch
                            Most Active
                            schrieb am zuletzt editiert von
                            #13

                            @mickym Super, vielen Dank! Dann werde ich den zweiten MQTT Adapter auch ausmustern und auf den ersten gehen.

                            Vielen Dank auch für das JScript Beispiel!
                            Wenn ich dann Werte an den Victron reinschreiben möchte, dann müssen die natürlich auch so zu einem String zusammengesetzt werden, nehm ich an, was aber durch einfaches Addieren" einfacher sein dürfte.

                            mickymM 1 Antwort Letzte Antwort
                            0
                            • K klassisch

                              @mickym Super, vielen Dank! Dann werde ich den zweiten MQTT Adapter auch ausmustern und auf den ersten gehen.

                              Vielen Dank auch für das JScript Beispiel!
                              Wenn ich dann Werte an den Victron reinschreiben möchte, dann müssen die natürlich auch so zu einem String zusammengesetzt werden, nehm ich an, was aber durch einfaches Addieren" einfacher sein dürfte.

                              mickymM Online
                              mickymM Online
                              mickym
                              Most Active
                              schrieb am zuletzt editiert von mickym
                              #14

                              @klassisch Nein wenn Du ein JS Objekt wieder in einen JSON zu verschicken via MQTT publishen willst, dann must Du das JS Objekt wieder stringifizieren:

                              https://www.w3schools.com/js/js_json_stringify.asp

                              Also das Gegenteil von parse.
                              Wenn Du also dieses Beipsiel aus dem Artikel nimmst:

                              dfdba5bd-12fd-46e1-bd7f-2dc49fd32caf-image.png

                              Dann sieht das im JS so aus:

                              objAcPowerSetpoint = { "value" : -200};
                              // object wieder in JSON String
                              
                              strMqtt = JSON.stringify(objAcPowerSetpoint);
                              setState ('mqtt.0.W.e0ff50a097c0.vebus.257.Hub4.L1.AcPowerSetpoint', strMqtt, false);
                              
                              

                              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                              K 1 Antwort Letzte Antwort
                              1
                              • mickymM mickym

                                @klassisch Nein wenn Du ein JS Objekt wieder in einen JSON zu verschicken via MQTT publishen willst, dann must Du das JS Objekt wieder stringifizieren:

                                https://www.w3schools.com/js/js_json_stringify.asp

                                Also das Gegenteil von parse.
                                Wenn Du also dieses Beipsiel aus dem Artikel nimmst:

                                dfdba5bd-12fd-46e1-bd7f-2dc49fd32caf-image.png

                                Dann sieht das im JS so aus:

                                objAcPowerSetpoint = { "value" : -200};
                                // object wieder in JSON String
                                
                                strMqtt = JSON.stringify(objAcPowerSetpoint);
                                setState ('mqtt.0.W.e0ff50a097c0.vebus.257.Hub4.L1.AcPowerSetpoint', strMqtt, false);
                                
                                
                                K Offline
                                K Offline
                                klassisch
                                Most Active
                                schrieb am zuletzt editiert von
                                #15

                                @mickym Und auch dafür herzlichen Dank!
                                Also zum hin und Rückwärtswandlung von json Objekten gibt es extra Funktionen und korrespondierende Objekte in JScript.
                                Dann sollte die Umwandlung mit diesen eingebauten Funktionen auch recht flott und ressourcenschonend gehen.

                                mickymM 1 Antwort Letzte Antwort
                                0
                                • K klassisch

                                  @mickym Und auch dafür herzlichen Dank!
                                  Also zum hin und Rückwärtswandlung von json Objekten gibt es extra Funktionen und korrespondierende Objekte in JScript.
                                  Dann sollte die Umwandlung mit diesen eingebauten Funktionen auch recht flott und ressourcenschonend gehen.

                                  mickymM Online
                                  mickymM Online
                                  mickym
                                  Most Active
                                  schrieb am zuletzt editiert von mickym
                                  #16

                                  @klassisch sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                                  @mickym Und auch dafür herzlichen Dank!
                                  Also zum hin und Rückwärtswandlung von json Objekten gibt es extra Funktionen und korrespondierende Objekte in JScript.
                                  Dann sollte die Umwandlung mit diesen eingebauten Funktionen auch recht flott und ressourcenschonend gehen.

                                  Genau - JSON ist einfach die Möglichkeit Javascript Objekte als Strings über verschiedene Protokolle zu transportieren (mqtt, HTTP, usw.) Versuch mal über eine Browser URL ein Boolvariable zu versenden DU wirst verzweifeln, weil HTTP in den URLs alles als Strings interpretiert.

                                  Deswegen stand auch - was ist JSON:

                                  What is JSON?

                                  • JSON stands for JavaScript Object Notation

                                  • JSON is a lightweight data interchange format

                                  • JSON is language independent *

                                  • JSON is "self-describing" and easy to understand

                                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                  K 1 Antwort Letzte Antwort
                                  1
                                  • mickymM mickym

                                    @klassisch sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                                    @mickym Und auch dafür herzlichen Dank!
                                    Also zum hin und Rückwärtswandlung von json Objekten gibt es extra Funktionen und korrespondierende Objekte in JScript.
                                    Dann sollte die Umwandlung mit diesen eingebauten Funktionen auch recht flott und ressourcenschonend gehen.

                                    Genau - JSON ist einfach die Möglichkeit Javascript Objekte als Strings über verschiedene Protokolle zu transportieren (mqtt, HTTP, usw.) Versuch mal über eine Browser URL ein Boolvariable zu versenden DU wirst verzweifeln, weil HTTP in den URLs alles als Strings interpretiert.

                                    Deswegen stand auch - was ist JSON:

                                    What is JSON?

                                    • JSON stands for JavaScript Object Notation

                                    • JSON is a lightweight data interchange format

                                    • JSON is language independent *

                                    • JSON is "self-describing" and easy to understand

                                    K Offline
                                    K Offline
                                    klassisch
                                    Most Active
                                    schrieb am zuletzt editiert von klassisch
                                    #17

                                    @mickym Ja, der history Adapter arbeitet ja mit JSON und die simpleApi gibt JSON als Antwort zurück.

                                    Aber jetzt habe ich doch nochmals eine Frage zu den 2 MQTT Adaptern.
                                    Mein erster ist als Server/Broker konfiguriert und hört auf alles. Bei dem liefern z.B. die ESPEasy ein.
                                    Mein Zweiter, den ich ja jetzt in den ersten integrieren will, hat aber die IP des Venus Raspi eingetragen. Das bekomme ich jetzt nicht unter einen Hut. Ich habe auch keinen Knopf gefunden, um den parallel als Client laufen zu lassen bzw. einen weiteren Eingabetab zu eröffnen.

                                    mickymM 2 Antworten Letzte Antwort
                                    0
                                    • K klassisch

                                      @mickym Ja, der history Adapter arbeitet ja mit JSON und die simpleApi gibt JSON als Antwort zurück.

                                      Aber jetzt habe ich doch nochmals eine Frage zu den 2 MQTT Adaptern.
                                      Mein erster ist als Server/Broker konfiguriert und hört auf alles. Bei dem liefern z.B. die ESPEasy ein.
                                      Mein Zweiter, den ich ja jetzt in den ersten integrieren will, hat aber die IP des Venus Raspi eingetragen. Das bekomme ich jetzt nicht unter einen Hut. Ich habe auch keinen Knopf gefunden, um den parallel als Client laufen zu lassen bzw. einen weiteren Eingabetab zu eröffnen.

                                      mickymM Online
                                      mickymM Online
                                      mickym
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #18

                                      @klassisch Nochmal Du brauchst keinen Client. Wenn Dein mqtt Adapter als Broker arbeitet, dann verbinden sich alle Clients mit ihm. Wenn Du dann direkt in den DP schreibst, dann published der Broker das automatisch.

                                      Da ich das in dem anderen Zusammenhang als Video demonstriert habe (stell Dir den mqtt Explorer einfach als ESPEasy, Venus Raspi vor. Du gibst überall die gleiche IP und den port ein. Die tun sich doch alle nicht weh, weil sie auf unterschiedliche topics publishen und subscriben. Ich habe meine Shellies, Tasmota und Owntracks alles unter einem Broker laufen:

                                      f8c6ba62-ecd0-436f-9a7f-42f066b508bf-image.png

                                      mqtt.1 hat nur historische Gründe - weil der Broker manchmal Fehler macht - aber solange er das nicht tut ist alles gut.

                                      Hier werden die Punkte in der Instanz erzeugt, wenn ein anderes Gerät in Deinen Broker published so wie es Dein Venus gemacht hat:

                                      extern mqtt publish.mp4

                                      und hier wenn Du in einen Datenpunkt schreibst und dieser published:

                                      publish mqtt topic.mp4

                                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                      1 Antwort Letzte Antwort
                                      1
                                      • K klassisch

                                        @mickym Ja, der history Adapter arbeitet ja mit JSON und die simpleApi gibt JSON als Antwort zurück.

                                        Aber jetzt habe ich doch nochmals eine Frage zu den 2 MQTT Adaptern.
                                        Mein erster ist als Server/Broker konfiguriert und hört auf alles. Bei dem liefern z.B. die ESPEasy ein.
                                        Mein Zweiter, den ich ja jetzt in den ersten integrieren will, hat aber die IP des Venus Raspi eingetragen. Das bekomme ich jetzt nicht unter einen Hut. Ich habe auch keinen Knopf gefunden, um den parallel als Client laufen zu lassen bzw. einen weiteren Eingabetab zu eröffnen.

                                        mickymM Online
                                        mickymM Online
                                        mickym
                                        Most Active
                                        schrieb am zuletzt editiert von mickym
                                        #19

                                        @klassisch sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                                        Mein Zweiter, den ich ja jetzt in den ersten integrieren will, hat aber die IP des Venus Raspi eingetragen.

                                        Ok wenn das so ist, wäre dann würde der Venus Raspi als mqtt Broker agieren und dann brauchst Du tatsächlich 2 Instanzen. Sprich Du kannst den Venus Raspi nicht so konfigurieren, dass er einen vorhandenen Broker bereits benutzt?

                                        Wenn nicht, dann ist das mit den 2 Instanzen in Ordnung (einen als Client zum Venus Raspi mqtt-Broker, einen als Broker für die Geräte, für die Du im iobroker zur Verfügung stellen willst).

                                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                        K 1 Antwort Letzte Antwort
                                        1
                                        • mickymM mickym

                                          @klassisch sagte in Frage zu MQTT, SonOff-Adapter und mqqt über Shell:

                                          Mein Zweiter, den ich ja jetzt in den ersten integrieren will, hat aber die IP des Venus Raspi eingetragen.

                                          Ok wenn das so ist, wäre dann würde der Venus Raspi als mqtt Broker agieren und dann brauchst Du tatsächlich 2 Instanzen. Sprich Du kannst den Venus Raspi nicht so konfigurieren, dass er einen vorhandenen Broker bereits benutzt?

                                          Wenn nicht, dann ist das mit den 2 Instanzen in Ordnung (einen als Client zum Venus Raspi mqtt-Broker, einen als Broker für die Geräte, für die Du im iobroker zur Verfügung stellen willst).

                                          K Offline
                                          K Offline
                                          klassisch
                                          Most Active
                                          schrieb am zuletzt editiert von
                                          #20

                                          @mickym Vielen Dank, hatte nicht wirklich verstanden, wie zwei Broker zueinander finden sollten, die nichts voneinander wissen.
                                          Venus kann oder will wohl nur Broker
                                          e409cc0a-8f45-4676-a750-75d311cf61ce-grafik.png
                                          Mehr kann ich auf der Oberfläche nicht einstellen, man kann nicht tiefer absteigen.
                                          Und ich möchte dort auch nichts durcheinanderbringen.
                                          Also ist das wohl ein Broker und ich spreche ihn mich einem Client an.

                                          mickymM 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

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

                                          913

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe