Salzstand einer Wasserenhärtungsanalge mit Wägezellen und einem ESP 32 überwachen in Home Assistant

Hallo,

um den Salzstand in meiner Wasserenthärtungsanlage zu überwachen, habe ich unter dem Salzbehälter Wägezellen verbaut, die ich mit einem ESP32 auslese und das Gewicht an Home Assistant übermittle. Hier der mechanische Aufbau:

Zwei MDF Platten mit dazwischen montierten Wägezellen:

Die Kabel wurden natürlich entsprechend mit Klebeband in den Einfräsungen gesichert und die restliche Hardware verschraubt / verklebt.

Auf dieser “Grundplatte” steht dann der Salzbehälter:

Als Hardware habe ich folgendes der Firma M5Stack verwendet:

  • ATOMS3 Dev Kit w/ 0.85-inch Screen SKU: C123
  • Scale Kit with Weight Unit SKU: K121

Den Code für den AtomS3 habe ich mir von Chat GPT schreiben lassen.

Jetzt, wo die Daten in Home Assistant vorliegen, lassen sich damit Füllstände anzeigen oder Benachrichtigungen erstellen.

So sieht das dann in Home Assistant aus:

Screenshot 2024-11-16 152240

Frank

Hier noch der Code dazu:

esphome:
  name: enthartungsanlage
  friendly_name: Enthärtungsanlage

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Logging aktivieren
logger:  

# Home Assistant API
api:
  encryption:
    key: "hgq8XFiqq16/n12KKayzHrb47M3tCBm1e4xvjqMxFdY="

# OTA-Konfiguration ohne Passwort
ota:
  platform: esphome
  password: "ad3dcbdc33d0fcb6573077f9d352295c"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Fallback-Hotspot aktivieren, falls keine Verbindung zum WLAN besteht
  ap:
    ssid: "Enthartungsanlage"
    password: "Ag2wXExzrVtl"

captive_portal:

sensor:
  - platform: hx711
    name: "Gewicht"
    id: gewicht_sensor
    dout_pin: GPIO1      # DOUT-Pin auf G2
    clk_pin: GPIO2       # CLK-Pin auf G1
    gain: 128
    update_interval: 2s

    accuracy_decimals: 2
    filters:
      - calibrate_linear:
          - -1300000 -> 0       # Kalibrierung: -1300000 entspricht 0 kg
          - 1000000 -> 85     # Kalibrierung: 1000000 entspricht 85 kg
      - sliding_window_moving_average:
          window_size: 15
          send_every: 5
      - lambda: |-
          return x;  // Negative Werte zulassen
    on_value:
      then:
        - lambda: |-
            // Kontrollausgabe zur Überprüfung der Werte
            ESP_LOGD("Gewichtssensor", "Gemessene Gewicht: %.2f kg", id(gewicht_sensor).state);

Viele Grüße

Frank

:crayon:by HarryP: Zusammenführung Mehrfachpost (wg. eurem User)

Die Idee ist super aber der Aufwand relativ Groß und teuer!?

Ich messe meinen Salzstand mit einem VL53L0X V2 Time-of-Flight Laser Distance Sensor .

Funktioniert super.

Hallo,

den Beitrag hatte ich gelesen. Top gemacht!

Ich wollte es einmal mit den Wägezellen ausprobieren: So brauchte ich den Salzbehälter nur auf die Grundplatte stellen.

Die Kosten liegen bei ca. 16€ für die Wägezellen und ca. 19€ für den AtomS3
(das geht auch günstiger, aber mir gefällt, das diese Komponenten schon in einem Gehäuse fertig zum montieren kommen.

Die MDF Platten, etwas schwarze Farbe und den Rest hatte ich noch liegen.

Das war dann ein Nachmittag in meiner “Werkstatt” dann war das alles fertig.

Erstmal funktioniert alles - mal schauen, ob das auch über Monate / Jahre sauber läuft.

OK dachte die Wäge Zellen sind teurer Post mal den Typ der Teile bitte.
Oder link

Gruss

Hier der Link zum Produkt:
(Das gibt es aber auch bei deutschen Lieferanten - einfach mal nach M5Stack K121 suchen)

Und den Controller habe ich verbaut:
(Ein einfacherer hätte es auch getan - das Display brauche ich nicht)

Beide lassen sich über ein beiliegendes Kabel mit “Click” miteinander verbinden - kein Löten notwendig.

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

geiles projekt
frage welche min… gewicht wird zuverlässig erkannt
hat der luftdruck zb auswirkungen usw

das mit der ai hatte ich mir schon mal überlegt
wie bist du da ran gegangen - wie formuliert zb

danke

Die Wägezellen geben einen Wert aus, der entsprechend umgerechnet wird.

Hier zu sehen: Es werden alle 2 Sekunden die Werte ausgelesen - alle 5 Werte wird das Ergebnis in kg an Home Assistant übermittelt.

Die Wägezellen sind grundsätzlich sehr genau.

Screenshot 2024-11-16 204204

Chat GPT habe ich einfach die Aufgabe gegeben ein Programm für den ESP32 zu schreiben, das die entsprechenden Anforderungen hat.
Es gab ein paar Fehlermeldungen, die ich dann wieder bei Chat GPT eingegeben habe. Der Code wurde dann entsprechend angepasst.

Es gab ein paar Schwierigkeiten den passenden Port für das Auslesen der Wägezellen zu finden. Ich habe dann ein Bild mit der Pinbelegung hochgeladen. Chat GPT hat das erkannt und den Code entsprechend angepasst.

Soweit ich das erkennen kann, hat der Luftdruck keine Auswirkungen auf das Messergebnis. Vermutlich hat aber die Temperatur einen Einfluss. In dem Raum in dem der Salzbehälter steht, ist die Temperatur relativ konstant. Außerdem kommt es mir hier auch nicht so darauf an. Ein voller Sack Salz hat 25kg - da kommt es nicht auf einen kg an.

Aber es ist schon sehr genau: Hier ist zu sehen, wie sich das Gewicht verändert, wenn sich die Anlage regeneriert: