Steuerung der Filteranlage eines Schwimmingpools
mit Solarheizung und Sonderfunktionen
Die Idee
Nachdem eines Tages die Dichtung unseres Pool Filters etwas überlastet war, hatten wir ca. 200l Wasser im Keller. Da auch dabei die Schaltuhr der Pumpe unter Wasser gesetzt wurde, flog auch die Sicherung und die Pumpe stand, der Druck war weg und somit auch kein weiteres Wasser.
Idee 1, wir brauchen einen Wassersensor um Wassereinbruch schneller festzustellen, aber wie warnen
Idee 2, per E-Mail, besser noch auch per SMS, womit
Idee 3, das sollte doch mit einem Raspberry PI möglich sein.
Kurze Internetrecherche und schon waren Beispielscripte, für Wassersensor, E-Mail Versand und SMS Versand gefunden.
Idee 4, allein dafür ist der Pi zu schade, wenn schon denn schon, dann bitte auch die Pumpe zeitgesteuert mit schalten, das Ventil für die Solarheizung gleich mit. Dazu muss die Wassertemperatur und die Wassertemperatur welche aus der Solarheizung kommt gemessen werden, bietet sich an via DS1820, welche per 1Wire Interface des Pi direkt angeschlossen werden können. Ein kleines 16x2 LCD Display für die Anzeige von Status und Temperaturen muss dazu, sowie die Möglichkeit zu Wartungsarbeiten (Grobfilter säubern, Rückspülen) die Pumpe manuell schalten zu können.
Schön wäre dann natürlich noch ein Webinterface mit dem man den Status (Pumpe ein/aus, Heizung ein/aus, Temperaturen etc.) abfragen aber auch z.B. Start und Stoppzeiten der Pumpe bzw. Solltemperatur des Wassers einstellen kann.
Durch das Webinterface bietet sich PHP als Programmiersprache an.
Also weitere Internetrecherche und auch ausreichend Beispiele gefunden.
Besonderen Dank an dieser Stelle Herrn Prof. Jürgen Plate für seine Artikel zum Pi unter www.netzmafia.de sowie seine weitere Hilfe.
Installation Raspberry Pi
Ich möchte an dieser Stelle nur stichpunktartig auf die einzelnen Schritte eingehen. Details sind jederzeit im Internet zu finden
- Image für den Pi holen und auf SD karte kopieren. (ich verwende aktuell Rasbian, also Debian jessie in der lite Version, da keine GUI benötigt wird)
- mit "rasbi-config"
- 1 Expand Filesystem
- 2 neues Passwort für User PI setzen
- 3 boot to Textconsole mit Passwort
- 5 Locale setzen
- I1 locale de_DE.UTF-8 default de_DE.UTF-8
- I2 Timezone Europe Berlin oder wo ihr auch seid
- I3 keyboard Layout, default 105 PC int ist ok
- 9 Advanced options
- A2 neuer Hostname optional, gibt aber Sinn vor allem wenn mehrere Pi im Einsatz
- A3 Memory split, 16k for GPU ist OK im Textmode
- A4 enable SSH
- A9 enable 1Wire (für DS1820 temperatur Sensoren)
- in /etc/network/interfaces eine feste IP vergeben
- auto eth0
- iface eth0 inet static
- address <your IP address i.e. 192.168.1.23>
- netmask <your netmask i.e. 255.255.255.0>
- gateway <your gateway i.e. 192.168.1.1>
- optional network <your network i.e. 192.168.1.0>
- optional broadcast <your broadcast i.e. 192.168.1.255>
- optional dns-nameservers <your nameserver(s) i.e. 192.168.1.1>
- edit /etc/hosts correct 127.0.0.1 <your_server_name> to <your_ip_address i.e 192.168.1.23> <your_server_name.your_domain.your_tld i.e. bad.hugo.de> <your_server_name i.e bad>
- mit dpkg-reconfigure dash die bash Shell einstellen
- für den DS1820 noch Einträge in die /boot/config.txt und zwar den von raspi-config angelegten Eintrag ergänzen zu "dtoverlay=w1-gpio-pullup,gpiopin=4,extpullup=on"
- mit "apt-get update && apt-get upgrade" alles aktualisieren
- folgende Pakte mit apt-get install installieren
- vim-nox - verbesserter vi, der normale macht unter Debian Probleme, ihr könnt natürlich auch jeden anderen Texteditor nehmen, z.B. nano
- ntp und ntpdate
- apache2
- php5
- php5-xcache (optional)
- mariadb-server und mariadb-client
- phpmyadmin (optioal)
Kopiere (mv) /var/www/html/index.html -> index.html.org
Download der Programme für die Steuerung von ...
Entpacke alles nach /var/www/html/
Erstelle Datenbank mit create_db.sql
Schließe die restlich Hardware an, wie Temperatursensoren, LCD Display, Relais, Wassersensor, Wartungsschalter an, siehe ...
Passe Cron mit crontab -e nach Vorlage crontab.txt
Nach einem Neustart sollte alles funktionieren.
Programmbeschreibung
Die einzelnen Module:
- ALL_constats.php - Hier sind alle verwendete Konstanten für GPIOs, Tabellenfelder etc. zusammengefasst
- init.php - initialisiert die Schnittstellen etc. Aufruf via Cron @reboot
- index.php - Anzeige von Status im Webinterface
- setup.php - Eingabe der Vorgaben über das Webinterface, Aufruf aus index.php
- vorgaben.php - ausgelagerte Teile von setup.php
- DS1820_Temp_in.php - übernimmt die komplette Steuerung, Aufruf via Cron jede Minute
- PI_Library.php - Funktionen zur Steuerung der GPIOs, Teile von Prof. Jürgen Plate Netzmafia
- PI_LCD_Library.php - Funktionen zur Ansteuerung des 2 x 16 LCD Display mit Anregungen aus verschiedenen Artikeln von mikrokontroller.net und hd44780_test.py von tutorials-raspberrypi.de
- PI_DS1820_Library.php - Funktion für den DS1820 Temperatursensor mit Anregungen von http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Onewire/
- MYSQL_Library.php - Funktionen zum Zugriff auf die MariaDB
- crontab.txt Beispiel für Einträge in der Crontab
- create_db.sql zur Anlage der Datenbank
- test.php zeigt den Zustand der GPIOs ähnlich "gpio readall" des wireinPi Paktes an
Anmerkung, das das Programm in einem internen abgeschotteten Netz ohne WLAN läuft, wurde auf Sicherheit kein Wert gelegt. In anderen Bereichen wäre z.B. ein Login für das Webinterface sinnvoll. Auch ist das Webinterface aktuell relativ primitiv aber funktionell aufgebaut, schöner machen ist Fleissarbeit.
Die Hardware
Zur Steuerung habe ich einen vorhandenen Raspberry Pi B+ Rev. 2 genommen, mit einer 8GB SD Karte.
Für die Anzeige an der Steuerung ein handelsübliches, vorhandenes 2 x 16 Zeichen LCD Display.
Zur Ansteuerung des Kugelventils und der Pumpe einen 4-fach Relaiskarte aus dem Raspi Zubehör.
Die Steuerung für den Solarbetrieb übernimmt ein vorhandener Zweiwege-Motor Kugehahn aus der alten, defekten Solarsteuerung.
Für die Warn SMS eine Huwai Surfstick mit einer Prepaid Karte.
Stromversorgung Pi über eine 5V Hutschienennetzteil.
Stromversorgung Kugelhahn ein 24V Hutschienenklingeltrafo.
Zur Sicherheit kommt noch ein FI Schalter dazu
Aufbau: Der Raspi und die Relaiskarte, sowie das Display und der Schalter für die manuelle Abschaltung kommen in ein ausreichend großes Hutschienengehäuse für den PI.
All das wird ein einen einzeiligen Feuchtraumverteiler untergebracht.
ACHTUNG ihr arbeitet hier mit zum Teil mit lebensgefährlicher 240V Netzspannung, dabei sind u.A. VDE Vorschriften zu beachten. Bei falschen Anschluss seid nicht nur ihr, sondern auch euere Badegäste gefährtet. Solltet ihr nur im geringsten unsicher sein, zieht einen Elektrofachmann hinzu.