LoxBerry MQTT

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Christian Fenzl
    Lebende Foren Legende
    • 31.08.2015
    • 11217

    #31
    MQTT Gateway V0.1.4
    - Daemon probiert länger, den Mosquitto zu starten
    - JSON wird bei HTTP-Übertragung expandiert (siehe Wiki)
    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

    Kommentar

    • JokerAR
      Smart Home'r
      • 22.11.2015
      • 46

      #32
      Nochmal vielen Dank für die Arbeit und die Unterstützung

      Frage
      Wenn ich den Status der Shellys via HTTP-REST Webservice an den Miniserver übermitteln will, was muss ich dann bei:

      - der URL beim virtuellen HTTP Eingang
      - Befehlserkennung von dem virtuellen HTTP Eingangsbefehl

      eintragen?

      Kommentar

      • Christian Fenzl
        Lebende Foren Legende
        • 31.08.2015
        • 11217

        #33
        Nix Virtueller HTTP Eingang.
        —> Virtueller Eingang.
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar

        • Imperator
          Extension Master
          • 10.09.2018
          • 101

          #34
          Zitat von Christian Fenzl
          Nix Virtueller HTTP Eingang.
          —> Virtueller Eingang.
          Ich denke ich hab es auch noch nicht vollständig verstanden. Insbesondere wie die Kommunikation zwischen MQTT Gateway und dem Miniserver funktioniert. Nehmen wir als Beispiel mein Philips Hue Dimmer Switch welcher z.B: folgende Messages liefert (aus Kommentar #18.4):

          23:13:27.177 INFO: zigbee2mqtt/0x0017880102d48aad: {"action":"up-press","brightness":255,"linkquality":39}
          23:13:30.136 INFO: zigbee2mqtt/0x0017880102d48aad: {"action":"down-press","brightness":205,"linkquality":13}

          Wenn ich also den Befehl für die Helligkeit auslesen will, würde dies dank der JSON Expansion seit Version 0.1.4 heissen: zigbee2mqtt_0x0017880102d48aad_brightness und würde dann den jeweiligen Wert zurück bekommen. Wie lautet aber der komplette Syntax? {IP}_zigbee2mqtt_0x0017880102d48aad_brightness wird ja kaum richtig sein oder täusche ich mich da? Wie kann dies im Browser getestet werden um die Abfragen und Antworten zu überprüfen?

          Da es bei den "Actions" ja nicht um Zahlen-Werte handelt, müsste ich da also tatsächlich Virtuelle HTTP Eingänge verwenden oder liege ich hier falsch?

          Kommentar

          • Christian Fenzl
            Lebende Foren Legende
            • 31.08.2015
            • 11217

            #35
            UDP ist, denke ich, klar, richtig?

            Bei HTTP wird ein Loxone-Objekt genau mit diesem Namen DIREKT angesprochen.

            Also: Virtueller Eingang (oder virtueller Texteingang) erstellen, der heißt:
            zigbee2mqtt_0x0017880102d48aad_brightness

            Das Gateway schreibt den Wert in genau diesen virtuellen Eingang.

            Bei Text („down-press“) ist das in der Tat ein Problem. Ich hab keine Info, was „down-press“ bedeutet soll. Ich kann „down-press“ nur in einen virtuellen Texteingang schreiben.

            Ich hab mich mit virtuellen Texteingängen und deren Weiterverarbeitung in Loxone auch noch nie beschäftigt. Vielleicht haben die Experten eine Idee.

            Was ich mir noch vorstellen KÖNNTE: Wie bei der Boolean-Conversion (die ich der LoxBerry-SDK machen lasse), könnte ich noch eine eigene Conversion einbauen:
            Also eine Tabelle „Text“ = „Wert“
            Ihr müsstet dort eingeben:
            down-press = 10
            up-press = 11
            Dann könnte ich euch die Zahlen an virtuelle Eingänge übergeben, die man dann zb per Statusbaustein auswerten könnte.

            Es gibt (bewusst!) KEIN Interface für Virtuelle HTTP Eingänge! Das baue ich auch SICHER nicht ein.
            Das würde das ganze ad absurdum führen, wenn ich erst wieder vom Miniserver pullen müsste, wenn ich die Daten doch im Bereich von ein paar Millisekunden pushe.

            EDIT: Es kommt noch eine Liste, was das Plugin an den Miniserver weitergeschickt hat, um übersichtlich per Copy/Paste virtuelle Eingänge bzw. UDP-Befehlserkennungen erstellen zu können. Dafür fehlt nur noch das UI, alles andere ist schon da.
            Zuletzt geändert von Christian Fenzl; 18.11.2018, 12:45.
            Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

            Kommentar


            • Christian Fenzl
              Christian Fenzl kommentierte
              Kommentar bearbeiten
              PS: Im Log stehen genau die Namen der virtuellen Eingänge, an die das Plugin sendet.
              PPS: ... und überhaupt alles, was das Plugin so tut
              Zuletzt geändert von Christian Fenzl; 18.11.2018, 12:41.

            • Imperator
              Imperator kommentierte
              Kommentar bearbeiten
              Zitat von Christian Fenzl
              UDP ist, denke ich, klar, richtig?
              Ich muss zugeben leider nein, da ich bisher ausschliesslich mit Virtuellen HTTP Eingängen gearbeitet habe. Aber da werde ich mich noch einlesen um diese Lücke zu schliessen.

              Zitat von Christian Fenzl
              Bei HTTP wird ein Loxone-Objekt genau mit diesem Namen DIREKT angesprochen.
              Da habe ich irgendwie zu weit gesucht. Mir hat irgendwie das Verständnis gefehlt wie der Gateway den Miniserver kennt, bis mir klar war, dass dies über die Systemeinstellungen von Loxberry läuft und bei einem HTTP VI wird immer eine IP oder Hostname benötigt. Um das Thema aber abzuschliessen: d.h. der Gateway generiert einen HTTP PUT Request zum MS mit dem entsprechenden Wert?

              Zitat von Christian Fenzl
              Bei Text („down-press“) ist das in der Tat ein Problem. Ich hab keine Info, was „down-press“ bedeutet soll. Ich kann „down-press“ nur in einen virtuellen Texteingang schreiben.
              "down-press" bedeutet in diesem Fall das Abdimmen der Leuchte. Aber natürlich könnte man diese Funktion nun im MS für beliebiges verwenden wie z.B. Musik leiser stellen oder was auch immer man da für Ideen und Phantasien hat

              Zitat von Christian Fenzl
              Was ich mir noch vorstellen KÖNNTE: Wie bei der Boolean-Conversion (die ich der LoxBerry-SDK machen lasse), könnte ich noch eine eigene Conversion einbauen:
              Also eine Tabelle „Text“ = „Wert“
              Ihr müsstet dort eingeben:
              down-press = 10
              up-press = 11
              Dann könnte ich euch die Zahlen an virtuelle Eingänge übergeben, die man dann zb per Statusbaustein auswerten könnte.
              Da müsste ich mal drüber schlagen, aber die Lösungsidee klingt auf jeden Fall spannend. Da gibt es noch etliche Cases welche öhnlich gelagert sind wie z.B. "single click", "double click", "hold" & "release" usw.

              Zitat von Christian Fenzl
              Es gibt (bewusst!) KEIN Interface für Virtuelle HTTP Eingänge! Das baue ich auch SICHER nicht ein.
              Das würde das ganze ad absurdum führen, wenn ich erst wieder vom Miniserver pullen müsste, wenn ich die Daten doch im Bereich von ein paar Millisekunden pushe.
              Da bin ich bei Dir und wäre auch nicht meine Erwartung gewesen. Wie gesagt Stand ich da etwas auf dem Schlauch weil ich bislang immer mit HTTP VI gearbeitet habe und eine IP/ ein Hostname immer notwendig war.
          • Christian Fenzl
            Lebende Foren Legende
            • 31.08.2015
            • 11217

            #36
            MQTT Gateway Version 0.1.5
            • DEVELOPER PREVIEW - Nur einsetzen mit MQTT und Linux-Kenntnissen - Fehler ausschließlich per Issue bei GitHub
            • UI: Größerer Umbau des UI (Settings, Subscriptions, Conversions, Incoming Overview, Logfiles) als Navbar
            • UI: Subscriptions jetzt als eigene Seite (leichter anzupassen, man muss nicht immer auf- und abscrollen für Apply)
            • UI: Conversions: Angabe von Strings, die zu Werten konvertiert werden sollen (Loxone kann mit Strings nichts anfangen) - siehe Wiki!
            • UI: Incoming Overview: Anzeige der an den Miniserver übermittelten Werte
            • UI: Logs: Inline-Anzeige der Logfile-Übersicht
            • Gateway: Benutzerdefinierte Conversion (eingehende Nachrichten können in Werte konvertiert werden)
            • Gateway: Logfile: Parsing der Conversion wird geloggt, inklusive "komischer" Werte und Duplikate
            • Gateway: Logfile wird beim Beenden des Gateways sauber abgeschlossen
            https://www.loxwiki.eu/display/LOXBERRY/MQTT+Gateway

            Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

            Kommentar


            • Imperator
              Imperator kommentierte
              Kommentar bearbeiten
              Klingt Spitze! Ich hoffe ich finde morgen gleich Zeit um mich damit zu beschäftigen. An dieser Stelle ein ganz herzliches Dankeschön für Deine klasse Arbeit und Unterstützung Gast Fenzl!
          • andylox
            Smart Home'r
            • 23.08.2018
            • 51

            #37
            Was gibts neues in der 0.20 Version? Ich habe grade versucht meinen Shelly mit Tasmota Software und MQTT Trigger als Schalter im MS zu verwenden. das Commando kommt auch an, aber egal wie ich es einstelle, der MS verarbeitet es nicht als Signal.

            Das schalten über MQTT klappt auch mit der Tasmota Software wunderbar, Hintergrund ist ja wie bereits im anderen Thema bespchen, ich möchte gern den Schalter einzeln über den MS auswerten und dann über mQQT die Lampe schalten, aber halt auch doppelklick, etc auswerten können. Danke schon mal für Klasse arbeit!
            Zuletzt geändert von andylox; 21.11.2018, 11:14.

            Kommentar


            • hagor
              hagor kommentierte
              Kommentar bearbeiten
              Wie Christian richtig sagt solltest du stat/esszimmer_button/POWER1 subscriben. Dazu noch eine Conversion von ON und OFF, auf 1 und 0. Dann lässt es sich schön auswerten. Hab das ganze auch im Wiki beschrieben.
          • Christian Fenzl
            Lebende Foren Legende
            • 31.08.2015
            • 11217

            #38
            Hi Andy,

            die Version History ist zum Aufklappen im Wiki unter der Beschreibungstabelle am Anfang. Ich hatte noch nicht Gelegenheit, hier was zu schreiben.
            Es ist der erste Pre-Release, das ist Grundlage dafür, dass jede Versionsnummer den gleichen Stand repräsentiert (bisher war alles vom GitHub-Master installiert), und als Vorbereitung fürs Auto-Update.
            Ich habe im UI noch einen Filter bei der Liste der gesendeten Werte implementiert (zum Suchen), die Stabilität beim Restart, und vorbereitend ein paar Sachen für Notify wenn es Probleme mit der Verbindung gibt.

            Ist das ein Typo in deinem cmnd-Publish (das sollte doch POWER nicht POWER1 heißen)?
            Du solltest nicht die Commands subscriben, sondern nur den Status. Du willst ja nicht wissen, was irgendwer dem Tasmota angeschafft, sondern wie Tasmota darauf reagiert hat.
            Entsprechend sollte dann auch die Befehlserkennung für den Status statt für den Command eingerichtet sein.

            Nicht vergessen, dass das MQTT-Gateway ausschließlich Änderungen an den Miniserver weiterleitet (zur Reduktion des Traffics und der Last durch die Befehlserkennung).

            lg, Christian

            Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

            Kommentar


            • hagor
              hagor kommentierte
              Kommentar bearbeiten
              POWER heißt es nur bei "single power devices" also Geräten mit nur einem Relay oder Schalter.
              Sobald mehrere Relais/Schalter im Spiel sind numeriert Tasmota standardmäßig durch.
              Kann mit SetOption26 auf bei diesen "single power devices" gesetzt werden.

            • andylox
              andylox kommentierte
              Kommentar bearbeiten
              Danke schon mal, nein ich will ja Schalter am Shelly in dem MS verarbeiten und dann von dort entsprechend das Relais schalten um dann eben solche Sachen wir doppelklick abzubilden.
              Ich habe es jetzt schon mal hinbekommen, dass ich ein hold auswerten kann und dann damit einen anderen Shelly schalte :-) Denke also liegt nicht am MQTT Broker.

            • Christian Fenzl
              Christian Fenzl kommentierte
              Kommentar bearbeiten
              Kommt ein Press durch, wenn du drauf bleibst?
              Ich hab die Vermittlung auf eine Zeit von 50ms pro Message gedrosselt, vielleicht kommt ein kurzer Klick/Doppelklick deswegen nie bei mir herein.
              Wenn du am Schalter drauf bleibst und es kommt durch, wäre das ein Indikator dafür, das diese Zeit zu hoch ist.
          • Christian Fenzl
            Lebende Foren Legende
            • 31.08.2015
            • 11217

            #39
            Ich hab auf einem NodeMCU und ein paar Kabeln gerade mit ESP_Easy probiert und ich glaube, da könnte es ein Problem geben.

            Zumindest bei ESP_Easy funktioniert der Switch ganz normal (0 und 1).

            Doppelklick und Langzeitklick sind im ESP_Easy eine eigene Funktion. Ich hab mit dem Doppelklick probiert.

            Dabei sendet Doppelklick als Event eine 3. Und jeder weitere Doppelklick sendet wieder eine 3.

            Das ist doppelt eine Challenge.
            Der Cache fängt den zweiten Doppelklick gleich mal ab (3=3, wird nicht gesendet).
            Und selbst ohne Cache wäre das egal, weil der Miniserver einen neuen, eingehenden Wert nicht als "Event" betrachtet - Kommt also 3, und der Wert war vorher 3, wie soll man das in der Loxone Config abfragen, wenn der Wert auf 3 bleibt? Das ist hier die gleiche Thematik wie es in einem anderen Thread mit der Analogposition bei der Jalousie gibt.

            Ideen dazu?




            Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

            Kommentar


            • Imperator
              Imperator kommentierte
              Kommentar bearbeiten
              Wertet der Switch den Doppelklick nicht selber aus?

            • Christian Fenzl
              Christian Fenzl kommentierte
              Kommentar bearbeiten
              Ja, ich bekomme die 3, aber ich bekomme gleichzeitig auch die Einzelklicks (0/1).
              Vielleicht hab ich auch noch was falsch eingestellt.

            • andylox
              andylox kommentierte
              Kommentar bearbeiten
              Also ich bekomme ich mittlerweile auch ausgewertet, aber habe das selbe Problem wie du. Die Tasmota Software sendet beim Schalten nut den Wert TOGGLE, den kann ich entweder umstellen oder durch deine Conversation auf einen Wert setzen, aber da ist es eben problematisch da ich den nicht auswerten kann. Mal schauen was ich noch so rausfinden kann.
          • Christian Fenzl
            Lebende Foren Legende
            • 31.08.2015
            • 11217

            #40
            Hi!

            Ich werde - bevor wir mit MQTT den großen Hype in der Loxone-Community auslösen - beim mitinstallierten Mosquitto-Broker noch Authentifizierung mit einem erstmal generierten Kennwort einführen.
            Bisher haben wir ein bisschen Relais ein- und ausgeschaltet, Bluetooth-Anwesenheit erfasst und dem Geschirrspüler zugeschaut.
            Es kommen dann aber vielleicht auch mal kritischere Dinge (wobei Anwesenheit eh schon nicht ganz unkritisch ist), wo ich Bauchschmerzen bei einer Standardinstallation ohne Authentifizierung bekomme.

            Ist für euch, die den vom Plugin installierten Mosquitto verwenden, schon ein Problem, bei allen Devices in der MQTT-Config ein Kennwort festzulegen? Dann kann ich es auch so bauen, dass es bei bestehenden Installationen ohne Auth bleibt. Lieber wär's mir aber, das generell einzuführen. Ich baue im UI auch dazu, dass man die Credentials anzeigen und ändern kann - auf die von LoxBerry gedachte Art (mit vorheriger SecurePin-Eingabe).

            lg, Christian
            Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

            Kommentar

            • AlexAn
              Lebende Foren Legende
              • 25.08.2015
              • 4257

              #41
              Ich finde das gut aber ein Entscheidung im Plug-in wäre super um einfach zu testen bzw. wollen sicher gewisse User das System einfach halten auch wenn es ein gewisses Risiko bedeutet.
              Grüße Alex

              Kommentar

              • hagor
                Extension Master
                • 25.02.2017
                • 181

                #42
                Da bin ich definitiv dafür per default die Authentifizierung zu aktivieren. Gehört mittlerweile zum guten Ton ;-)
                Muss nur einer beim Portforwarding was falsch oder zu viel konfigurieren und schon ist die Queue offen für alle. Eine schnelle Suche liefert mir x-tausende MQTT Broker die aus dem Internet erreichbar sind (und btw. 95 Loxberries ) welche sicher nicht alle ausreichend abgesichert sind (soweit überhaupt möglich).

                Ich verwende ohnehin meinen eigenen Broker mit Authentifizierung also triffts mich nicht direkt.
                Bin für die generelle Einführung der Authentifizierung.
                Im UI die Credentials mit SecurePin ansehen/ändern ist sicher die sauberste und schönste Variante.

                Kommentar


                • AlexAn
                  AlexAn kommentierte
                  Kommentar bearbeiten
                  per default ist sicher der beste Weg
              • Christian Fenzl
                Lebende Foren Legende
                • 31.08.2015
                • 11217

                #43
                MQTT Version 0.3 PRE-RELEASE


                Ab sofort ist bei einer Neuinstallation Authentifizierung am Mosquitto aktiv und es wird ein generiertes Passwort gesetzt.

                Die bei der Installation generierten Anmeldedaten kann man im Plugin einsehen, wobei diese per SecurePIN geschützt sind.
                (Aber für den Benutzer nicht so wild - ich hab es mit clientseitiger Session-Variable implementiert, sodass man das nur einmal eingeben muss, bis man den Browser schließt.)

                Wenn "Use local Mosquitto" aktiv ist, stellt ein Ändern der Credentials auch die Anmeldedaten von Mosquitto um. Dann müssen natürlich auch alle Devices mitgezogen werden!
                Ist "local" inaktiv, sind die Credentials nur für das Gateway zum Verbinden zum externen Broker.
                Leerer User und leeres Passwort deaktivieren die Authentifizierung am lokalen Mosquitto (das ist sozusagen der frühere Zustand).

                Update:
                • Lokaler Mosquitto: Beim Update von <V0.3 müsst ihr einmal in die Config und User/Pass leeren und speichern! (Nur bei diesem Update.)
                • Externer Broker: Bestehende Anmeldedaten werden korrekt migriert.
                Das diesmalige, einmalige Speichern bei lokalen Broker konnte ich nicht automatisch machen - bei weiteren Updates ist das nicht mehr nötig.


                lg, Christian
                Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                Kommentar

                • Gast

                  #44
                  hi gibts den schon ein beispiel config für rollos mit mqtt?

                  Kommentar

                • Christian Fenzl
                  Lebende Foren Legende
                  • 31.08.2015
                  • 11217

                  #45
                  An alle und an AlexAn

                  Ich hab glaub ich einen Bug gefunden, wenn man ohne Credentials mit Mosquitto arbeitet!

                  Wenn man anonym einstellt, startet der Mosquitto nicht mehr, weil das Credentials File leer ist. Ich muss da die Config anders erzeugen.

                  AlexAn Das könnte der Grund sein, dass bei dir vielleicht der Mosquitto nicht mehr gegangen ist!

                  lg, Christian
                  Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                  Kommentar


                  • AlexAn
                    AlexAn kommentierte
                    Kommentar bearbeiten
                    Christian Fenzl den Server kann ich wieder starten in der Shell! Danke dafür!
                    Mir ist aufgefallen wenn ich z.B. stop=1 usw. in der Konvertierung angebe klappt es auch. Wenn ich die Einträge lösche sind sie auf einmal wieder da bzw. wenn ich Änderungen durchgeführt habe vermixt die Ausgabe die Zahlen - z.B open ist 1 und auch close. Das Logfile sagt aber das die Zahlen richtig an HTTP weitergegeben wurden.
                    Bin auf der 1.3.0er Version von Loxberry 0.3 Plugin mit einem Raspberry 3B+ über Wlan Raspberry. Update von November wie Michael geschrieben hat.
                    Zuletzt geändert von AlexAn; 29.11.2018, 20:19.

                  • Christian Fenzl
                    Christian Fenzl kommentierte
                    Kommentar bearbeiten
                    Danke, muss ich durchprobieren!
                    Ausgabe meinst du die Anzeige in der Overview, richtig? Evt. muss ich die löschen, wenn man die Conversion ändert...?

                  • AlexAn
                    AlexAn kommentierte
                    Kommentar bearbeiten
                    Logfile ist noch OK aber Conversions dürfte bei Änderungen am Mosquitto etwas durcheinander bringen.
                Lädt...