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 last edited by

      Hallo zusammen,

      ich bin in Sache ioBroker Neueinsteiger und lese mich seid ein paar Wochen ein und teste.

      Folgende Konfiguration:

      • Raspberry4 mit MQTT (mosquitto) und ioBroker
      • Arduino Sketch für meine Projekte selber (hier WeMos D1 mini)
        Teststellung (hier als Gerät bezeichnet): über einen Taster wird eine LED ein/ausgeschaltet (je Tastendruck ein oder aus, also ganz einfach am Anfang, um sich in ioBroker (u.a. vis) einzulernen)

      Nun 1 Problem und zusätzlich eine Frage:

      Zum Problem:
      Nun habe ich das Problem, dass das Gerät nach einem Neustart nicht über die vis gesteuert werden kann. Erst wenn ich 1 x die Taste am Gerät drücke, kann ich diesen dann bis zum nächsten Neustart über vis schalten. Auch ein Neustart von ioBroker.Admin und ioBroker.MQTT baut keine Verbindung auf, erst der Tastendruck.

      Muss hier in vis oder wo anders etwas eingestellt werden, dass sich vis mit gleich mit dem Gerät verbindet?

      Zusätzliche Frage:
      mqtt_frage.jpg

      Warum hat der Taster einen eigenen Ordner mit set im Gegensatz zum PIR? (Der PIR ist aber bei meiner Fragestellung zum o. g. Problem momentan unrelevant).

      Wäre super, wenn ich ein paar Tipps bekommen würde.

      PS:
      Da ich hier neu bin, weiß ich nicht, welche Infos aus ioBroker ich euch senden soll, damit Ihr mehr Infos bekommt, deshalb: Wenn etwas benötigt wird, reiche ich das nach.

      Gruß
      Falke07

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

        Hallo Falke07

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

        ...
        Warum hat der Taster einen eigenen Ordner mit set im Gegensatz zum PIR?...

        Der sogenannte "Ordner" Taster ist der Status der von deinem WeMos gesendet wird.
        Unter "set" kannst du den "Taster" steuern.
        Einfach mal rechts auf den Wert "LED an" klicken, und dann, wegen mir, "LED aus" eintragen, und Wert setzen.
        Kommt drauf an was du für Befehle in deinem sketch verwendest.
        Dann müsste theoretisch deine LED aus gehen.

        ..., welche Infos aus ioBroker ich euch senden soll, ...

        Einstellung der Instanz mqtt.0 (screenshots)

        Gruß, Karsten

        F 1 Reply Last reply Reply Quote 0
        • 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

                                  432
                                  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