Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. Skripten / Logik
  4. TDS Sensor / EC-Messen Hilfe gesucht

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

TDS Sensor / EC-Messen Hilfe gesucht

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
blockly
3 Beiträge 2 Kommentatoren 675 Aufrufe 2 Watching
  • Ä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.
  • B Offline
    B Offline
    bimmi
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen!

    Ich wollte mal fragen, ob jemand schonmal einen EC Sensor über einen ESP mit blockly ausgewertet hat?

    Ich habe diesen Sensor gekauft: https://www.dfrobot.com/product-1662.html

    e923cb8d-2c07-4641-9c3f-c47cc9b67f98-image.png

    Der hängt jetzt am analog input eines esp32 und ich bekomme auch die Analogwerte angezeigt. Als nächstes brauch ich eine Kalibrierlösung. Jedoch bis die da ist, wollte ich um etwas Hilfe fragen bezüglich der Skripterstellung dahinter.

    Wie ich die Analogwerte umrechne ist mir bewusst (funktioniert im Prinzip wie ein Feuchtigkeitssensor) jedoch mein Problem ist die Temperaturabhängingkeit. Sprich man müsste das ganze wohl immer mit der Temperatur der Lösung umrechnen. Dazu habe ich das hier gefunden: https://wiki.dfrobot.com/Gravity__Analog_TDS_Sensor___Meter_For_Arduino_SKU__SEN0244 jedoch würde ich das ganze gerne über einen esp32 mit Tasmota nutzen, da ich auch noch Relais und andere Sensoren dran habe. Temperatursensor, Feuchtigkeitssensor, Schwimmer usw...

    Da der esp32 einen nicht so genauen ADC hat, habe ich mir bereits auch die ADC Module bestellt, damit man höher auflösen kann.

    Vielleicht bekomme ich ja hier etwas Unterstützung für mein Projekt.

    Gruß Bimmi

    Gruß Bimmi

    iobroker in einer Proxmox Umgebung auf einem ausrangierten DELL OptiPlex 3080 24GB i5 in der VM auf SSD. Nutze den slaeh zigbee Router mit Tür- und Temperatursensoren von Aqara, viele Tasmota Devices, Unifi AP, Sprinklecontrol, günstige E-INK Displays, Adguard und noch vieles mehr 😬

    E 1 Antwort Letzte Antwort
    0
    • B bimmi

      Hallo zusammen!

      Ich wollte mal fragen, ob jemand schonmal einen EC Sensor über einen ESP mit blockly ausgewertet hat?

      Ich habe diesen Sensor gekauft: https://www.dfrobot.com/product-1662.html

      e923cb8d-2c07-4641-9c3f-c47cc9b67f98-image.png

      Der hängt jetzt am analog input eines esp32 und ich bekomme auch die Analogwerte angezeigt. Als nächstes brauch ich eine Kalibrierlösung. Jedoch bis die da ist, wollte ich um etwas Hilfe fragen bezüglich der Skripterstellung dahinter.

      Wie ich die Analogwerte umrechne ist mir bewusst (funktioniert im Prinzip wie ein Feuchtigkeitssensor) jedoch mein Problem ist die Temperaturabhängingkeit. Sprich man müsste das ganze wohl immer mit der Temperatur der Lösung umrechnen. Dazu habe ich das hier gefunden: https://wiki.dfrobot.com/Gravity__Analog_TDS_Sensor___Meter_For_Arduino_SKU__SEN0244 jedoch würde ich das ganze gerne über einen esp32 mit Tasmota nutzen, da ich auch noch Relais und andere Sensoren dran habe. Temperatursensor, Feuchtigkeitssensor, Schwimmer usw...

      Da der esp32 einen nicht so genauen ADC hat, habe ich mir bereits auch die ADC Module bestellt, damit man höher auflösen kann.

      Vielleicht bekomme ich ja hier etwas Unterstützung für mein Projekt.

      Gruß Bimmi

      E Offline
      E Offline
      el-lutschi
      schrieb am zuletzt editiert von
      #2

      @bimmi Hallo, bist du hier weiter gekommen? Ich bekomme in Tasmota über einen Analog Input Daten vom TDS Sensor. Leider schaffe ich es nicht diese sinnvoll zu verwerten. Alles was ich an Berechnungen im Netz gefunden habe ergibt bei mir leider kein richtiges Ergebnis. Kannst du mir vielleicht weiterhelfen?

      1 Antwort Letzte Antwort
      0
      • E Offline
        E Offline
        el-lutschi
        schrieb am zuletzt editiert von
        #3

        Nach einigen Stunden basteln habe ich es nun mit einem berry script geschafft den richtigen TDS und EC Wert zu berechnen.

        Die Grundlage für mein Skript habe ich hier gefunden:
        https://github.com/arendst/Tasmota/discussions/18046

        Dieses habe ich dann noch angepasst, damit man die beiden Werte über MQTT in den iobroker bekommt.

        Hier das tasmota berry script:

        #-
        - Analog input driver written in Berry
        -
        - Support for TDS (Total Dissolved Solids) Meter Sensor_CQRSENTDS01
        - http://www.cqrobot.wiki/index.php/TDS_(Total_Dissolved_Solids)_Meter_Sensor_SKU:_CQRSENTDS01
        - Based on TMP117-driver driver by sfromis and TomsTek (https://github.com/TomsTek/tasmota-berry-TMP117-driver)
        -#
        
        class CQRSENTDS01: Driver
         static sensor_name = "CQRSENTDS01"  # sensor name
         static tds_label  = "TDS"           # label for temperature in language of preference
        
         var tds            # global TDS value in PPM
         var comp_temp      # global temperature compensation
         var voltage        # global TDS sensor voltage
         var prev_voltage
         var calib_offset
         var percentage_offset
         var ec
        
         def init()
           # initialize globals
           self.tds = 0
           self.comp_temp = 25.0
           self.voltage = 1.0
           self.prev_voltage = self.voltage
           self.ec = 0.00
           self.calib_offset = 176    # Minimale, angezeigte Spannung wenn Sensor nicht im Wasser
           self.percentage_offset = 0.96    # Abweichung des PPM Wertes. Bsp.: Anzeige 4% zu hoch -> 0.96
           # create rules to trigger when TDS sensor voltage updates and temp sensor updates
           tasmota.add_rule("ANALOG#A5", /value -> self.trigger_voltage(value))    # TDS-Sensor festlegen
           tasmota.add_rule("DS18B20-1#Temperature", /value -> self.trigger_temp(value))    # Temp-Sensor festlegen
         end
        
         def trigger_voltage(voltage)
           if voltage != nil
             self.voltage = voltage - self.calib_offset
           end
           # print("voltage:", voltage)
         end
        
         def trigger_temp(temp)
           if temp != nil
             if tasmota.get_option(8) == 1
               self.comp_temp = 1.0 + 0.02 * (((temp - 32.0) * 0.5555) - 25.0)
             else
               self.comp_temp = 1.0 + 0.02 * (temp - 25.0)
             end
           end
           # print("temp:", temp, "comp_temp:", self.comp_temp)
         end
        
         #- calculate TDS & EC value from voltage and temp -#
         def calc_tds()
           # to reduce cpu usage, only perform calculation if voltage changes
           if self.prev_voltage != self.voltage
             self.prev_voltage = self.voltage
             var comp_voltage = (self.voltage / 1000.0) / self.comp_temp
             self.tds = (((133.42 * comp_voltage * comp_voltage * comp_voltage - 255.86 * comp_voltage * comp_voltage + 857.39 * comp_voltage) * 0.5) * self.percentage_offset)
             self.ec = (self.tds * 2) / 1000
             # print("comp_temp:", self.comp_temp, ", comp_voltage:", comp_voltage, ", tds:", self.tds, ", EC:", self.ec)
           end
         end
        
         #- trigger a read every second -#
         def every_second()
           self.calc_tds()
         end
        
         #- display sensor TDS & EC value in the web UI -#
         def web_sensor()
           import string
           if ! self.tds
             self.tds = 0
             self.ec = 0
           end
           var msg = string.format("{s}%s %s{m}%s PPM{e}", "TDS-Sensor", "", self.tds)
           var msg_ec = string.format("{s}%s %s{m}%s EC{e}", "EC-Sensor", "", self.ec)
           tasmota.web_send_decimal(msg)
           tasmota.web_send_decimal(msg_ec)
         end
        
         #- add sensor TDS & EC value to teleperiod -#
         def json_append()
           import string
           if ! self.tds
             self.tds = 0
             self.ec = 0
           end
           var msg = string.format(',"%s":{"%s":%s}', "TDS-Sensor", "TDS", self.tds)
           var msg_ec = string.format(',"%s":{"%s":%s}', "EC-Sensor", "EC", self.ec)
           tasmota.response_append(msg)
           tasmota.response_append(msg_ec)
         end
        
        end
        cqrsentds01 = CQRSENTDS01()
        tasmota.add_driver(cqrsentds01)
        

        Viele Grüsse
        Chris

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        684

        Online

        32.4k

        Benutzer

        81.5k

        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