Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Mqtt best practice

    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

    Mqtt best practice

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      dos1973 @mickym last edited by

      @mickym
      nein, relay hat nur den Mülleimer

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

        @dos1973 status musst nicht anlegen.

        Wie gesagt schau Dir die Doku ggf. an.
        91d0db31-a185-4829-9439-4c0f37cb8ed5-image.png
        Wenn Du einen Dimmer hast dann dimmst Du über das set Kommando diesen.

        92cc477e-1e4f-4f40-85f4-14dc52da83a9-image.png

        Den Vorteil, den Du mit reinem MQTT-hast, ist dass Du nicht wie beim Shelly Adapter darauf warten musst, dass das Gerät mit den entsprechenden Funktionen implementiert wird.

        • So um das Problem mit den fehlenden Objekten im mqtt Adapter zu lösen, lass mal folgendes Skript laufen:
        /**
        * Zweck:       Korrigiert übergeordnete Ordnerstrukturen eines Datenpunkts
        * Datum:      07.08.2021
        * Autor:       @fastfoot
        */
         
        //              In den Settings der Javascript-Instanz muss setObject erlaubt sein!!!
         
        let arr = [],
           id = '';
         
        const ids = $('mqtt.0.*');
        ids.each(idTmp => {
           arr=idTmp.split('.');
           arr.splice(arr.length-1);
           id=arr.join('.');
           if(arr[0] === '0_userdata' || arr[0] === 'alias' || arr[0] === 'mqtt' || arr[0] === 'javascript'){
               correctObject(id, arr);
           }
        })
         
        function correctObject(id,arr){
           if(arr.length === 2) return;
           if(!existsObject(id)){
               let obj = {};
               obj = {
                   type: 'folder',
                   common:{
                       name: arr[arr.length - 1]
                   }
               }
               extendObject(id, obj, e => {
                   if (e) log('Fehler beim Schreiben des Objektes: '+ id + ' ' + e);
               })
           }
           arr.splice(arr.length - 1);
           id = arr.join('.');
           correctObject(id, arr);
        }
        

        Empfehle Dir aber zum Erstellen erst mal auf admin4 umzustellen (bleibt ja der Admin5 Adapter nur mit alter Oberfläche - kannst ja dann wieder umstellen).

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

          @mickym sagte in Mqqt best practice:

          Den Vorteil, den Du mit reinem MQTT-hast, ist dass Du nicht wie beim Shelly Adapter darauf warten musst, dass das Gerät mit den entsprechenden Funktionen implementiert wird.

          das ist genau der Grund warum ich das machen wollte.

          command und Set habe ich auch begriffen... 🙂 ich brauche nochmals ein Bsp für den Status?

          und ich weiß leider nicht wieder der admin von 5 auf 4 gewechselt werden kann, lese ich heute das erste mal.

          btw. Vielen Dank für deine Hilfestellung!

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

            @dos1973 Gehe auf Instanzen und in die Einstellungen Deiner Admin Instanz:
            Mach den Haken Alte Benutzeroberfläche an, dann Browserrefresh

            448a60c6-19dd-49b9-b733-fcf865d0d946-image.png

            Dann legst die Datenpunkte wie früher an.
            Dann machst den Haken wieder raus und hast wieder die Admin5 Oberfläche.

            Anschließend lässt Du das Skript drüber laufen, das legt dann aus den fehlenden Objekten Verzeichnisobjekte an.

            Status meldet der Shelly von selbst den brauchst nicht anlegen. Über den Status sendet der Shelly einen JSON mit Einstellungen

            939230e7-bde7-4dcf-96af-31323b06dd31-image.png

            Den status scheint es nur bei dem DImmer zu geben.

            D mickym 2 Replies Last reply Reply Quote 0
            • D
              dos1973 @mickym last edited by dos1973

              @mickym
              Ok, danke erstmal. Das kann ich erst morgen wieder versuchen.

              Melde mich morgen abend nochmals

              Noch eine Frage:
              Das script führe ich script Adapter aus?

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

                @dos1973

                Falls Dich das interessiert, hier habe ich die Problematik mit dem Admin5 und mqtt ausführlich diskutiert:

                https://forum.iobroker.net/topic/46851/datenpunkte-allgemein-und

                https://forum.iobroker.net/topic/46814/admin5-ich-kann-keine-objekte-mehr-manuell-anlegen/289?_=1632336730226

                und gibt inzwischen auch ein github issue

                https://github.com/ioBroker/ioBroker.admin/issues/1067

                Ich hoffe nur nicht - dass das Prio 99 bekommt, da nur als "Enhancement" und nicht als Bug akzeptiert.

                Speedbreaker12 created this issue in ioBroker/ioBroker.admin

                open Keine eigenen Datenpunkte in mqtt.X mehr #1067

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

                  @dos1973 sagte in Mqqt best practice:

                  @mickym

                  Noch eine Frage:
                  Das script führe ich script Adapter aus?

                  e59d97a3-9324-42cd-896d-d2c4a7771d19-image.png

                  Ja unter Scripts

                  D 1 Reply Last reply Reply Quote 1
                  • D
                    dos1973 @mickym last edited by

                    @mickym
                    ich muss nochmals fragen, was das script macht?!?

                    nachdem ich den admin vom 5 auf 4 umgestellt habe, kann ich die states anlegen welche ich benötige. ich hab zwar das script ausgeführt - aber ich habe nicht verstanden warum ich das machen muss.

                    bei shelly 2.5 als Rollo habe ich jetzt noch diese DP angelegt
                    mqtt.0.shellies.Wohnzimmer_Rollo_links.roller.0.command.pos
                    command: für hoch/runter/stop
                    pos: für die genaue Positionsfahrt

                    mir gefällt nicht so gut dass ich states manuell anlegen muss um die gerate zu steuern.
                    Wenn ich irgendwann mal eine Baum lösche und vergesse mir zu notieren was da war, dann geht die Suche wieder los...

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

                      @dos1973

                      @dos1973 sagte in Mqqt best practice:

                      @mickym
                      ich muss nochmals fragen, was das script macht?!?

                      nachdem ich den admin vom 5 auf 4 umgestellt habe, kann ich die states anlegen welche ich benötige. ich hab zwar das script ausgeführt - aber ich habe nicht verstanden warum ich das machen muss.

                      Das Skript legt fehlende Objekte an, die erst seit Admin5 nötig sind. Das heißt, wo vorher das Stift-Symbol gefehlt hat (hast Du ja bestätigt), sollte nun ein Stiftsymbol vorhanden sein.
                      Dann ist relay nun auch als Objekt Verzeichnis und Du solltest nun wie von mir ursprünglich beschrieben durch Markieren des relay Datenpunktes über das + Datenpunkte hinzufügen können.
                      Das Skript legt also bei fehlende Objekten, Objekte vom Typ "Folder" an.

                      6f4ba1af-bcea-401d-a7d8-6253d5be4f8e-image.png

                      bei shelly 2.5 als Rollo habe ich jetzt noch diese DP angelegt
                      mqtt.0.shellies.Wohnzimmer_Rollo_links.roller.0.command.pos
                      command: für hoch/runter/stop
                      pos: für die genaue Positionsfahrt

                      Ja das passt:

                      b61625aa-c065-40bc-96df-3a726ec078c4-image.png

                      mir gefällt nicht so gut dass ich states manuell anlegen muss um die gerate zu steuern.
                      Wenn ich irgendwann mal eine Baum lösche und vergesse mir zu notieren was da war, dann geht die Suche wieder los...

                      Nun das ist generell bei mqtt so. Es werden nur die Topics geschrieben, die auch veröffentlicht wurden und ein Gerät veröffentlicht nicht die Topics auf die es hört, da dies zu einer Endlosschleife führen würde.

                      Generell empfiehlt es sich, dass Du ggf. noch Aliase anlegst, damit hast Du auch dokumentiert, welche Datenpunkte Du zum steuern verwendest und kannst die Geräte im Fall eines Austauschs einfach austauschen.

                      Du kannst ja auch jeden Shelly Typ - die Objektstruktur exportieren, um quasi eine Vorlage zu haben.

                      Wenn Du willst kannst Dir ja auch ein kleines Script schreiben, dass Dir über den mosquitto Client alle Datenpunkte anlegt oder Du legst die Datenpunkte über Deine Logikmaschine an, wenn das geht.

                      Im NodeRed kannst zum Beispiel einfach angeben, dass Datenpunkte erstellt werden, wenn sie nicht existieren.

                      Alles nur ein paar Anregungen. Und wie gesagt ist ja nur Einmalaufwand. 😉

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

                        @mickym

                        das mit den Skripten ist so eine Sache 🙂
                        bin da nicht so bewandert.

                        das mit den Alias wäre natürlich jetzt noch am Anfang sinnvoll... muss ich mir auch mal ansehen, welches da der beste Adapter ist, da gibts ja, meine ich auch inzwischen verschiedene Optionen.

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

                          @dos1973 Ich kann Dir nur den empfehlen, der wirklich mit dem Alias arbeiten und würde von dem anderen Adapter abraten. 😉 - Ohne jetzt Namen zu nehmen.

                          Dieser Adapter legt wirkliche Aliase unter alias.0 an und damit werden wirklich die Systemfunktionen genutzt und nicht Funktionen in dem Adapter selbst - wie das die Konkurrenz macht.

                          56181bf1-363f-43e6-96f0-28ea9131ca74-image.png

                          Über den Alias kannst dann auch solche Übersetzungen realisieren, dass Du zum Beispiel ON in true und OFF in false übersetzen lassen kannst, wenn Dir das sinnvoll erscheint:

                          2b742bc0-c737-4eaa-a290-dcc309d38593-image.png

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

                            Ich habe aber gerade gesehen, dass Du bei Deinen Shellies sowieso eigene mqtt-Prefixe nutzt. Also Küche etc..

                            Dann brauchst eigentlich keinen Alias. Wenn Du tatsächlich mal ein Gerät austauschen musst, dann kannst Du ja den gleichen Prefix wieder verwenden und musst weder in Deinen Logikmaschinen noch in Deiner Visualisierung was ändern.

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

                              @mickym
                              auch so einer der spät bastelt 🙂

                              ja, ich bin noch am ausprobieren und hab da mal mit den Prefixen rumprobiert.
                              ich weiß eben noch nicht was mir u.U. Vorteile / Nachteile bringt. spiele derzeit auch mit dem Alias Adapter

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

                                @dos1973 Ja ich gehöre eher zu den Eulen, als zu den Lerchen.

                                Für Deine Shellies alleine ist der Vorteil eigentlich marginal.

                                Man kann halt eine ähnliche Struktur über verschiedene Gerätetypen machen.

                                Unten habe ich Dir ja im Screenshot gezeigt, wie man zum Beispiel bei Lesen on in true, off in false übersetzt.

                                Man kann aber auch zum Beispiel einzelne Werte direkt aus einem JSON Objekt rauslösen.
                                Der Zustand bzw. das Dimmlevel, sprich die Helligkeit des Shelly Dimmers wird ja im status Wert ausgegeben:

                                7eddd06c-c3e6-4fff-8b5b-aa40911fe2ef-image.png

                                Das kann man dann im Alias direkt rauslösen

                                69eaec98-fa45-492e-aab5-1364f727ebc9-image.png

                                In der Alias Definition gibt man dafür den Befehl in Javascript zum Lesen ein.

                                72695603-d8c3-443c-ba9b-46f8298c4676-image.png

                                Was allerdings mit einem Alias nicht geht, bei Lesen und Schreiben unterschiedliche Datenpunkte als Quelle angeben!!

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

                                  @mickym
                                  du überforderst mich 🙂 scheinst die Möglichkeiten ja wirklich extrem auszunutzen.

                                  Ich fange jetzt an die Shellys vom Shelly Adapter auf den Mosquitto umzuziehen.
                                  Jetzt weiß ich nur nicht, ob ich mir noch die Alias Struktur geben soll, weil ich ja ale VIS und Script ebenfalls "anfassen" muss...

                                  ich mach mal für heute Schluss und schlaf mal eine Nacht drüber.

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

                                    @dos1973
                                    Also wie gesagt mit Deinem benutzerspezifischen Prefix - musst Du es wegen den Shellies aus meiner Sicht nicht machen.

                                    Schlaf gut - und möge Dich Dein Schlaf erleuchten. 😉

                                    D 1 Reply Last reply Reply Quote 1
                                    • D
                                      dos1973 @mickym last edited by

                                      @mickym
                                      nochmals ich, gibt es noch einen einfach Trick/ Vorgehensweise um Infos mittels Mqqt aus dem shelly Status abzufragen und als DP anzulegen?

                                      http://shelly-ip/status

                                      und manche Shellys haben noch den Datenpunkt "announce", da stehen auch einige infos drin, / manche DP sind leer aber eben nicht überall gleich die Regel dazu habe ich noch nicht verstanden

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

                                        @dos1973 Du kannst direkt unter allen shellies nochmal einen Datenpunkt command anlegen oder bei den einzelnen shellies. Dort kann man dann mit announce die shellies zwingen ihren status im info Datenpunkt abzulegen oder bei Bedarf kann man das nutzen um die Firmware zu aktualisieren.

                                        siehe: https://shelly-api-docs.shelly.cloud/gen1/#common-mqtt-commands

                                        Im Info-Datenpunkt findest in der Regel fast alle Infos zu dem Shelly in einem JSON zusammengefasst. So auch ob es ein FW Update gibt, welche FW Version etc.

                                        3e848d3e-149f-4a15-af4e-6f3b2bc2e57b-image.png

                                        Mit announce in dem command Punkte - entweder beim Einzelgerät oder für alle werden die info DP aktualisiert, mit update die normalen states, mit update_fw kannst Du Firmwareupdates anstossen.

                                        Aus dem Link siehst, dass die announce Datenpunkte eher alt sind und bis zur FW. 1.6.x genutzt wurden, ab Version 1.8.x wird Info genutzt. Aktuell siehst ja an meinem Screenshot sind wir bei einer FW Version 1.11.x

                                        Und wenn Du mit NodeRed arbeiten würdest könntest ja meinen Flow nutzen der daraus einzelne Datenpunkte unter userdata macht - (Wenn derzeit auch mit Nacharbeit wegen Admin5). Zeig es Dir mal an einem Beispiel. Theoretisch könnte Dir so ein Flow auch selbst den Info DP unter mqtt aufdröseln.

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

                                          @mickym sagte in Mqqt best practice:

                                          Und wenn Du mit NodeRed arbeiten würdest könntest ja meinen Flow nutzen der daraus einzelne Datenpunkte unter userdata macht - (Wenn derzeit auch mit Nacharbeit wegen Admin5). Zeig es Dir mal an einem Beispiel. Theoretisch könnte Dir so ein Flow auch selbst den Info DP unter mqtt aufdröseln.

                                          Mit diesem kleinen Flow - könntest Du dann alle states aus dem Info Datenpunkt aufdröseln:

                                          5f4be813-e9a7-4ab3-81ed-52e135ec1a8c-image.png

                                          22a7dba1-6199-4b6c-93a3-97e576c8dd35-image.png

                                          Dann muss man halt wieder das javascript drüber jagen - dieses Mal über userdata - damit einmalig die fehlenden Objekte angelegt werden. NodeRed kann im Moment nur states und keine Objekte anlegen.

                                          Fehlende Stiftsymbole !!!

                                          6b9a7240-9168-4461-bf40-3400df32b2f5-image.png

                                          8a656a47-685a-4221-b27c-2340cf0b47e8-image.png

                                          Das Skript macht dann aus allen fehlenden Objekten - Folderobjekte:

                                          1d665166-dc10-4adb-89bb-aaaf59d9b777-image.png

                                          Ist das aber einmal erledigt, dann werden diese Datenpunkte mit Aktualisieren des Info Datenpunktes automatisch aktualisiert.

                                          ee5a15f6-07be-46d4-9c3b-7d92cf8d2abe-image.png

                                          Ich habe deshalb niemals verstanden, warum man Adapter nutzt, die kaum was anderes machen, als kompakte JSON-String Datenpunkte in einzelne Datenpunkte zerlegt. OK man muss keine Datenpunkte selbst anlegen, wenn man Kommandos verschickt. 🙂 - Punkt gegen mqtt. 😉
                                          Bei Bedarf kann man sich ja auch nur einzelne Datenpunkte aus dem JSON rausholen und in einem Alias beispielsweise abspeichern (habe ich ja vorher schon mal gezeigt, wie das geht).

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

                                            In diesem Info Datenpunkt bekommt man in meinen Augen mind. soviel Infos wie in dem Adapter:

                                            8f5854cc-3b20-418e-9a46-5d56ac368148-image.png

                                            So siehst Du zum Beispiel, ob der Shelly gerade mit einem FW Update beschäftigt ist oder auch RAM Belegung ,die Güte des WLAN Signals, Uhrzeit des Shellies usw.

                                            Uptime ist hier die Zeit in Sekunden (nicht Millisekunden 😉 ), seitdem das Gerät neu gebootet hat- also 548006 Sekunden sind in diesem Fall ca. 152 Stunden oder vor gut 6 Tagen.

                                            mickym 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

                                            628
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            mosquitto mqtt shellys
                                            6
                                            136
                                            9887
                                            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