RSS
TWITTER
Follow Me
Instagram

Seit schon über einem Jahr bin ich stolzer Besitzer von einem kleinen „Nano-Aquarium“. In einem etwa 20 Liter großen Becken halte ich eine glückliche Familie von Zwerggarnelen, die sich wohlfühlen und fleißig vermehren. Es macht mir sehr viel Spaß den Tieren bei ihren (zugegeben eher einfachen) Tätigkeiten zuzusehen und für sie zu sorgen. Allerdings ist das Aquarium natürlich auch mit viel Verantwortung verbunden, schließlich ist der Zustand der Garnelen von meinen äußeren Einflüssen auf das Becken abhängig. Wer nicht den Überblick über sein Aquarium behält, kann schnell einen Fehler machen und das Wasser kippt: Wäre es da nicht praktisch, das Aquarium digital zu überwachen? Zeit, in die IoT-Trickkiste zu greifen!

Garnelen im Aquarium
Schön anzusehen: Die Garnelen genießen ein ungestörtes Leben ohne etwas von ihrem Vernetzt sein mitzubekommen

Ein Aquarium lässt sich für kleines Geld digital überwachen und sogar ganz einfach in ein SmartHome integrieren. Ich möchte euch ein paar Möglichkeiten zeigen, wie ihr euer Aquarium smart macht!

Das Konzept

Eigentlich unterscheidet sich die Überwachung für unser smartes Aquarium kaum von einem Standardprojekt mit Arduino & co.: Wir haben Sensoren die ausgelesen werden und mit den Daten können wir am Ende machen, was wir wollen. Allerdings bietet es sich an, die Daten so komfortabel wie möglich zu nutzen. Wer ein Smarthome-System mit zum Beispiel HomeAssistant oder openHab sein Eigen nennt, der kann die Daten direkt in sein Setup integrieren und verwerten. Grundsätzlich geht das Ganze natürlich auch ohne Smarthome und wir können uns die Werte auch einfach auf einem Display anzeigen lassen.

HomeAssistant zeigt auf einen Blick das Wichtigste im Aquarium!

Ich werde für meine Implementationen ESPHome verwenden, da es uns das Schreiben einer Firmware stark vereinfacht und wir die Werte direkt nutzen können (zumindest bei Homeassistant). Allerdings lässt sich ESPHome auch so konfigurieren, dass es im Standalone-Betrieb unabhängig von einem Smarthome-, oder MQTT-Server arbeitet. Die Hauptsache: Wir müssen uns nicht mit nervigen Libraries herumschlagen! Das limitiert uns zwar auf ESP32 und ESP8266 basierte Boards, aber zu 99% wollen wir die Daten ja eh extern analysieren und brauchen WiFi.

ESPhome lässt sich hier herunterladen

ESPhome spuckt uns später eine Firmware aus, die wir einfach nurnoch auf unser Board laden müssen: Das geht nach dem ersten mal „von Hand“ flashen sogar per WiFi. Probiert es aus, die Inbetriebnahme geht kinderleicht. Ich verwende zum Testen einen M5 Atom Lite, also einen ESP32-Pico, aber ihr könnt auch jeden anderen ESP nutzen.

Der Temperatursensor: Wer braucht schon Thermometer?

Jedes Aquarium hat es an der Scheibe kleben: Ein Thermometer. Mit einem Blick hat man die Wassertemperatur schnell im Blick. Heizt der Heizstab noch? Ist mein Becken zu warm oder zu kalt? Mit einem Thermometer im Becken können wir problemlos die Temperatur abfragen.

Als Sensor kommt hierzu ein DS18B20 zum Einsatz, den man eigentlich aus jedem guten Arduino-Starter-Kit kennt. Diesen gibt es nämlich nicht nur in der „klassischen“ Bauweise die einem Transistor ähnelt, sondern auch in einer wasserdichten Hülle mit Metallkapsel am Ende. Je nachdem, wo man ihn kauft, ist er auch mit 2€ relativ erschwinglich und liefert brauchbare Messergebnisse. (Keine Sorge, die Materialliste ist wie immer am Ende des Beitrags!)

DS18b20 Temperatur-Sensor
Der DS18b20 lässt sich mit nur einer Ader für die Datenübertragung betreiben. Die wasserdichte Metallkapsel macht ihn optimal für’s Aquarium!
Der TDS-Sensor: Unnormales Verhalten feststellen

Bis jetzt gibt es keine günstige Möglichkeit, wichtige Parameter im Wasser, wie zum Beispiel den Nitratanteil zu messen. Allerdings kann uns ein TDS-Sensor über ein unvorhergesehenes Verhalten informieren. TDS steht für „total dissolved solids“ und misst die gelösten Feststoffe bei uns im Becken. Welche das genau sind können wir zwar nicht erfahren, aber so können wir Abweichungen vom Normalbetrieb detektieren. Für sinnvolle Messwerte braucht der TDS-Sensor einen Temperatursensor, da die Messergebnisse von der Wassertemperatur abhängig sind.

Die Sensorplatine des TDS-Sensors fürs Aquarium
Der TDS-Sensor besitzt neben der Messsonde noch eine kleine Platine mit der Schaltung zum Erfassen der Leitfähigkeit des Wassers

So ein Sensor kostet in etwa 13€ und lässt sich ebenfalls in unsere Firmware integrieren.

Anschluss der Sensoren an ein ESP-Board

Dieser Schritt ist für jeden wahrscheinlich ein bisschen unterschiedlich und hängt auch von dem verwendeten Board ab. Bei meinem M5 Atom Lite nutze ich den „Grove Connector“ Anschluss an dem ich 2 Pins für die Daten und 2 Pins für 5 Volt und Ground zur Verfügung habe. Dazu habe ich mir ein kleines Adapter gelötet, indem ich die Stromversorgung der beiden Sensoren verbunden habe.

Der DS18B20 benötigt für sichere Messergebnisse noch einen Pullup-Widerstand mit 4,7 kOhm, der parallel zwischen 5 Volt und dem Datenpin geschaltet wird. Ansonsten kann es zu Fehlmessungen kommen.

Der TDS-Sensor benötigt keine weiteren Komponenten und fungiert als analoger Sensor. Hier muss die ESP8266-Fraktion aufpassen: Es gibt nur einen Pin der analoge Werte lesen kann.

Ich jedenfalls verwende Pins 26 und 32, da diese den vorderen Anschluss belegen.

M5 Atom Lite mit espHome
Der Grove-Anschluss am M5 Atom lite macht ein einfaches Verwenden in verschiedenen Projekten möglich
Firmware konfigurieren und hochladen

Ist ESPHome eingerichtet, so muss lediglich diese Konfiguration kompiliert und auf das Board hochgeladen werden. Meine Konfiguration sendet alle 15 Minuten einen neuen Wert an HomeAssistant und befindet sich zwischendurch zum Energie sparen im Deepsleep. Möchte man das deaktivieren, so kommentiert einfach die Zeilen mit dem DeepSleep aus. Außerdem prüft das Programm, ob in HomeAssistant ein virtueller Schalter aktiviert wurde, der den DeepSleep unterbindet.

Leider findet man keine genauen Details, wieso die Formel für das Berechnen der TDS so aussieht, wie sie aussieht. Allerdings habe ich die Messwerte überprüft und sie scheinen zu stimmen.

esphome:
  name: Aquarium
  on_boot:
    priority: -100
    then:
     - script.execute: deep_sleep_evaluation # Prüft am Anfang, ob der ESP in Deep Sleep gehen soll

esp32:
  board: m5stack-atom
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "OTA-PASSWORT-HIER"

wifi:
  ssid: "SSID-HIER"
  password: "PASSWORT-HIER"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Fallback Hotspot"
    password: "PASSWORT-HIER"

captive_portal:

deep_sleep: # Deepsleep zum Stromsparen (1 Wert alle 15min)
  id: deep_sleep_enabled
  run_duration: 80s
  sleep_duration: 820s

dallas:
  - pin: GPIO26 # Temperatursensor an Pin 26
  
sensor:
  - platform: dallas
    address: 0x8b0121523a614028
    name: "Temperatur"
    id: "temp"
    filters:
      - offset: -1 # Die gemessene Temperatur war bei mir 1 Grad zu hoch, die wird abgezogen
      - filter_out: nan # Messfehler werden gefiltert
  
  - platform: adc # Hier wird die rohe Spannung des TDS Sensors gemessen
    pin: GPIO32
    name: "TDS raw"
    id: tds_raw_v
    update_interval: 10s
    unit_of_measurement: "V"
    icon: "mdi:water-percent"
    internal: true
    filters:
      - filter_out: nan # Messfehler werden gefiltert

# Temperatur kompensierte Spannung  
  - platform: template # Hier wird die Spannung mit der Temperatur verrechnet
    name: "TDS TCV"
    id: tds_tcv
    unit_of_measurement: 'V'
    accuracy_decimals: 3
    lambda: 'return ((id(tds_raw_v).state) / (1 + (0.02 * ((id(temp).state) - 25.0))));'
    update_interval: 10s
    filters:
      - filter_out: nan # Messfehler werden gefiltert
    internal: true
  
# Temperatur kompensierte TDS
  - platform: template
    name: "Aquarium TDS"
    id: aquarium_tds
    icon: "hass:water-opacity"
    unit_of_measurement: 'PPM'
    accuracy_decimals: 0    
    update_interval: 10s
    filters:
      - filter_out: nan # Messfehler werden gefiltert
      - median: # von 5 gemessenen Werten wird der Durchschnitt gebildet
          window_size: 5
          send_every: 5
          send_first_at: 5
    lambda: 'return (133.42*(id(tds_tcv).state)*(id(tds_tcv).state)*(id(tds_tcv).state) - 255.86*(id(tds_tcv).state)*(id(tds_tcv).state) + 857.39*(id(tds_tcv).state))*0.5;' # Verrechnung der Werte

binary_sensor: # Für Homeassistant wird geprüft ob der Deepsleep in der Benutzeroberfläche deaktiviert wurde
  - platform: homeassistant
    id: disable_deep_sleep
    entity_id: input_boolean.disable_deep_sleep

script: # Ist Deepsleep deaktiviert, so verzögert das Skript diesen immer weiter
  - id: deep_sleep_evaluation
    mode: queued
    then:
      - delay: 80s
      - if:
          condition:
            binary_sensor.is_on: disable_deep_sleep
          then:
            - logger.log: 'Deep Sleep Disabled'
            - deep_sleep.prevent: deep_sleep_enabled
          else:
            - deep_sleep.enter: deep_sleep_enabled
      - script.execute: deep_sleep_evaluation
Code-Sprache: YAML (yaml)

Ist die Firmware hochgeladen, so sollte sich der ESP in HomeAssistant melden und erfolgreich die ersten Werte übermitteln. (Wer kein HomeAssistant verwendet, der kann ESPhome auch als Standalone verwenden und die Werte per MQTT weiterreichen!)

Weitere Ideen: Steuerung von Filter, Licht und Heizung mit Relais

Natürlich ist bei Temperatur und TDS noch nicht schluss: Wer möchte kann seinen Filter, Licht und Heizung über Relais steuern lassen. Somit ist zum Beispiel eine Notabschaltung denkbar, wenn der Heizstab kaputt geht und die gemessene Temperatur zu hoch ist. Außerdem lässt sich natürlich das Licht bequem per App einstellen und der Filter bei Reinigungsarbeiten im Aquarium ausstellen, ohne hinter den Schrank krabbeln zu müssen.

Und wem das nicht genügt, der findet Servo-basierte Futterautomaten zum 3D-Drucken, pH-Sonden und Durchflussmesser im Internet.

Ergebnis und Nachwort
TDS- und Temperatursensor im Aquarium
Fast unsichtbar: Der Temperatursensor (links) und der TDS-Sensor (rechts) im Aquarium

Wer sich gerne um die Tiere in seinem Aquarium kümmert und gerne mit ESP, Smarthome und Co. bastelt, kommt an diesem Projekt einfach nicht vorbei. Nicht nur sind die Statistiken interessant zu beobachten, sondern geben auch aus der Ferne eine Aussage über den Zustand des Aquariums – egal ob im Urlaub oder auf der Arbeit. Ein schneller Blick genügt und man weiß mehr.

Hier noch die Materialliste:

Was?Wo?
ESP32-Boardhttps://amzn.to/3TGvry1 *
DS18b20 Temperatursensorhttps://amzn.to/3tqkJRT *
4,7 kOhm Widerstandhttps://amzn.to/3UZQ7SZ *
TDS-Sensorhttps://amzn.to/3Ewyuoj *

Mit * gekennzeichnete Links sind Affiliate-Links. Solltest du ein Produkt kaufen, erhalte ich eine Provision; der Verkaufspreis bleibt für dich gleich. Mehr dazu findest du beim Datenschutz.

RSS
TWITTER
Follow Me
Instagram

Schreibe einen Kommentar

Was meinst du dazu? Teil deine Meinung mit!