Füllstand Zisterne

Hi, wie hast du das ganze umgesetzt? Mich interessiert die Umsetzung in der Shelly App und die Implementierung in HA.

Ich habe die Kombi mit dem Drucksensor / Shelly-UNI nach dieser Anleitung gebaut:

Hier ist der Schaltplan:

Dann habe ich einen Filter angelegt, um die Schwankungen bei der Messung auszugleichen.
sensor.regentonne_adc ist die Entität des Shelly UNI

sensor:
  # ------- Filter zur Glättung der Werte Regentonne -------  
  # https://www.home-assistant.io/integrations/filter/
  - platform: filter
    unique_id: regentonne_adc_filter
    name: "Regentonne adc gefiltert"
    entity_id: sensor.regentonne_adc
    filters:
    - filter: lowpass
      time_constant: 20
      precision: 2

image

Jetzt noch die Spannung in einen Füllstand umrechnen. Die entsprechenden Spannungswerte muss man einmal mit leerer und einmal mit voller Tonne ermitteln. Die Berechnung erfolgt über einen Helfer/Templatesensor:

{% set SPLEER = 1.92 %} {# Spannung Tonne leer #}
{% set SPVOLL = 8.34 - SPLEER %} {# Spannung Tonne voll #}
{% set SP     = states('sensor.regentonne_adc_gefiltert') | float %}
{% set FSNEU  = ((SP - SPLEER) * (100 / SPVOLL)) | round %}
{{ FSNEU }}

Hallo RKT 62,
ich habe ein Shelly Plus Uni als Voltmeter konfiguriert.
Schaltplan analog dem oben. Mit Drucksensor 4-20mA (2 Meter Sensor) und Widerstand 330 Ohm.
Bei 100% Zisterne habe ich 4,9V, leer 1,1V.

sensor:
  # ------- Filter zur Glättung der Werte Zisterne -------  
  # https://www.home-assistant.io/integrations/filter/
  - platform: filter
    unique_id: zisterne_adc_filter
    name: "zisterne adc gefiltert"
    entity_id: sensor.shellyplusuni_a0a3b3dc8900_voltmeter
    filters:
    - filter: lowpass
      time_constant: 20
      precision: 2
{% set SPLEER = 4.9 %} {# Spannung Zisterne leer #}
{% set SPVOLL = 1.1 - SPLEER %} {# Spannung Zisterne voll #}
{% set SP     = states('sensor.zisterne_adc_gefiltert') | float %}
{% set FSNEU  = ((SP - SPLEER) * (100 / SPVOLL)) | round %}
{{ FSNEU }}

In der Config.yaml kommt Fehler…

missed comma between flow collection entries (115:2)

 112 |     - filter: lowpass
 113 |       time_constant: 20
 114 |       precision: 2
 115 | {% set SPLEER = 4.9 %} {# Spannu ...
--------^
 116 | {% set SPVOLL = 1.1 - SPLEER %}  ...
 117 | {% set SP     = states('sensor.z ...

Gruß Guckmaster

:crayon:by HarryP: Codezeilen formatiert (bitte immer in </> einbinden)

Mach doch mal die “{” vor dem # weg:
image

dann sollte es passen.

1 „Gefällt mir“

Nur der obere Schnipsel kommt in die configuration.yaml.
Der untere Schnipsel gehört in einen Helfer Typ Template.
Abgesehen davon hast Du auch die Leer- und die Voll-Spannung verwechselt. Voll muss größer sein als Leer.

1 „Gefällt mir“

Danke,
die Leer- und die Voll-Spannung habe ich getauscht.
Den Helfer Typ Template muss ich noch erstellen.
Das ganze mache ich unter Einstellungen / Helfer / Helfer erstellen /
Es wird ein normaler Sensor, kein Binärer ?
Entitäts-ID: sensor.sensor_zisterne_adc

Ich bin mir unsicher, ob ich die korrekten ID´s vergeben habe…

Der Shelly Sesorname ist Füllstand Zisterne
Entitäts-ID: sensor.shellyplusuni_a0a3b3dc8900_voltmeter

Der Codeschnipsel in der config.yaml

sensor:
  # ------- Filter zur Glättung der Werte Zisterne -------  
  # https://www.home-assistant.io/integrations/filter/
  - platform: filter
    unique_id: zisterne_adc_filter
    name: "zisterne adc gefiltert"
    entity_id: sensor.shellyplusuni_a0a3b3dc8900_voltmeter
    filters:
    - filter: lowpass
      time_constant: 20
      precision: 2

Der Codeschnipsel für den Helfer…

{% set SPLEER = 1.8 %} {# Spannung Zisterne leer #}
{% set SPVOLL = 6.6 - SPLEER %} {# Spannung Zisterne voll #}
{% set SP     = states('sensor.zisterne_adc_gefiltert') | float %}
{% set FSNEU  = ((SP - SPLEER) * (100 / SPVOLL)) | round %}
{{ FSNEU }}

Gruß Guckmaster

:pencil2: by tarag: Code in vorformatierten Text </> formatiert.

Hi zusammen,

hier ist mal mein sensor…

sensor:
  - name: "Zisterne"
    unit_of_measurement: "L"
    state: >
      {% set voltage = states('sensor.zisterne_adc') | float(0) %}
      {{ ((voltage / 2.65) * 8000) | round(0) }}

Ich hab meine meiner Zisterne, 1,9V bei 0 L und 4,65V bei 8000 L, in der Uni hab ich den Offset von -1,9V gesetzt.

1 „Gefällt mir“

Hi

Ich hab das Ganze auch verbaut aber den Sensor in der 0-10V Variante genommen.

Gruß Thorsten

1 „Gefällt mir“

Bezüglich Glättung kann man auch den statistics sensor verwenden:

- platform: statistics
    name: "Zisterne_Liter"
    entity_id: sensor.zisterneliter
    state_characteristic: median
    max_age:
      minutes: 10
    precision: 2

Bei entity_id gibst du den namen deines adc Sensors an. ZBsp. sensor.zisterne_adc

1 „Gefällt mir“

zum glätten hab ich einen Filter verwendet

# Filter zum glätten der Zisternenmessung https://www.home-assistant.io/integrations/filter
sensor:
  - platform: filter
    name: "sensor.zisterne.mittelwert" #Name der ausgegebenen Entität
    entity_id: sensor.zisterne_shellyuni_adc #Name der Quell-Entität
    scan_interval: "00:00:01"  # Hier wird die Abfrage auf einmal pro Sekunde eingestellt
    filters:
      - filter: time_simple_moving_average # Art des Filter ,lowpass, outlier, range, und throttletime_throttletime_simple_moving_average
        window_size: "00:02:00"  #Zeitfenster, in dem Fall 2 min

An dem Video hätte ich auch Interesse :slight_smile:

Habt ihr diesen Betrag gesehen?

Ist bei mir schon seit ein paar Wochen in Betrieb und funktioniert bestens.

1 „Gefällt mir“

Ich würde sowas gerne für eine Regentonne machen. Eigentlich würde mich täglich ein update vollkommen ausreichen.

Gibt es auch Lösungen die Batteriegetrieben sind, da es mit dem Strom schwer werden könnte für einen ESP.

ESP und Batterie schließt sich meist fast aus, über DeepSleep wäre es zumindest ein Versuch wert.
Alternativ irgendwas mit Solarzelle und Akku.
Ich habe im Deckel der Regentonne so einen Ultraschallsensor, momentan aber nicht in Betrieb. Mir fehlt die Platine.

Jup eben, darum ja die Frage ob schon jemand eine batteriebetriebene Lösung ohne ESP kennt.
Akku + Solarzelle mhm weiß auch nicht ob sich das wirklich lohnt :wink:

LoraWan: Dragino LDDS20 LoRaWAN Abstandssensor

Servus,

Ich habe mir seit ein paar Tagen einen JSN-SR04T von AliExpr*** beatellt und kann einfach mittels Code ihn nicht einbinden. Bekomme immer eine ‘nan’ Messung in den ESP Logs.

Hardware:
1 x JSN-SR04T Sensor + Board
1 x Wemos D1 Mini Pro

Könnte hier jemand mal den Code posten mit dem sich der Sensor einbinden lässt?

Mit freundlichen Grüßen,
Emanuel

Hast du die suche schon benutzt?
Es gibt einen thread hier im Forum und bei esphome folgendes

Gruss

Servus,

Ich habe diesen Code bereits zig mal benutzt, auch andere 4 Code Snippets im Forum oder auf Github. Leider funktioniert keiner.

Sonst hätte ich auch nicht direkt nach dem Code gefragt…

Lg Emanuel

ich nutze den JSN-SR04T. Funktioniert super bei mir. Habe gleich einen input Number Helfer erstellt worüber ich den update_interval dynamisch steuern kann.

captive_portal:
button:
  - platform: restart
    id: Wasserstand_Zisterne_restart
    name: "Refresh Wasserstand"
# Script für update_interval dynamisch
script:
  - id: interval
    mode: restart
    then:
      - component.update: update_time_test
      - delay: !lambda "return id(update_interval).state * 1000;"
      - script.execute: interval

sensor:
  - platform: homeassistant
    id: update_interval
    entity_id: input_number.esp_zisterne_intervall_time
    on_value:
      then:
        - script.execute: interval
#Ende

  - platform: ultrasonic
    id: update_time_test
    trigger_pin: GPIO17
    echo_pin: GPIO33
    name: "Wasserstand_Zisterne"
    update_interval: never
    #update_interval: 5s
    #pulse_time: 30us
    unit_of_measurement: "%"
    #accuracy_decimals: 0
    filters:
      - filter_out: nan
      - lambda: return ((((x*100)-23.5)-(120-23.5))/(120-23.5))*-100;

  - platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 1800s
    entity_category: "diagnostic"
  - platform: copy # Reports the WiFi signal strength in %
    source_id: wifi_signal_db
    name: "WiFi Signal Percent"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "%"
    entity_category: "diagnostic"