Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Mehrere DS18B20 aus mqtt auflösen

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    459

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    380

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    972

Mehrere DS18B20 aus mqtt auflösen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
29 Beiträge 6 Kommentatoren 3.3k Aufrufe 4 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • C Offline
    C Offline
    c3b
    schrieb am zuletzt editiert von
    #1

    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.
    So wie ich das verstanden habe, handelt es sich hierbei um ein Json. Bezeichnet sind sie mit DS18B20-1. Ich habe schon Forenbeiträge gelesen, wobei das -Zeichen in z.B. einen _Zeichen geändert werden muss (Sonderzeichen nicht erlaubt)
    Ich hätte die fünf Werte gerne in jeweils einen Datenpunkt geschrieben.
    Jetzt bräuchte ich einmal einen Tip, wie ich das anstelle. Blockly? JS?
    Gibt es irgendwo ein Beispiel-Skript?

    LG aus dem Sauerland
    Jörg

    paul53P SegwayS 2 Antworten Letzte Antwort
    0
    • C c3b

      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.
      So wie ich das verstanden habe, handelt es sich hierbei um ein Json. Bezeichnet sind sie mit DS18B20-1. Ich habe schon Forenbeiträge gelesen, wobei das -Zeichen in z.B. einen _Zeichen geändert werden muss (Sonderzeichen nicht erlaubt)
      Ich hätte die fünf Werte gerne in jeweils einen Datenpunkt geschrieben.
      Jetzt bräuchte ich einmal einen Tip, wie ich das anstelle. Blockly? JS?
      Gibt es irgendwo ein Beispiel-Skript?

      LG aus dem Sauerland
      Jörg

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @c3b sagte: handelt es sich hierbei um ein Json.

      Bitte JSON in Code tags posten.

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

      Gibt es irgendwo ein Beispiel-Skript?

      Ja, hier.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      C 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @c3b sagte: handelt es sich hierbei um ein Json.

        Bitte JSON in Code tags posten.

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

        Gibt es irgendwo ein Beispiel-Skript?

        Ja, hier.

        C Offline
        C Offline
        c3b
        schrieb am zuletzt editiert von
        #3

        @paul53 Hallo

        Sorry, du hast natürlich recht.

        {
          "Time": "2022-12-27T19:10:38",
          "DS18B20-1": {
            "Id": "3C2AF6491BC1",
            "Temperature": 19.6
          },
          "DS18B20-2": {
            "Id": "3C56F649A2C6",
            "Temperature": 20
          },
          "DS18B20-3": {
            "Id": "3C8AF6493673",
            "Temperature": 20.3
          },
          "DS18B20-4": {
            "Id": "3CADF649DB07",
            "Temperature": 19.9
          },
          "DS18B20-5": {
            "Id": "3CFBE3814518",
            "Temperature": 20.9
          },
          "TempUnit": "C"
        }
        

        Ich habe mir die Links angeschaut. Der Post von Bahnuhr ist schon hilfreich. Somit kann man die einzelnen Datenpunkte zerlegen. Wie aber schreibe ich diese Werte in verschiedene Datenpunkte?
        Ich möchte gerne unter User.0 einen Ordner mit den Datenpunkten anlegen. Da sollen sie hin. Idealerweise lege ich pro Sensor einen Ordner an.
        Ich denke ich muss die www von molili durcharbeiten.

        Ich hate nur gedacht, dass es ein komplettes Skript als Vorlage gibt.

        Vielen Dank.

        LG aus dem Sauerland

        bahnuhrB paul53P 2 Antworten Letzte Antwort
        0
        • C c3b

          @paul53 Hallo

          Sorry, du hast natürlich recht.

          {
            "Time": "2022-12-27T19:10:38",
            "DS18B20-1": {
              "Id": "3C2AF6491BC1",
              "Temperature": 19.6
            },
            "DS18B20-2": {
              "Id": "3C56F649A2C6",
              "Temperature": 20
            },
            "DS18B20-3": {
              "Id": "3C8AF6493673",
              "Temperature": 20.3
            },
            "DS18B20-4": {
              "Id": "3CADF649DB07",
              "Temperature": 19.9
            },
            "DS18B20-5": {
              "Id": "3CFBE3814518",
              "Temperature": 20.9
            },
            "TempUnit": "C"
          }
          

          Ich habe mir die Links angeschaut. Der Post von Bahnuhr ist schon hilfreich. Somit kann man die einzelnen Datenpunkte zerlegen. Wie aber schreibe ich diese Werte in verschiedene Datenpunkte?
          Ich möchte gerne unter User.0 einen Ordner mit den Datenpunkten anlegen. Da sollen sie hin. Idealerweise lege ich pro Sensor einen Ordner an.
          Ich denke ich muss die www von molili durcharbeiten.

          Ich hate nur gedacht, dass es ein komplettes Skript als Vorlage gibt.

          Vielen Dank.

          LG aus dem Sauerland

          bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #4

          @c3b
          Das ist nicht ganz so einfach.
          Problem ist, dass Tasmota die einzelnen DS18B20 nicht immer an die gleiche Stelle tut.
          Soll heißen, dein Sensor mit der ID3 C2AF6491BC1 ist manchmal an der Stelle 1; oder eben an einer anderen.

          Aus diesem Grund musst die die ID beim Script mit beurteilen und dann bei Eindeutigkeit den DP zuweisen.
          Anbei mein Script.
          Bei Fragen gerne melden.

          // Temperatur der Heizungsrohre
              var Id, Temp, z;
              on({id: "mqtt.2.Wemos_Heizung_Rohre.SENSOR", change: "ne"}, function(obj){
                  obj = JSON.parse(obj.state.val); 
                  for (z = 1; z <= 8; z++) {
                      Id = obj["DS18B20-"+z].Id;
                      Temp = obj["DS18B20-"+z].Temperature;
                      Temp_schreiben(Id,Temp);
                  }
              var sdatum = formatDate(obj.Time,"DD.MM.YYYY");
              var szeit = formatDate(obj.Time,"SS:mm");
              //log ("Temperatur Heizungsrohre aktualisiert am " + sdatum + " um " + szeit + " Uhr");
              setState("javascript.0.Geräte.Heizung.Rohre.Aenderung",(sdatum + " um " + szeit + " Uhr"));
              }); 
          
              function Temp_schreiben(Id,Temp) {
                  if (Id == "0117B37A48FF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Kaltwasser", Temp);
                  if (Id == "0117B38548FF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Vorlauf", Temp);
                  if (Id == "0117B38B14FF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Umwaelz", Temp);
                  if (Id == "0417A2D62CFF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Ruecklauf", Temp);
                  if (Id == "0517C0E88FFF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Waermetauscher", Temp);
                  if (Id == "0517C0EA1CFF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Warmwasser", Temp);
                  if (Id == "0517C0EAF2FF") setState("javascript.0.Geräte.Heizung.Rohre.Fussbodenheizung_Ruecklauf", Temp);
                  if (Id == "0517C0EB6FFF") setState("javascript.0.Geräte.Heizung.Rohre.Fussbodenheizung_Vorlauf", Temp);
              }
          

          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

          C 1 Antwort Letzte Antwort
          0
          • C c3b

            @paul53 Hallo

            Sorry, du hast natürlich recht.

            {
              "Time": "2022-12-27T19:10:38",
              "DS18B20-1": {
                "Id": "3C2AF6491BC1",
                "Temperature": 19.6
              },
              "DS18B20-2": {
                "Id": "3C56F649A2C6",
                "Temperature": 20
              },
              "DS18B20-3": {
                "Id": "3C8AF6493673",
                "Temperature": 20.3
              },
              "DS18B20-4": {
                "Id": "3CADF649DB07",
                "Temperature": 19.9
              },
              "DS18B20-5": {
                "Id": "3CFBE3814518",
                "Temperature": 20.9
              },
              "TempUnit": "C"
            }
            

            Ich habe mir die Links angeschaut. Der Post von Bahnuhr ist schon hilfreich. Somit kann man die einzelnen Datenpunkte zerlegen. Wie aber schreibe ich diese Werte in verschiedene Datenpunkte?
            Ich möchte gerne unter User.0 einen Ordner mit den Datenpunkten anlegen. Da sollen sie hin. Idealerweise lege ich pro Sensor einen Ordner an.
            Ich denke ich muss die www von molili durcharbeiten.

            Ich hate nur gedacht, dass es ein komplettes Skript als Vorlage gibt.

            Vielen Dank.

            LG aus dem Sauerland

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #5

            @c3b sagte: unter User.0 einen Ordner mit den Datenpunkten anlegen. Da sollen sie hin. Idealerweise lege ich pro Sensor einen Ordner an.

            Beispiel:

            const idJson = 'mqtt.0.xyz'; 
            const path = '0_userdata.0.Sensoren.Sensor';
            
            on(idJson, function(dp) {
                const obj = JSON.parse(dp.state.val);
                setState(path + '1.Temperatur', obj['DS18B20-1'].Temperature, true);
                setState(path + '2.Temperatur', obj['DS18B20-2'].Temperature, true);
                setState(path + '3.Temperatur', obj['DS18B20-3'].Temperature, true);
                setState(path + '4.Temperatur', obj['DS18B20-4'].Temperature, true);
                setState(path + '5.Temperatur', obj['DS18B20-5'].Temperature, true);
            });
            

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            bahnuhrB 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @c3b sagte: unter User.0 einen Ordner mit den Datenpunkten anlegen. Da sollen sie hin. Idealerweise lege ich pro Sensor einen Ordner an.

              Beispiel:

              const idJson = 'mqtt.0.xyz'; 
              const path = '0_userdata.0.Sensoren.Sensor';
              
              on(idJson, function(dp) {
                  const obj = JSON.parse(dp.state.val);
                  setState(path + '1.Temperatur', obj['DS18B20-1'].Temperature, true);
                  setState(path + '2.Temperatur', obj['DS18B20-2'].Temperature, true);
                  setState(path + '3.Temperatur', obj['DS18B20-3'].Temperature, true);
                  setState(path + '4.Temperatur', obj['DS18B20-4'].Temperature, true);
                  setState(path + '5.Temperatur', obj['DS18B20-5'].Temperature, true);
              });
              
              bahnuhrB Online
              bahnuhrB Online
              bahnuhr
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #6

              @paul53

              Paul,
              funktioniert so nicht.
              Der Temp kann im mqtt an unterschiedlicher Stelle auftauchen. Siehe mein Beitrag vorher.


              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
              Danke.
              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
              ScreenToGif :https://www.screentogif.com/downloads.html

              paul53P 1 Antwort Letzte Antwort
              1
              • bahnuhrB bahnuhr

                @paul53

                Paul,
                funktioniert so nicht.
                Der Temp kann im mqtt an unterschiedlicher Stelle auftauchen. Siehe mein Beitrag vorher.

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                @bahnuhr sagte: Der Temp kann im mqtt an unterschiedlicher Stelle auftauchen.

                Danke für die Info. Das war mir nicht bekannt.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                1
                • bahnuhrB bahnuhr

                  @c3b
                  Das ist nicht ganz so einfach.
                  Problem ist, dass Tasmota die einzelnen DS18B20 nicht immer an die gleiche Stelle tut.
                  Soll heißen, dein Sensor mit der ID3 C2AF6491BC1 ist manchmal an der Stelle 1; oder eben an einer anderen.

                  Aus diesem Grund musst die die ID beim Script mit beurteilen und dann bei Eindeutigkeit den DP zuweisen.
                  Anbei mein Script.
                  Bei Fragen gerne melden.

                  // Temperatur der Heizungsrohre
                      var Id, Temp, z;
                      on({id: "mqtt.2.Wemos_Heizung_Rohre.SENSOR", change: "ne"}, function(obj){
                          obj = JSON.parse(obj.state.val); 
                          for (z = 1; z <= 8; z++) {
                              Id = obj["DS18B20-"+z].Id;
                              Temp = obj["DS18B20-"+z].Temperature;
                              Temp_schreiben(Id,Temp);
                          }
                      var sdatum = formatDate(obj.Time,"DD.MM.YYYY");
                      var szeit = formatDate(obj.Time,"SS:mm");
                      //log ("Temperatur Heizungsrohre aktualisiert am " + sdatum + " um " + szeit + " Uhr");
                      setState("javascript.0.Geräte.Heizung.Rohre.Aenderung",(sdatum + " um " + szeit + " Uhr"));
                      }); 
                  
                      function Temp_schreiben(Id,Temp) {
                          if (Id == "0117B37A48FF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Kaltwasser", Temp);
                          if (Id == "0117B38548FF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Vorlauf", Temp);
                          if (Id == "0117B38B14FF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Umwaelz", Temp);
                          if (Id == "0417A2D62CFF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Ruecklauf", Temp);
                          if (Id == "0517C0E88FFF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Waermetauscher", Temp);
                          if (Id == "0517C0EA1CFF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Warmwasser", Temp);
                          if (Id == "0517C0EAF2FF") setState("javascript.0.Geräte.Heizung.Rohre.Fussbodenheizung_Ruecklauf", Temp);
                          if (Id == "0517C0EB6FFF") setState("javascript.0.Geräte.Heizung.Rohre.Fussbodenheizung_Vorlauf", Temp);
                      }
                  
                  C Offline
                  C Offline
                  c3b
                  schrieb am zuletzt editiert von
                  #8

                  @bahnuhr Hi

                  Lieben vielen Dank.
                  Ich were mich der Sache einmal annehmen.

                  Die Nacht ist gerettet. 👍 😱

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • C c3b

                    @bahnuhr Hi

                    Lieben vielen Dank.
                    Ich were mich der Sache einmal annehmen.

                    Die Nacht ist gerettet. 👍 😱

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #9

                    @c3b
                    Vorschlag, wenn es sich um Raumtemperaturen handelt:

                    // IDs anpassen!
                    const idJson = 'mqtt.0.xyz';
                    const path = '0_userdata.0.Sensoren.';
                    const rooms = {
                        "3C2AF6491BC1": 'Wohnzimmer',
                        "3C56F649A2C6": 'Kueche',
                        "3C8AF6493673": 'Schlafzimmer',
                        "3CADF649DB07": 'Bad',
                        "3CFBE3814518": 'Buero'
                    };
                    
                    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);
                        }
                    });
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    bahnuhrB 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @c3b
                      Vorschlag, wenn es sich um Raumtemperaturen handelt:

                      // IDs anpassen!
                      const idJson = 'mqtt.0.xyz';
                      const path = '0_userdata.0.Sensoren.';
                      const rooms = {
                          "3C2AF6491BC1": 'Wohnzimmer',
                          "3C56F649A2C6": 'Kueche',
                          "3C8AF6493673": 'Schlafzimmer',
                          "3CADF649DB07": 'Bad',
                          "3CFBE3814518": 'Buero'
                      };
                      
                      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);
                          }
                      });
                      
                      bahnuhrB Online
                      bahnuhrB Online
                      bahnuhr
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @paul53
                      Mein Script hat ihm nicht gefallen ;-)


                      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                      Danke.
                      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                      ScreenToGif :https://www.screentogif.com/downloads.html

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • bahnuhrB bahnuhr

                        @paul53
                        Mein Script hat ihm nicht gefallen ;-)

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #11

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

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        C 1 Antwort Letzte Antwort
                        1
                        • paul53P paul53

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

                          C Offline
                          C Offline
                          c3b
                          schrieb am zuletzt editiert von
                          #12

                          @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

                          paul53P 1 Antwort Letzte Antwort
                          0
                          • C c3b

                            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.
                            So wie ich das verstanden habe, handelt es sich hierbei um ein Json. Bezeichnet sind sie mit DS18B20-1. Ich habe schon Forenbeiträge gelesen, wobei das -Zeichen in z.B. einen _Zeichen geändert werden muss (Sonderzeichen nicht erlaubt)
                            Ich hätte die fünf Werte gerne in jeweils einen Datenpunkt geschrieben.
                            Jetzt bräuchte ich einmal einen Tip, wie ich das anstelle. Blockly? JS?
                            Gibt es irgendwo ein Beispiel-Skript?

                            LG aus dem Sauerland
                            Jörg

                            SegwayS Offline
                            SegwayS Offline
                            Segway
                            schrieb am zuletzt editiert von
                            #13

                            @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.

                            Gruß Dirk
                            Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                            C 1 Antwort Letzte Antwort
                            0
                            • SegwayS Segway

                              @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 Offline
                              C Offline
                              c3b
                              schrieb am zuletzt editiert von
                              #14

                              @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 Antwort Letzte Antwort
                              0
                              • bahnuhrB Online
                                bahnuhrB Online
                                bahnuhr
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von
                                #15

                                @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.


                                Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                                Danke.
                                gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                                ScreenToGif :https://www.screentogif.com/downloads.html

                                SegwayS 1 Antwort Letzte Antwort
                                0
                                • C c3b

                                  @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

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von paul53
                                  #16

                                  @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.

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  C 1 Antwort Letzte Antwort
                                  0
                                  • paul53P 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 Offline
                                    C Offline
                                    c3b
                                    schrieb am zuletzt editiert von
                                    #17

                                    @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 Antwort Letzte Antwort
                                    0
                                    • bahnuhrB bahnuhr

                                      @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.

                                      SegwayS Offline
                                      SegwayS Offline
                                      Segway
                                      schrieb am zuletzt editiert von
                                      #18

                                      @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?

                                      Gruß Dirk
                                      Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                                      bahnuhrB 1 Antwort Letzte Antwort
                                      0
                                      • SegwayS Segway

                                        @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?

                                        bahnuhrB Online
                                        bahnuhrB Online
                                        bahnuhr
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von
                                        #19

                                        @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.


                                        Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                                        Danke.
                                        gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                                        ScreenToGif :https://www.screentogif.com/downloads.html

                                        SegwayS 1 Antwort Letzte Antwort
                                        0
                                        • bahnuhrB bahnuhr

                                          @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.

                                          SegwayS Offline
                                          SegwayS Offline
                                          Segway
                                          schrieb am zuletzt editiert von
                                          #20

                                          @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.

                                          Gruß Dirk
                                          Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                                          bahnuhrB 1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          476

                                          Online

                                          32.8k

                                          Benutzer

                                          82.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe