Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Tasmota - MQTT - CO2-Sensordaten

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Tasmota - MQTT - CO2-Sensordaten

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

      Hallo

      Ich möchte den MH-Z19B CO2-Sensor der an einem ESP32 mit Tasmota hängt in ioBroker auswerten.

      Ich habe den generischen mqtt Server und den Sonoff-Adapter installiert.

      Wenn ich den mqtt-Server in Tasmota konfiguriere erhalte ich folgende Datenpunkte (also gar keine):

      1059d625-040c-4989-a4be-35bc34833d83-image.png

      Mit dem generischen mqtt-Server sieht es leicht besser aus:

      c9f77491-fdea-440e-911f-1566fec92ae6-image.png ¨

      Der einzig halbwegs sinnvolle Datenpunkt ist dann dieser hier der einfach JSON als Value hat:

      {
        "sn": {
          "Time": "1970-01-01T00:14:24",
          "MHZ19B": {
            "Model": "B",
            "CarbonDioxide": 400,
            "Temperature": 26
          },
          "TempUnit": "C"
        },
        "ver": 1
      }
      

      Das bringt mir natürlich nicht viel, ich will ja die History-Funktion haben und den Wert in der Vis anzeigen.

      Extra dafür ein Skript haben dass das JSON auspackt und einen separaten Wert abspeichert ist mir zu unsauber, das möchte ich nicht.

      Kann Tasmota also nicht die Werte der Sensoren sauber als einzelne Datenpunkte an ioBroker liefern?

      Muss ich ESPEasy nehmen? Da geht das nämlich.

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

        @chrisprefect Nein - aber das JSON ist doch völlig OK. Erstell Dir einen Alias, der Dir den gewünschten Wert extrahiert.

        Hier ein Beispiel, wie man so einen Alias anlegt und die gewünschte Eigenschaft extrahiert: https://forum.iobroker.net/post/980575

        ChrisPrefect 1 Reply Last reply Reply Quote 1
        • ChrisPrefect
          ChrisPrefect @mickym last edited by

          @mickym Uff, ok, dann muss ich ESPEasy installieren. Aliase finde ich extrem chaotisch und unschön und Werte extrahieren will ich auch nicht müssen, das ist wartungsintensiv und fehleranfällig.

          Merci für die Antwort!

          BananaJoe bahnuhr 2 Replies Last reply Reply Quote 0
          • BananaJoe
            BananaJoe Most Active @ChrisPrefect last edited by BananaJoe

            @chrisprefect Gib dich nicht auf! Lerne JSON! JSON ist dein Freund!
            Der Vorteil von JSON ist ja gerade das in einem Rutsch mehrere Werte gesendet werden können, die zudem alle zeitgleich ankommen. Das man Ziel die Werte wieder auseinander bauen muss ist immer noch schneller als jeden Wert einzeln abzufragen. Ich nutze auch keine Aliase, Blockly kann das auch. Oder JavaScript.

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

              @chrisprefect
              Sind doch auch nur ein paar Zeilen.
              Und schon hast du die Werte in deine eigenen DP und kannst damit weiterarbeiten.

              // Wemos-Sauna hat sich geändert           IP = 192.168.243.184
                  on({id: "mqtt.2.Wemos_Sauna_Klima.SENSOR"}, function(obj) {  
                      obj = JSON.parse(obj.state.val); 
                      if (stext.indexOf("BME280") != -1) { setState("javascript.0.Geräte.Wemos.Wemos-Sauna.BME280_Temperatur", obj.BME280.Temperature); };
                      if (stext.indexOf("BME280") != -1) { setState("javascript.0.Geräte.Wemos.Wemos-Sauna.BME280_Taupunkt", obj.BME280.DewPoint); };
                      if (stext.indexOf("BME280") != -1) { setState("javascript.0.Geräte.Wemos.Wemos-Sauna.BME280_Luftdruck", obj.BME280.SeaPressure); };
                      if (stext.indexOf("BME280") != -1) { setState("javascript.0.Geräte.Wemos.Wemos-Sauna.BME280_Luftfeuchtigkeit", obj.BME280.Humidity); };
                      if (stext.indexOf("BH1750") != -1) { setState("javascript.0.Geräte.Wemos.Wemos-Sauna.BH1750_Helligkeit", obj.BH1750.Illuminance); };
                      if (stext.indexOf("S8") != -1) { setState("javascript.0.Geräte.Wemos.Wemos-Sauna.CO2", obj.S8.CarbonDioxide); };
                  });
              
              ChrisPrefect 1 Reply Last reply Reply Quote 1
              • ChrisPrefect
                ChrisPrefect @bahnuhr last edited by

                @bahnuhr Ja, geht natürlich alles 🙂 Aber ist halt alles sehr unschön. Ich habe dann die Werte nicht da wo ich sie erwarte, also z.B. nicht im mqtt-Ordner, sondern irgendwo anders zwischen all den anderen javascript-Variablen. Und ich muss mich daran erinnern, wenn ich irgendwas mit dem Gerät oder den Werten davon mache. Das wird in einem Jahr sicher wieder mühsam, wenn irgendwas nicht geht und ich mich erst erinnern muss, dass da irgendwo ein Skript rumliegt, dass die Werte manuell aus dem JSON extrahiert.

                Dann doch lieber sauber mit ESPEasy. Schade, dass Tasmota und der Sonoff-Adapter das beide nicht iobroker-Kompatibel im Objektbaum speichern.

                ? 1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @ChrisPrefect last edited by

                  @chrisprefect Ich habe etwas ähnliches wie Du oben hier am laufen und er legt mir für jeden DP einen einzelnen Wert an. Verstehe ich richtig, dass Du sowas Dir wünschst?

                  Bildschirmfoto 2023-09-23 um 06.53.51.png

                  Oder doch was anderes?

                  Danke

                  ChrisPrefect 1 Reply Last reply Reply Quote 1
                  • ChrisPrefect
                    ChrisPrefect @Guest last edited by

                    @alinaclg Hi! Ja, genau so sollte es aussehen. Kommt das aus Tasmota raus? Ev. kann man Tasmota ja dazu bringen die Daten korrekt per MQTT abzuliefern und nicht einfach nur als JSON-Blob.

                    Codierknecht 1 Reply Last reply Reply Quote 0
                    • Codierknecht
                      Codierknecht Developer Most Active @ChrisPrefect last edited by

                      @chrisprefect
                      Du hast 2 Möglichkeiten:

                      1. Du verwendest statt Mqtt den Sonoff-Adapter für Tasmota-betriebene Geräte
                        Der fummelt das automatisch für Dich auseinander.

                      2. Du verwendest den Mqtt-Adapter und legst Dir unter alias.0 eine passende Struktur an.
                        Aus dem JSON kannst Du über die Konvertierungsfunktionen den jeweils passenden Wert in den Alias übernehmen.
                        Ist halt etwas Arbeit.

                      Möglichkeit 3 habe ich hier mal unterschlagen.
                      Das Ganze per Blockly/JS auseinanderzunehmen und unter 0_userdata.0 abzulegen ist IMHO zu viel Aufwand.

                      ChrisPrefect 1 Reply Last reply Reply Quote 0
                      • ChrisPrefect
                        ChrisPrefect @Codierknecht last edited by ChrisPrefect

                        @codierknecht hmm also 1 klappt bei mir nicht, da kommen eben keine Werte aus dem Tasmota-Adapert. Screenshot im ersten Post. Nummer 2 und 3 will ich verhindern, das ist sehr unschön, wartungsintensiv und fehleranfällig.

                        Wal Codierknecht 2 Replies Last reply Reply Quote 0
                        • Wal
                          Wal Developer @ChrisPrefect last edited by

                          @chrisprefect ,
                          zeig mal deine Einstellungen vom Sonoff-Adapter als Screenshot und ein Log von der Tasmotakonsole im Code-Tag .

                          1 Reply Last reply Reply Quote 1
                          • Codierknecht
                            Codierknecht Developer Most Active @ChrisPrefect last edited by

                            @chrisprefect sagte in Tasmota - MQTT - CO2-Sensordaten:

                            Nummer 2 ... will ich verhindern, das ist sehr unschön, wartungsintensiv und fehleranfällig

                            Das ist einmalig etwas Arbeit, aber danach stabil.

                            Meine Wasseruhr muss über Mqtt laufen, da das nicht mit Tasmota läuft.
                            Einmal den Alias angelegt und läuft.

                            Aber wie @Wal schon schreibt: Zeig mal Deine Einstellungen.

                            Wal Homoran 2 Replies Last reply Reply Quote 0
                            • Wal
                              Wal Developer @Codierknecht last edited by Wal

                              @codierknecht ,
                              wenn ich mir die MQTT-Objekte ansehe, wird bei @ChrisPrefect nur der Haken bei aut. erz. /tele/sensor Objekte im Sonoff-Adapter fehlen.

                              edit: habe in die Glaskugel geschaut. 😉

                              ChrisPrefect 1 Reply Last reply Reply Quote 1
                              • Homoran
                                Homoran Global Moderator Administrators @Codierknecht last edited by

                                @codierknecht sagte in Tasmota - MQTT - CO2-Sensordaten:

                                @chrisprefect sagte in Tasmota - MQTT - CO2-Sensordaten:

                                Nummer 2 ... will ich verhindern, das ist sehr unschön, wartungsintensiv und fehleranfällig

                                Das ist einmalig etwas Arbeit, aber danach stabil.

                                das gilt auch für 3, auch wenn du es nicht magst, mag es u.U. sogar einfacher sein, wenn man bei mehreren Werten die Blöcke "mal eben" kopiert und anpasst.

                                1 Reply Last reply Reply Quote 0
                                • ChrisPrefect
                                  ChrisPrefect @Wal last edited by

                                  @wal JAAA!! 😄

                                  Danke! Genau das wars!

                                  Ich konnte mir nicht vorstellen, dass der Adapter das nicht kann. Dass man das separat aktivieren muss, hätte ich nicht erwartet.

                                  Zum Glück brauche ich so keine umständliche Aliase oder Skripte. Geht doch 😉

                                  2919ce2d-147f-4f6d-8a54-2651ca6f11c6-image.png

                                  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

                                  816
                                  Online

                                  32.0k
                                  Users

                                  80.6k
                                  Topics

                                  1.3m
                                  Posts

                                  8
                                  15
                                  563
                                  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