Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. MQTT String aufteilen

    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 String aufteilen

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      albi_63 last edited by

      Hy Leute

      Wie kann ich folgenden String, welcher mir per mqtt an mein IoBroker gesendet wird, in einzelnen Datenpunkten darstellen?

      MQtt-String.jpg

      Im Detail sieht der String so aus:

      {"Time":"2020-06-11T18:15:24","DS18B20":{"Temperature":25.8},"DHT11":{"Temperature":26.7,"Humidity":47.0},"SR04":{"Distance":23.088},"TempUnit":"C"}
      

      Ich hätte jetzt gerne je einen Datenpunkt für:
      DS18B20 Temperatur
      DHT11 Temperatur
      DHT11 Humidity
      SR04 Distance

      Danke für euer Feedback

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @albi_63 last edited by

        @albi_63 sagte:

        Ich hätte jetzt gerne je einen Datenpunkt für:
        DS18B20 Temperatur
        DHT11 Temperatur
        DHT11 Humidity
        SR04 Distance

        const idSensor = 'mqtt.0.Smarthome.Wassertank.tele.SENSOR';
        const idDSTemp = '...';
        const idDHTemp = '...';
        const idDHHum  = '...';
        const idDist = '...';
        
        on(idSensor, function(dp) { // triggert bei Wertänderung
           let obj = JSON.parse(dp.state.val);
           setState(idDSTemp, obj.DS18B20.Temperature, true);
           setState(idDHTemp, obj.DHT11.Temperature, true);
           setState(idDHHum, obj.DHT11.Humidity, true);
           setState(idDist, obj.SR04.Distance, true);
        });
        
        1 Reply Last reply Reply Quote 0
        • A
          albi_63 last edited by

          Hallo paul

          Besten Dank für dein script. Ich habe dieses in JS implementiert, allerdings sehe ich im IoBroker keine weiteren Datenpunkte und das script sendet mir fortlaufend falsche Werte:

          22:00:15.124	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:17:4)
          22:00:15.128	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:19:4)
          22:00:15.133	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:21:4)
          22:00:15.138	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:23:4)
          22:00:25.118	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:17:4)
          22:00:25.126	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:19:4)
          22:00:25.140	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:21:4)
          22:00:25.150	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:23:4)
          22:00:35.159	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:17:4)
          22:00:35.167	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:19:4)
          22:00:35.175	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:21:4)
          22:00:35.178	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:23:4)
          22:00:45.126	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:17:4)
          22:00:45.132	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:19:4)
          22:00:45.137	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:21:4)
          22:00:45.142	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:23:4)
          22:00:55.101	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:17:4)
          22:00:55.108	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:19:4)
          22:00:55.114	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:21:4)
          22:00:55.120	warn	javascript.0 (768) at Object.<anonymous> (script.js.common.Wassertank.WemosD1:23:4)
          

          Das sind die aktuellen Werte:
          Sonoff.jpg

          Leider stehe ich hier voll an......
          Was muss ich anpassen damit das script funktioniert?

          Danke dir

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @albi_63 last edited by

            @albi_63 sagte:

            Was muss ich anpassen damit das script funktioniert?

            Du must die 4 Datenpunkte erstellen (z.B. manuell im Tab "Objekte" unter "0_userdata.0") und die IDs dieser Datenpunkte oben im Script eintragen.

            1 Reply Last reply Reply Quote 0
            • A
              albi_63 last edited by

              Hoi Paul
              Bitte entschuldige aber ich komme nicht weiter.
              Bitte mache mir ein Beispiel für einen Datenpunkt.
              Ich bin noch am Anfänger....😧

              1 Reply Last reply Reply Quote 0
              • A
                albi_63 last edited by

                Hoi Paul
                Jetzt habe ich es geschnallt, hat ein weilchen gedauert. Habe null Ahnung von JS.......
                Hier ein Datenpunkt:
                idDSTemp.jpg
                Vielen Dank dir.
                👍 😆

                J 1 Reply Last reply Reply Quote 0
                • J
                  Jan.S100 @albi_63 last edited by

                  @albi_63 Hallo.
                  Benutzt du eigentlich nur Sonoff Geräte?
                  Wenn ja probiere Mal den Sonoff Adapter.

                  Aber bitte darauf achten, das entweder der MQTT Adapter läuft oder der Sonoff Adapter.

                  1 Reply Last reply Reply Quote 0
                  • A
                    albi_63 last edited by

                    Hallo Jan

                    Ich habe ein Wemos D1 mit Sonos geflasht auf welchem ich die Zustände des Wassertanks abfrage, ansonsten habe ich gar keine Sonosgeräte am laufen.

                    Gruss Albi

                    J 1 Reply Last reply Reply Quote 0
                    • J
                      Jan.S100 @albi_63 last edited by Jan.S100

                      @albi_63 Dann solltest du mit dem Sonoff Adapter besser zu recht kommen.
                      Hast du es schon ausprobiert?

                      So sieht die Datenstruktur aus.
                      Screenshot_2020-06-12-16-11-47~2.png

                      1 Reply Last reply Reply Quote 0
                      • A
                        albi_63 last edited by

                        Hallo Jan
                        Wenn ich die Sonoff Instanz starte bleibt die Rot. Wenn ich den Port von 1883 auf 1884 ändere und in den MQTT Einstellungungen des NodeMCU die Einstellungen vom Port und Passwort ändere geht der Adapter auf grün, allerdings sehe ich unter Objekte nur:

                        Sonos.jpg

                        und keine weiteren Datenpunkte.
                        Temperatur, Distanz , Humidity ect nicht vorhanden.

                        Das kommt vom Nodemcu:

                        nodemcu.png

                        Was mache ich falsch?
                        Brauche ich die MQTT Instanz nicht mehr?

                        J 1 Reply Last reply Reply Quote 0
                        • A
                          albi_63 last edited by

                          @paul53
                          Hallo Paul
                          Wie definiere ich dein Script wenn ich zwei Temperatursensoren am laufen habe?
                          Ich habe da was versucht allerdings geht das in die Hose....

                          const idSensor = 'mqtt.0.Smarthome.Wassertank.tele.SENSOR';
                          
                          // const idDSTemp1 = '0_userdata.0.Objekte.Wassertank.Temp_DS18B20-1';
                          
                          // const idDSTemp2 = '0_userdata.0.Objekte.Wassertank.Temp_DS18B20-2';
                          
                          const idDHTemp = '0_userdata.0.Objekte.Wassertank.idDHTemp';
                          
                          const idDHHum  = '0_userdata.0.Objekte.Wassertank.idDSTemp';
                          
                          const idDist = '0_userdata.0.Objekte.Wassertank.SR04_Distance';
                          
                           
                          
                          on(idSensor, function(dp) { // triggert bei Wertänderung
                          
                             let obj = JSON.parse(dp.state.val);
                          
                            // setState(idDSTemp1, obj.DS18B20-1.Temperature, true);
                          
                             // setState(idDSTemp2, obj.DS18B20-2.Temperature, true);
                          
                             setState(idDHTemp, obj.DHT11.Temperature, true);
                          
                             setState(idDHHum, obj.DHT11.Humidity, true);
                          
                             setState(idDist, obj.SR04.Distance, true);
                          

                          Der String kommt folgendermassen an:

                          {"Time":"2020-06-12T18:56:00","DS18B20-1":{"Id":"01192A390A6C","Temperature":24.8},"DS18B20-2":{"Id":"0301A279895F","Temperature":22.4},"DHT11":{"Temperature":27.2,"Humidity":44.0},"SR04":{"Distance":30.000},"TempUnit":"C"}
                          

                          Danke für dein Feedback

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @albi_63 last edited by

                            @albi_63 sagte:

                            zwei Temperatursensoren am laufen habe?

                            DS18B20-1 und DS18B20-2 enthalten unzulässige Zeichen (-) für die Punkt-Notation. Der Zugriff muss dann anders erfolgen:

                               setState(idDSTemp1, obj['DS18B20-1'].Temperature, true);
                               setState(idDSTemp2, obj['DS18B20-2'].Temperature, true);
                            
                            1 Reply Last reply Reply Quote 0
                            • A
                              albi_63 last edited by

                              @paul53
                              Hallo Paul,
                              Ich danke dir vielmals. Es klappt wunderbar.😊

                              1 Reply Last reply Reply Quote 0
                              • J
                                Jan.S100 @albi_63 last edited by

                                @albi_63
                                Screenshot_2020-06-12-20-36-16~2.png

                                Alle drei Sachen angehakt?

                                Du kannst nur den Sonoff oder den MQTT Adapter laufen lassen.
                                Sonst kommen sie sich ins Gehege.
                                Oder wie du es gemacht hast, die Ports zu ändern.

                                1 Reply Last reply Reply Quote 0
                                • A
                                  albi_63 last edited by

                                  @Jan-S100
                                  Hy Jan
                                  Hatte alles schon so angeklickt wie du mir gesendet hast. Bekomme keine Daten.
                                  Kann es an der alten Firmware "Sonoff-Tasmota 6.7.1" liegen? Wenn ich die aktuellste mit "8.x.x" aufspiele, bekomme ich meinen SR04 Sensor nicht mehr zur Auswahl. Allerdings habe ich mit der neusten Firmware jetzt noch nicht getestet, ob mir die Daten übermittelt werden.

                                  J harrym 2 Replies Last reply Reply Quote 0
                                  • J
                                    Jan.S100 @albi_63 last edited by

                                    @albi_63 Tja, da müssen wohl die Spezialisten ran. 🤔 So tief stecke ich dann doch nicht in der Materie.

                                    1 Reply Last reply Reply Quote 0
                                    • harrym
                                      harrym @albi_63 last edited by

                                      @albi_63 also 8.3.1.3 ist derzeit die aktuelleste (abseits von stable) .... und von 6.x auf 8.x ist ein großer sprung. andererseits werden da auch viele fehler behoben 😉

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        albi_63 last edited by

                                        @harrym
                                        Hy harrim
                                        Danke für dein Feedback.
                                        Ich hatte die 8.3.1 zu Anfang aufgespielt, bekam allerdings nicht mehr meinen Sensor SR04, danach ging ich Version um Version zurück bis mein Sensor wieder auftauchte und das bei der 6.7.1.
                                        Wenn ich jetzt die aktuellste wieder aufspiele funktioniert es vielleicht mit dem Sonos. Allerdings bringt mir das nichts, da ja die Werte vom SR04 nicht abesetzt werden können. Somit arbeite ich mit MQTT und dem Script von Paul. Das funktioniert soweit.
                                        Danke euch allen für die Unterstützung.

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        866
                                        Online

                                        31.8k
                                        Users

                                        80.0k
                                        Topics

                                        1.3m
                                        Posts

                                        blockly javascript
                                        4
                                        18
                                        1348
                                        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