Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Client nach Neustart nicht über vis -> MQTT steuerbar

    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

    Client nach Neustart nicht über vis -> MQTT steuerbar

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Falke07 @hydrotec last edited by

      @hydrotec

      hallo,

      wenn ich aber den Schalter in vis uns auf dem Board betätige, ändert er nicht den Wert von Demo01/Taster/set, sondern den Wert von Demo01/Taster.

      Wenn ich den Wert der variable Demo01/Taster und Demo01/Taster/set ändere reagiert die vis, aber nicht die LED

      Anbei die Einstellungen vom MQTT: (Punkt 1 und 2 habe ich schon komplett kombiniert ausprobiert, gab keine Änderung bei der Problematik.

      mqtt_verb.jpg mqtt_eins.jpg

      Gruß
      Falke07

      hydrotec 1 Reply Last reply Reply Quote 0
      • hydrotec
        hydrotec @Falke07 last edited by

        @falke07

        Trag mal bei "Subscribe Pattern" folgendes ein.

        Demo01/#
        

        und noch einen eindeutigen Namen bei "Client ID" (z.B. iobroker00).

        @falke07 sagte in Client nach Neustart nicht über vis -> MQTT steuerbar:

        wenn ich aber den Schalter in vis uns auf dem Board betätige, ändert er nicht den Wert von Demo01/Taster/set, sondern den Wert von Demo01/Taster.

        Das ist auch richtig.
        "Wert von Demo01/Taster" -> Status des Tasters/LED
        "Wert von Demo01/Taster/set" -> Steuerbefehl um deine LED ein/auszuschalten

        Welchen Steuerbefehl deine LED erwartet, das hast du bei deinem Sketch vom WeMos festgelegt.

        F 1 Reply Last reply Reply Quote 0
        • F
          Falke07 @hydrotec last edited by

          @hydrotec
          Ok,

          • Demo01/# habe ich drin. (Für was steht # (Bedeutet dies: alles was danach kommt?))
          • Client-Id habe ich auch entsprechend dem Sketch drin. Nun zeigt er in der MQTT Instanz auch an, das er mit dem Gerät verbunden ist.

          Der Sketch ist wohl momentan ausgelegt, über den Status zu steuern und nicht über den Steuerbefehl.
          Das funktioniert soweit auch mal; ändere ich nach, wenn das Hauptproblem gelöst ist.
          Der WeMos kann bei einem Neustart immer noch nicht sofort über vis gesteuert werden; erst, wenn ich 1 x die Taste drücke.
          Aber, was ich vergessen habe zu erwähnen:
          Nach einem Neustart von WeMos regiert sofort der Status in Objekten von Demo01/Taster, jedoch sendet er keinen Befehl an MQTT bzw. MQTT nicht an den WeMos, was zur folge hat, das der WeMos auch nicht reagiert.

          hydrotec 1 Reply Last reply Reply Quote 0
          • hydrotec
            hydrotec @Falke07 last edited by

            @falke07 sagte in Client nach Neustart nicht über vis -> MQTT steuerbar:

            • Demo01/# habe ich drin. (Für was steht # (Bedeutet dies: alles was danach kommt?))

            Sieh mal hier nach 😉

            • Client-Id habe ich auch entsprechend dem Sketch drin. Nun zeigt er in der MQTT Instanz auch an, das er mit dem Gerät verbunden ist.

            Client-ID darf nur einmal in deiner mqtt-Umgebung vorkommen.
            Sprich, die Client-ID aus deinem Sketch darf nicht mit der Client-ID vom ioBroker übereinstimmen.

            Der Sketch ist wohl momentan ausgelegt, über den Status zu steuern und nicht über den Steuerbefehl.
            Das funktioniert soweit auch mal; ändere ich nach, wenn das Hauptproblem gelöst ist.

            Das kannst nur du wissen, was in deinem Sketch festgelegt ist. 😉

            Der WeMos kann bei einem Neustart immer noch nicht sofort über vis gesteuert werden; erst, wenn ich 1 x die Taste drücke.
            Aber, was ich vergessen habe zu erwähnen:
            Nach einem Neustart von WeMos regiert sofort der Status in Objekten von Demo01/Taster, jedoch sendet er keinen Befehl an MQTT bzw. MQTT nicht an den WeMos, was zur folge hat, das der WeMos auch nicht reagiert.

            Verstehe ich jetzt nicht wirklich.
            Was für einen Befehl soll denn der WeMos bei Neustart senden?
            Wenn der WeMos-Client, und der ioBroker-Client, bei mosquitto angemeldet sind, dann hört der Wemos-Client darauf, das er Befehle über den Topic vom ioBroker-Client bekommt.
            Der ioBroker-Client hört auf Meldungen die über den Topic vom WeMos-Client kommen.
            Welche Meldungen, und in welchem Interval, der WeMos-Client sendet, das legst du in dem Sketch des WeMos fest.

            F 1 Reply Last reply Reply Quote 0
            • F
              Falke07 @hydrotec last edited by

              @hydrotec

              Also es ist wie folgt:
              Ich habe in der vis einen Schalter mit LED an / aus. Dieser sendet den Steuerbefehl mit dem Inhalt entweder "LED aus" oder "LED an".
              Wenn ich nun den WeMos neu starte und den Schalter in der vis auf "LED an" stelle, passiert folgendes:

              • In Objekte MQTT.... (Punkt1) wird der Wert geändert und auf "LED an" gestellt, was auch bedeutet, das die vis dem MQTT mitteilt, das sich der Wert (Wert = "LED an") geändert hat. Soweit funktioniert es mal. Diese Änderung kommt aber beim WeMos nicht an. Am WeMos selber bleibt die LED aus. Hier findet keine Reaktion statt.
                mqtt_01.jpg

              Wenn ich den WeMos neu starte und 1 x den manuellen Taster auf dem Board vom WeMos zum einschalten der LED drücke, kann ich anschliessend über die vis die LED voll steuern und es funktioniert alles.

              Mittlerweile habe ich zur Kontrolle noch einen Ping auf den WeMos eingefügt, welcher sauber läuft und mir auch anzeigt, wann der WeMos nach einem Neustart im ioBroker erreichbar ist.

              Ich habe in meinem Sketch viele serielle Print (echo) drin, um zu sehen, was der WeMos macht. Hier kann ich erkennen, das nach dem Neustart vom ioBroker keine Nachricht an den WeMos gesendet wird. Erst nach einmaligen manuellen Tastendruck. Dann kommt der callback vom ioBroker.

              Meiner Meinung nach sieht es so aus, das der ioBroker den WeMos erst erreichen kann(callback), wenn ich die Taste am WeMos 1 x gedrückt habe, er aber sofort Daten vom WeMos beziehen kann.

              hydrotec 1 Reply Last reply Reply Quote 0
              • hydrotec
                hydrotec @Falke07 last edited by

                @falke07

                Nur für mich zum Verständnis.
                Prinzipiell funktioniert der Datenaustausch (inkl. LED schalten).
                Nur wenn der WeMos neu gestartet wird, findet keine Kommunikation mehr statt.
                Wenn der Hardware-Taster am WeMos betätigt wird, findet wieder eine Kommunikation statt.

                Hast du zur Fehlereingrenzung schon einmal mit einem Tool (mqtt.fx, mqtt-explorer, usw.) gearbeitet?
                Ich vermute das auf der ioBroker Seite alles korrekt funktioniert.
                Um das auszuschließen, wäre es mit solch einem Tool möglich den Datentransfer innerhalb des Mosquitto zu beobachten.

                Kann es sein, das der WeMos, bzw. der mqtt-client, bei einem Neustart in einen Deepsleep geht, und erst durch den Taster geweckt wird?

                F 1 Reply Last reply Reply Quote 0
                • F
                  Falke07 @hydrotec last edited by

                  @hydrotec
                  Hallo,
                  habe nun den MQTT Explorer installiert und dort ist erkennbar, das nach einem Neustart der an/aus- Befehl von/über die vis auch vom ioBroker an den MQTT- Server übertragen wird.
                  Ich denke, das es tatsächlich so ist, das der WeMos nach einem Neustart in deepSleep geht und erst einmalig geweckt werden muss. Auch eine Brücke von RST zu D0 bringt keine Verbesserung. Habe mal recherchiert und es schein auch so, das der ESP8266 nur einen Hardware- WakeUp zulässt; im Gegensatz zum ESP32. Dort gibt es wohl eine Möglichkeit zum Software- WakeUp. Da ich aber einen PIR zur dauerhaften Überwachung einsetzten will, kann ich beim WeMos- Model (Sketch) nicht mit deepSleep arbeiten. Habe ich wohl auf den falschen Chip (ESP-8266) gesetzt; sollte einen ESP-32 verwenden.

                  Somit wäre glaube ich das Thema Neustart und Verfügbarkeit erledigt.
                  Ich danke Dir vielmals für deine Mühe, habe als Neueinsteiger doch einiges dadurch dazugelernt.

                  Ich hätte aber noch eine andere Frage, welche aus diesem Thema entstanden ist. Vielleicht kannst Du mir das kurz erklären:
                  Im ioBroker/Objekte wird ja nun einmal der Status der LED (Demo01/Taster) angezeigt und der Steuerbefehl (Demo01/Taster/set). Wenn ich den Steuerbefehl sende (an oder aus), ändert er die Anzeige vom Steuerbefehl in Pbjekte, aber nicht der Status in Objekte. Muss ich diesen zusätzlich abfrage oder muss das mit dem Publish zusätzlich mit gesendet werden?

                  Gruß
                  Falke07

                  hydrotec 1 Reply Last reply Reply Quote 0
                  • hydrotec
                    hydrotec @Falke07 last edited by

                    @falke07 sagte in Client nach Neustart nicht über vis -> MQTT steuerbar:

                    ...
                    Ich denke, das es tatsächlich so ist, das der WeMos nach einem Neustart in deepSleep geht und erst einmalig geweckt werden muss.
                    ...

                    Bin der gleichen Meinung.
                    Wenn der MQTTexplorer bei mosquitto angemeldet ist, kannst du ja den Datenverkehr beobachten.

                    ...
                    Somit wäre glaube ich das Thema Neustart und Verfügbarkeit erledigt.
                    ...

                    👍

                    Ich danke Dir vielmals für deine Mühe, habe als Neueinsteiger doch einiges dadurch dazugelernt.

                    Gerne doch 🙂

                    Ich hätte aber noch eine andere Frage, welche aus diesem Thema entstanden ist. Vielleicht kannst Du mir das kurz erklären:
                    Im ioBroker/Objekte wird ja nun einmal der Status der LED (Demo01/Taster) angezeigt und der Steuerbefehl (Demo01/Taster/set). Wenn ich den Steuerbefehl sende (an oder aus), ändert er die Anzeige vom Steuerbefehl in Pbjekte, aber nicht der Status in Objekte. Muss ich diesen zusätzlich abfrage oder muss das mit dem Publish zusätzlich mit gesendet werden?

                    Ich versuche es einmal einfach zu umschreiben.
                    MQTT ist ja ein Netzwerkprotokoll, nicht mehr und auch nicht weniger.
                    Damit du Daten über dieses Protokoll übermitteln kannst, benötigst du einen Broker (in deinem Fall mosquitto) und mindestens einen Client (in deinem Fall WeMos/ioBroker/MQTTexplorer).
                    Der Broker sammelt erst einmal alle Topics und deren Inhalt welche von den Clients gesendet werden.
                    Der Client (ioBroker) meldet sich bei dem Broker (mosquitto) an, und wartet das er auf dem Topic (Demo01/Taster) etwas empfängt (Topic abonnieren).
                    Mit dem Topic (Demo01/Taster/set) sendet ioBroker einen Inhalt ("Wert von Demo01/Taster/set"), und der Broker registriert das, mehr nicht.
                    Wenn jetzt ein weiterer Client (WeMos) bei dem Broker angemeldet ist, und den Topic (Demo01/Taster/set) abonniert hat,
                    dann empfängt er diesen Inhalt.
                    Je nachdem was in dem Inhalt steckt, reagiert der Client (WeMos) darauf (in deinem Fall LED an/aus), und führt die Anweisung aus.
                    Nachdem diese Anweisung ausgeführt ist, sofern im Sketch programmiert, sendet der Client (WeMos) in dem Topic (Demo01/Taster) ein Ergebnis, bzw. einen Status an den Broker.
                    Da der Client (ioBroker) ja den Topic (Demo01/Taster) abonniert hat, empfängt er dessen Inhalt.
                    Dieser Inhalt wird bei dem Objekt "Demo01/Taster" als Wert hinterlegt.

                    Ich hoffe es war einigermaßen verständlich.
                    Sonst einfach noch einmal nachhaken.

                    Ansonsten noch einen guten Rutsch 🙂
                    Gruß, Karsten

                    F 2 Replies Last reply Reply Quote 0
                    • F
                      Falke07 @hydrotec last edited by

                      @hydrotec
                      Hallo,
                      yep, das war verständlich. Ich danke Dir.
                      Nachgefragt habe ich deshalb, da sich der set im ioBroker entsprechend ändert, der Status aber immer unverändert bleibt.
                      Denke aber mal, dass dies aber an dem Sketch liegt (pub / sub), welcher noch nicht sauber programmiert sein dürfte.

                      Wünsch Dir ebenfalls einen guten Rutsch ins neue Jahr.

                      Gruß
                      Falke07

                      1 Reply Last reply Reply Quote 0
                      • F
                        Falke07 @hydrotec last edited by

                        @hydrotec

                        Hallo,
                        hoffe, Du bist gut ins neue Jahr gestartet.

                        ich war nochmal an der Thematik dran und habe ein paar Infos.

                        Der WeMos geht nach einem Neustart nicht in deepSleep.

                        Die Ursache für das "nichtfunktionieren" lag 1. an de Sketch. Da bin ich mit publish / subscripe durcheinander gekommen.

                        Das 2 war, das der MQTT Server bei einem Neustart , wenn die LED vorher in vis auf "LED an" geschaltet war, keine Daten setzt (Steuerbefehl nein, Status ja). Dies wurde erst möglich, als ich im ioBroker / Instanzen / MQTT Server => "sende auch Zustände" aktiviert habe. Dann wird bei einem Neustart auch der Steuerbefehl an den MQTT- Server gesendet und alles funktioniert.

                        Gruß
                        Falke07

                        hydrotec 1 Reply Last reply Reply Quote 0
                        • hydrotec
                          hydrotec @Falke07 last edited by

                          @falke07

                          Hallo Falke07,

                          Dankeschön, der Start war OK (bischen College-Football geschaut 😉 )
                          Dir auch noch ein angenehmes neues Jahr.

                          Zu 1
                          Das kann im Eifer des Gefechtes schon mal vorkommen.

                          Zu 2
                          Da hast du mich abgehängt.
                          Wenn der MQTT Server (mosquitto) neu gestartet wird, sollte eigentlich auch kein Steuerbefehl abgesetzt werden.
                          Sondern der Status der LED von Client_1 (WeMos) zu Client_2 (ioBroker) übermittelt werden.
                          So wie ich das verstehe, wird bei dir aktuell die LED, bei einem Neustart des Client_2, auf dessen Steuerbefehl gesetzt.
                          Egal wie zwischenzeitlich der Status, z.B. durch schalten über den Taster am WeMos, der LED war. 🤔
                          Normalerweise wird ja der Status der LED bei einem Start/Neustart des Client_1 (in deinem Fall über den Sketch) festgelegt.
                          Client_2 empfängt diesen Status, über den MQTT Server, von Client_1, und schreibt ihn in das entsprechende Objekt.
                          (in VIS wird dieser Status dementsprechend angezeigt)
                          Darauf kann man dann mit einer Logik (blockly, js, usw.) reagieren, oder über den Steuerbefehl den Status der LED ändern.
                          (in VIS, mit klick auf den Button, den Steuerbefehl setzen)

                          Vielleicht wäre es hilfreich, wenn du mal kurz dein Ziel umschreiben würdest.

                          Gruß, Karsten

                          F 1 Reply Last reply Reply Quote 0
                          • F
                            Falke07 @hydrotec last edited by

                            @hydrotec
                            Moin,

                            @hydrotec sagte in Client nach Neustart nicht über vis -> MQTT steuerbar:

                            Wenn der MQTT Server (mosquitto) neu gestartet wird, sollte eigentlich auch kein Steuerbefehl abgesetzt werden.
                            Sondern der Status der LED von Client_1 (WeMos) zu Client_2 (ioBroker) übermittelt werden.

                            Info: Ich starte nicht den MQTT Server neu, sondern den WeMos. Der MQTT Server sowie der ioBroker sind dauerhaft im Betrieb.

                            Bei einem Neustart (WeMos) bekommt der MQTT Server zwar den Status, setzt aber den Inhalt (im MQTT Server als value bezeichnet) nicht. Erst wenn ich 1 x irgendeinen "Schalter" (Hard-Taster oder vis-Taster) betätige, bekommt er den Steuerbefehl (jetzt vom ioBroker / MQTT-Instanz durch das setzen von "senden der Zustände"). Dann funktioniert auch alles sofort, wie es soll (zumindest mal bei der einfachen LED- Schaltung 😊 ). Anmerkung: Es geht nur um den allerersten Kontakt vom WeMos nach dem Neustart. Nach dem ersten Kontakt hat vorher (nachdem ich den ioBroker und Sketch sauber eingestellt/Programmiert hatte) alles funktioniert.

                            Kurz zum Ziel:
                            Ich möchte eine Hausüberwachung (Richtung Alarmanlage) erstellen, welche meine Anforderungen erfüllt. Bisher habe ich immer Alarmanlagen gekauft, bin aber mit den Möglichkeiten (Einstellungen/Informationsfluss) nicht einverstanden. Es ist mir bei den gekauften Modellen immer zu "steif".

                            Einstellungen/Informationsfluss:

                            • Batteriestatus, bei PIR Meldung/Info mit Bildern (evtl. mit ESP32- CAM ..), einrichten mehrerer Sicherungsobjekte, Temperatur-, Helligkeits-, Gas-, Wasser-, Rauch- Meldungen, Überwachung Status der einzelnen Geräte auf Off/Online), usw.
                              Und das alles über eine Oberfläche und nicht über verschiedene Apps für die jeweilige Anwendung.

                            Also noch ein richtiges Stück Arbeit.

                            Gruß
                            Falke07

                            hydrotec 1 Reply Last reply Reply Quote 0
                            • hydrotec
                              hydrotec @Falke07 last edited by

                              @falke07

                              OK, wenn es, bis jetzt, so für dich funktioniert, dann passt es ja. 👍

                              Also noch ein richtiges Stück Arbeit.

                              Da hast du wirklich noch ein Stück Arbeit vor dir.

                              Sollten noch weitere Fragen auftauchen, kannst dich ja gerne noch einmal melden.

                              Ansonsten viel Erfolg bei deinem Projekt.
                              Gruß, Karsten

                              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

                              690
                              Online

                              31.9k
                              Users

                              80.2k
                              Topics

                              1.3m
                              Posts

                              2
                              15
                              326
                              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