Bewässerungsanlage - Programmierung - Pretzelboard

Sie befinden sich hier:
» 
» 
» 

Pretzelboard, die Verbindung zu FHEM

Das Pretzelboard ist eine Kombination aus Arduino Nano mit WIFI-Modul. Dieser Microcontroller war mein persönlicher Einstieg in die Welt von IoT. Für die Bewässerungsanlage dient das Pretzelboard als Bindeglied zwischen FHEM und der Relaissteuerung.

Wie das Pretzelboard konkret zum Einsatz kommt, behandelt dieser Beitrag.

Pretzelboard als Bindeglied zwischen FHEM und Relaissteuerung

Mit einem Pretzelboard als Microcontroller ist es möglich, die Bewässerungsanlage aus FHEM heraus anzusteuern. Hierzu dient in erster Linie ein kleiner Webserver, der auf dem Pretzelboard läuft. Es können somit über den Aufruf einer URL mit angefügten GET-Parametern per WIFI Befehle gesendet werden. Das Ergebnis der Befehle gibt der Webserver als Response wiederum auf seiner Webseite aus. Dieser Response kann wiederum in FHEM ausgewertet werden.

Das Senden des Requests und die Auswertung des Response übernimmt das HTTP-Modul in FHEM.


Steuerung über HTTP-Requests per GET-Parameter

Für die Relaissteuerung habe ich drei Parameter vorgesehen:

  • ON ⇒ schaltet ein Relais ein
  • OFF ⇒ schaltet ein Relais aus
  • STS ⇒ fragt den aktuellen Zustand des Relais ab

Die Steuerung über GET-Parameter erfolgt somit wie folgt:

  • http://192.168.1.145/device/?R1=ON
    Dieser Befehl schaltet Relais 1 ein. Bei Erfolg erscheint auf der Webseite als Response „ON“.
  • http://192.168.1.145/device/?R3=OFF
    Dieser Befehl schaltet Relais 3 aus. Bei Erfolg erscheint auf der Webseite als Response „OFF“.
  • http://192.168.1.145/device/?R4=STS
    Dieser Befehl gibt den aktuellen Status des Relais 4 zurück. Bei Erfolg erscheint auf der Webseite als Response „ON“ oder „OFF“ - je nach aktuellem Schaltzustand.

Folgender allgemeiner Statusbefehl wurde ebenfalls implementiert:

  • http://192.168.1.145/device/?STS
    Dieser Befehl gibt den aktuellen Status aller Relais zurück. Bei Erfolg erscheint auf der Webseite als Response z.B. „ON|ON|OFF|OFF|OFF|OFF|OFF|OFF“ - je nach aktuellem Schaltzustand.

Eine Ultraschallmessung in der Zisterne wird wie folgt eingeleitet:

  • http://192.168.1.145/device/?US1
    Dieser Befehl löst in Summe drei Einzelmessungen aus, die bei Erfolg auf der Webseite als Response z.B. „624|623|624“ ausgeben. Aus diesen Angaben (Abstand Ultraschallsensor zur Wasseroberfläche in mm) wird in FHEM der aktuelle Füllstand der Zisterne berechnet.

Aus diesen Steuerungsaufrufen ergibt sich automatisch die Funktionalität, die implementiert werden muss. Letztendlich ist ein Webserver notwendig, um die Befehle (GET-Parameter) zu empfangen. Die übermittelten GET-Parameter müssen ausgewertet und daraus resultierend die entspr. Pins des Microcontrollers geschaltet werden. Auf die Herausforderungen bezüglich Ultraschallsensor (seriell vs. digital) bin ich bereits im Abschnitt Füllstandsmessung mit Ultraschallsensor eingegangen.

Weitere Anforderungen waren:

  • WLAN verschlüsselt über WPA/WSK
  • Zuweisung einer festen IP-Adresse
  • automatische Abschaltung aller Relais nach 20 Minuten, um eine vollständige Entleerung der Zisterne bei Verbindungsproblemen zu verhindern.

Programmierung mit der Arduino-IDE

Die Programmierung erfolgte mittels der Arduino-IDE unter Windows. Als Programmiersprache wird C++ verwendet. Das Programm selbst, der sogenannte Sketch, besteht im Wesentlichen aus zwei Methoden. Dies ist einleitend eine Setup-Methode, die nur einmal zum Programmstart durchlaufen wird. Hierin werden Grundeinstellungen (z.B. Zuweisung der festen IP, Initialisierung diverser Parameter) vorgenommen. Die eigentliche Programmlogik liegt in der Loop-Methode, die fortlaufend aufgerufen wird. Um die Übersichtlichkeit zu erhöhen, können diverse Funktionalitäten in weitere Methoden gekapselt und ausgelagert werden. Zusätzlich können zu Beginn des Programms noch diverse Libraries (z.B. für den seriellen Port) eingebunden oder globale Variablen definiert werden.

Das geschriebene Programm kann direkt über eine USB-Verbindung vom PC auf das Pretzelboard geladen werden. Über den USB-Port wird in diesem Falle auch die Stromversorgung gewährleistet. Für Tests kann das Pretzelboard mit der Relaisplatine oder dem Ultraschallsensor über Entwicklerboard - Steckbrückenkabel verbunden werden. Ein Debugging ist mit Trace-Ausgaben über den seriellen Monitor der Arduino-IDE möglich.

Hier finden Sie die Sketches, mit denen ich meine Bewässerungsanlage steuere:


Kontakt

Senden Sie mir Ihre Fragen oder Anregungen über die Kontaktbox oder direkt per Email. Sie können mich natürlich auch über die gängigen sozialen Netze erreichen.

kontakt@kaempf-nk.de

Fragen / Anregungen?

Sicherheitsabfrage:
Datenschutzhinweis: Die eingegebenen Daten werden nicht an Dritte weitergegeben.