Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Mehrere DS18B20 aus mqtt auflösen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Mehrere DS18B20 aus mqtt auflösen

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @bahnuhr last edited by

      @bahnuhr
      Ich mag es gern übersichtlich: Erst Deklarationen - dann Programmausführung.

      C 1 Reply Last reply Reply Quote 1
      • C
        c3b @paul53 last edited by

        @paul53 Hi Leutz

        Ich hab mal ein bischen rumgespielt. Klappt super. Hab gerade eine Abfrage alle 10 Sekunden drin. (nur zum probieren) Ist etwas unübersichtlich, da ich für jeden Wert einen Ordner anlegen muss und dort der DP "Temperatur" drin steht. Schöner wäre unter dem Ordner Fußbodenheizung/Obergeschoß alle Werte mit Namen zu sehen. Beispiel: Bad_Vorlauf 21,4.
        Sollte das dann so aussehen?

        setState(path '.rooms[id]', obj["DS18B20-" + i].Temperature, true)
        

        Dann hätte ich einen Ordner mit 5 Einträgen.

        Hier mein komplettes Skript:

        // Temperatursensorwerte der Fußbodenheizung 
        // Übertragen werden sie per mqtt nach tele.SENSOR im JSON-Format
        
        const idJson = 'mqtt.0.Heizung.Sensor.Fußbodenheizung_Obergeschoß_B596D3.tele.SENSOR'; // Pfad für mqtt-Daten
        
        const path = '0_userdata.0.Fußbodenheizung.Obergeschoß.';                              // Pfad für Datenpunkte
        
        const rooms = {                                                                        // ID Zuordnung für Datenpunkte
            "3C2AF6491BC1": 'Bad_Vorlauf',
            "3C56F649A2C6": 'Bad_Ruecklauf',
            "3C8AF6493673": 'Buero_Vorlauf',
            "3CADF649DB07": 'Buero_Ruecklauf',
            "3CFBE3814518": 'Schlafzimmer_Eltern_Vorlauf'
           // "xxxxxxxxxx": 'Schlafzimmer_Eltern_Ruecklauf',
           // "XXXXXXXXXX": 'Schlafzimmer_Leo_Vorlauf',
           // "xxxxxxxxxx": 'Schlafzimmer_Leo_Ruecklauf'
        };
        
        on(idJson, function(dp){                                                               
            const obj = JSON.parse(dp.state.val); 
            for(let i = 1; i <= 5; i++) {
                let id = obj["DS18B20-" + i].Id;
                setState(path + rooms[id] + '.Temperatur', obj["DS18B20-" + i].Temperature, true)
            }
        });
        
        

        In Zukunft sollen es 8 Werte werden. Die fehlenden habe ich deshalb auskommentiert.

        Schönen Abend und LG aus dem Sauerland
        Jörg

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

          @c3b sagte in Mehrere DS18B20 aus mqtt auflösen:

          Hi Leutz
          Ich habe mehrere (bis jetzt 5) DS18B20 an einen ESP8266 (Tasmota) an einem GPIO-Port angeschlossen. Diesen per mqtt an den iobroker angebunden. Fuktioniert so weit auch. Ich bekomme die drei Ordner stat, cmnd und tele. Unter tele/Sensor sehe ich alle fünf ID's mit den dazugehörigen Temperaturen.

          Interessante Geschichte. Habe so etwas ähnliches vor und bräuchte für meinen Teich-Filterkeller mehrere Temperatursensoren, die ich dann auslesen.
          Wie ist dein Hardwareaufbau, dass du an nur EINEM GPIO mehrere DS18B20 auslesen kannst ?
          Das würde mich interessieren. Bei mir kommen wohl auch locker 10 Temps in Frage.

          C 1 Reply Last reply Reply Quote 0
          • C
            c3b @Segway last edited by

            @segway Hi.
            Ganz einfach. Ein ESP8266 mit Tasmota und dann alle Datenleitungen an den GPIO. Pullup von 4k7 an Vdd und fertig.

            DS18b20.JPG

            LG aus dem Sauerland

            1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active last edited by

              @segway
              66c14df5-fc18-4a61-b06d-c7e74a44dff8-image.png

              und noch einige pdf
              Temperatursensor (DS18B20) - Arduino Datenlogger mit Stockwaage für Imker.pdf
              DS18x20 Temperatursensor - Tasmota.pdf
              DS18B20 Temperatur Shield.pdf

              Man beachte die Begrenzung auf 8 Sensoren.

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

                @c3b sagte: Schöner wäre unter dem Ordner Fußbodenheizung/Obergeschoß alle Werte mit Namen zu sehen.

                Dann lass einfach '.Temperatur' weg.

                        setState(path + rooms[id], obj["DS18B20-" + i].Temperature, true);
                

                und weise den Ordnern (z.B. "Bad_Vorlauf") jeweils ein Datenpunkt-Objekt zu. Die "Temperatur"-Datenpunkte löschen.

                Anmerkung: Die Vorlauftemperaturen sollten sich nicht unterscheiden.

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

                  @paul53 Hi

                  Danke für die Info. Jetzt läuft es so, wie ich möchte.

                  // Temperatursensorwerte der Fußbodenheizung 
                  // Übertragen werden sie per mqtt nach tele.SENSOR im JSON-Format
                  
                  const idJson = 'mqtt.0.Heizung.Sensor.Fußbodenheizung_Obergeschoß_B596D3.tele.SENSOR'; // Pfad für mqtt-Daten
                  
                  const path = '0_userdata.0.Fußbodenheizung.Obergeschoß.';                              // Pfad für Datenpunkte
                  
                  const rooms = {                                                                        // ID Zuordnung für Datenpunkte
                      "3C2AF6491BC1": 'Bad_Vorlauf',
                      "3C56F649A2C6": 'Bad_Ruecklauf',
                      "3C8AF6493673": 'Buero_Vorlauf',
                      "3CADF649DB07": 'Buero_Ruecklauf',
                      "3CFBE3814518": 'Schlafzimmer_Eltern_Vorlauf'
                     // "xxxxxxxxxx": 'Schlafzimmer_Eltern_Ruecklauf',
                     // "XXXXXXXXXX": 'Schlafzimmer_Leo_Vorlauf',
                     // "xxxxxxxxxx": 'Schlafzimmer_Leo_Ruecklauf'
                  };
                  
                  on(idJson, function(dp){                                                               
                      const obj = JSON.parse(dp.state.val); 
                      for(let i = 1; i <= 5; i++) {
                          let id = obj["DS18B20-" + i].Id;
                          setState(path + rooms[id] , obj["DS18B20-" + i].Temperature, true)
                      }
                  });
                  

                  Datenpunkte sind alle in einem Ordner.
                  Mit der Vorlauf- und Rücklauftemperatur wirst du sicher recht haben. Ich hatte gedacht bei einer Differenz von null gibt die Leitung keine Wärme mehr ab und somit sollte die Raumtemperatur gleich der Rücklauftemperatur sein. Da das System aber sehr sehr träge ist und die Sensoren eine Abweichung bis zu 0,8°C haben kann ich das wohl vergessen. Das NSPanel zeigt als Raumtemperatur auch eher eine Fahrkarte an. Bleibt wohl doch nur ein separater Raumfühler. Für die VIS ist es aber auf jeden Fall etwas. Bringt vielleicht nichts, sieht aber Geil aus. 😊

                  Danke noch einmal und LG aus dem Sauerland

                  1 Reply Last reply Reply Quote 0
                  • Segway
                    Segway @bahnuhr last edited by

                    @bahnuhr sagte in Mehrere DS18B20 aus mqtt auflösen:

                    Man beachte die Begrenzung auf 8 Sensoren.

                    Gäbe es auch eine I2C Lösung . Da gingen doch mehr als 8 Sensoren oder liege ich da falsch?

                    bahnuhr 1 Reply Last reply Reply Quote 0
                    • bahnuhr
                      bahnuhr Forum Testing Most Active @Segway last edited by

                      @segway sagte in Mehrere DS18B20 aus mqtt auflösen:

                      @bahnuhr sagte in Mehrere DS18B20 aus mqtt auflösen:

                      Man beachte die Begrenzung auf 8 Sensoren.

                      Gäbe es auch eine I2C Lösung . Da gingen doch mehr als 8 Sensoren oder liege ich da falsch?

                      Hast du meine eingestellten pdf gelesen.
                      Dort steht die eingeschränkte Lösung drin.

                      Segway 1 Reply Last reply Reply Quote 0
                      • Segway
                        Segway @bahnuhr last edited by

                        @bahnuhr sagte in Mehrere DS18B20 aus mqtt auflösen:

                        Hast du meine eingestellten pdf gelesen.
                        Dort steht die eingeschränkte Lösung drin.

                        Ja sicher, und es ist klar warum bei 1-wire das auf 8 Sensoren (respektive 11) begrenzt ist.
                        Das war aber nicht meine Frage.
                        Ist I2C eine Alternative und hat die 8er Begrenzung nicht ? Laut Beschreibungen gibt es diese Begrenzung dort nicht.

                        bahnuhr 1 Reply Last reply Reply Quote 0
                        • bahnuhr
                          bahnuhr Forum Testing Most Active @Segway last edited by

                          @segway sagte in Mehrere DS18B20 aus mqtt auflösen:

                          Ist I2C eine Alternative

                          Hab ich nie probiert.
                          Ich habe zufällig genau 8 Sensoren da dran.

                          1 Reply Last reply Reply Quote 0
                          • bahnuhr
                            bahnuhr Forum Testing Most Active last edited by

                            @Segway

                            Braucht es nicht für I2C einen SCL und SDA.
                            Und bei den DS18B20 hast du aber nur 1 Datenkabel.

                            Segway 1 Reply Last reply Reply Quote 0
                            • Segway
                              Segway @bahnuhr last edited by

                              @bahnuhr sagte in Mehrere DS18B20 aus mqtt auflösen:

                              @Segway

                              Braucht es nicht für I2C einen SCL und SDA.
                              Und bei den DS18B20 hast du aber nur 1 Datenkabel.

                              Ja genau, für I2C braucht man SCL und SDA. Da wird man wohl einen BME280 nehmen müssen, aber so viel teurer sind die ja nicht.

                              1 Reply Last reply Reply Quote 0
                              • C
                                c3b last edited by c3b

                                Hi Leutz

                                Ich nochmal. Die Temp-Sensoren funktionieren und die Werte kommen per json als mqtt in den iobroker. Dank dem Skript habe ich alle Temperaturen incl. Namen unter 0.user.

                                Jetz habe ich mir gedacht ich hänge noch 2 Relais mit an den ESP (Ziel sind bis zu 8 Relais) . Ich bekomme sie configuriert und kann sie auch im web-Interface ein- und ausschalten.
                                Im iobroker unter stat werden beide Relais als power1 und power2 aufgefürt. Unter cmd steht allerdings nur einmal power. Hiermit kann ich durch ändern der Werte aber nur power1 schalten.

                                Wie kann ich das zweite bzw. weitere Relais übe den iobroker schalten?

                                LG aus dem Sauerland

                                Jörg

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

                                  @c3b Normalerweise kannst Du die Tasmota-Befehle als eigene Datenpunkte unter cmnd anlegen. Also Power1 und Power2 einfach unter cmnd anlegen.

                                  C 1 Reply Last reply Reply Quote 0
                                  • C
                                    c3b @mickym last edited by

                                    @mickym Hallo

                                    Und genau das habe ich gesucht.

                                    Funktioniert. Prima. Danke.

                                    LG aus dem Sauerland

                                    Jörg

                                    1 Reply Last reply Reply Quote 0
                                    • C
                                      c3b last edited by

                                      Hi Leutz

                                      Ich noch mal. Nachdem das skript oben ganau das tut, was es soll habe ich einen weiteren D1 Mini mit 8 Sensoren gebaut. Skript angepasst, Datenpunkte erstellt, ...
                                      Und, tada alles top.

                                      Jetzt ist mir aber aufgefallen, dass die Daten (Temperaturen) sich nicht zeitnah ändern.

                                      Ich hatte irgendetwas von einer Intervall einstellung gelesen. Ich finde es aber nicht mehr. Der D1 Mini ist mit Tasmota geflasht. Version 13.3.0.

                                      Kann mir da jemand weiterhelfen? Mir würde alle 60 Sekunden reichen. Evtl. auch noch länger.

                                      LG aus dem Sauerland

                                      Jörg

                                      1 Reply Last reply Reply Quote 0
                                      • Marc Berg
                                        Marc Berg Most Active last edited by

                                        @c3b sagte in Mehrere DS18B20 aus mqtt auflösen:

                                        Kann mir da jemand weiterhelfen? Mir würde alle 60 Sekunden reichen. Evtl. auch noch länger.

                                        das lässt sich unter Logging Einstellungen (in Sekunden) definieren:

                                        bd645871-f891-4f23-b9e5-63c55a308b07-grafik.png

                                        C 1 Reply Last reply Reply Quote 0
                                        • C
                                          c3b @Marc Berg last edited by

                                          @marc-berg Perfekt. Genau das habe ich gesucht. Ich glaube ich werde doch alt. 😕
                                          Danke Dir.

                                          LG aus dem Sauerland

                                          Jörg

                                          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

                                          792
                                          Online

                                          32.0k
                                          Users

                                          80.5k
                                          Topics

                                          1.3m
                                          Posts

                                          6
                                          29
                                          2068
                                          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