PumpControl mit ESP8266 01

In diesem Blog beschreibe ich dir, wie du deine Brunnenwasserpumpe mit dem Smartphone steuern kannst. Dabei kannst du die Wasserpumpe ein- und ausschalten, sowie die Leistung mittels einer Phasenanschnittsteuerung regulieren. Zusätzlich können Controller-Informationen sowie die Restzeit auf das Smartphone übertragen werden. Als Controller-Modul kommt der ESP8266 01 zum Einsatz, welcher über dein Home WLAN die Kommunikation zu deinem Smartphone herstellt. Gleichzeig steuert er deine Wasserpumpe. Mit der „PumpControl“ App (nur für Android), kannst du deine Wasserpumpe dann steuern. Deine bestehende WiFi Infrastruktur wird, ohne Änderungen machen zu müssen, voll unterstützt – auch mit mehreren Access Points. Wichtig ist, dass dein ESP8266 über WLAN eine Verbindung herstellen kann (2,4GHz IPv4, DHCP ist nicht relevant, da für den ESP-Controller static IP benutzt wird).

Voraussetzungen:

  • Da es sich im Leistungsbereich um Hardware am 230V Stromnetz handelt, musst du ein Fachmann sein im Bezug auf elektrische Spannungen bis 230 Volt. Sicherheitsregeln unbedingt beachten! Achtung Lebensgefahr!!!  Ziehe ggf.  einen Fachmann  hinzu, der dich beim Aufbau oder der Verdrahtung im Leitungsteil unterstützt.   
  • Du solltest mit der Arduino IDE Umgebung in der Lage sein eine Bibliothek sowie ein Programm (Sketch) laden bzw. öffnen zu können. Im Internet gibt es sehr viele Tutorials dazu. Fortgeschrittene können dies natürlich auch mit Visual Studio machen.
  • Du solltest Wissen, wie man das ESP8266 01 in den Programmiermodus versetzt, um deine Firmware übertragen zu können. Hier gibt es auch viele Dokumentationen und Videos im Internet.
  • Handwerkliches Geschick und Engagement zum Projekt haben.

Du musst keine einzige Zeile Programmcode schreiben, du machst nur Anpassungen in der Firmware für deine Hardware (Servoparameter) und deinem Netzwerk (SSDI, WLAN-Key sowie IP-Adr, Sub,DNS, Gateway und Port) – das ist alles.

 

Gesamter Schaltplan

(Gesamtschaltplan als PDF)

Servomotor mit mechanischer Kopplung an die Phasenanschnittsteuerung. 

Achtung! Hier muss unbedingt auf eine galvanische Trennung geachtet werden! Je nachdem wie du den Stecker deines Fertig-Moduls in die Steckdose steckst, können bei diesem Modul am Kühlkörper, Gehäuse und am Poti Netzspannung anliegen. Ich habe dieses Modul inklusive Servomotor aus isoliertem Material aufgebaut. Bei einem 180 Grad Servo könnte theoretisch auch eine axiale mechanische Kopplung angewendet werden, da die Motorleistung nicht auf 0 zurück geregelt werden soll. Das soll bedeuten, der gesamte Poti-Drehwinkelbereich von ca. 270 Grad wird nicht benötigt. Ausgehend vom Poti-Maximum Anschlag und dann 180 Grad zurück ist völlig ausreichend. Achte hier besonders darauf, dass deine Mechanik wenig Schlupf aufweist.

 

Das Steuermodul

Spannungsversorgung, elektronisches Relais, 4011-NAND, ESP8266 01, Reset-Taster sowie die Pullup Widerstände und Kondensatoren. Das elektronische Relais steuert einzig das Schaltschütz (kleine Leistung erforderlich).   

Das Gesamtmodul

Ein Schaltschütz deshalb, weil bei Nichtgebrauch die Stromzufuhr zur Pumpe zweipolig  unterbrochen werden soll (Pumpe im Außenbereich – Brunnen). Ggf. kannst du auch ein Relais oder eine eigene Schaltstufe verwenden.

Die Firmware für das ESP8266 01

(PumpControlV1.09.zip für ESP8266)

[MD5 Hash:  f57cd4ce9b05a12c0b9274b7dcb72842]

Öffne deine IDE-Umgebung und lade dir über den Board Manager die Arduino Core for ESP8266 WiFi chip herunter, damit deine IDE auch dieses Board ansprechen kann.

Öffne dann den Sketch PumpControl und mache die Anpassungen wie im Code-Kommentar beschrieben. Die Änderungen der Netzwerk IPs sind nur im Setup-Block zu finden.

* ssid - Your WiFi SSID name
* password - Your WiFi password
* localUdpPort - UDP communication port number
* IPAddress ip - ###.###.###.###
* IPAddress gateway - ###.###.###.###
* IPAddress subnet - ###.###.###.###
* IPAddress dns - ###.###.###.###
* servoStart - Potentiometer left stop
* servoEnd - Potentiometer right stop
* servoOffset - minimum flow rate at which the engine is still running well | The value can also be set via smartphone app.
* Token - Your personal key to operate the controller; only with this correct key will received data processed; Note: Token must not contain a semicolon character
* RemoteOnlyOne - true = only one IP adr can send commands to controller / false = any IP adr may send commands ...
*
* !!!Caution!!! Do not change any other variables, methods or functions in the code - the function is then no longer guaranteed.
Befinden sich im Setup()
IPAddress ip(192, 168, xxx, xxx);
IPAddress gateway(192, 168, xxx, xxx);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, xxx, xxx);

Überprüfe deine Änderungen, kompiliere den Sketch und übertrage die Firmware

Setze dein ESP8266 01 in den Programmier Modus und übertrage (flashen) die geänderte Firmware. Nach erfolgreicher Übertragung schaltest du den Programmier Modus aus und führst einen Restart durch. Wenn du, wie im Schaltplan beschrieben, einen Summer installiert hast, sollten nach einigen kurzen Tönen drei lange Töne folgen. Dies ist die Bestätigung, dass eine WLAN-Verbindung aufgebaut werden konnte.

 

PumpControl – Smartphone App 

Installiere dir die kostenlose App „PumpControl„. Du findest diese im Google Play Store (ohne lästige Werbung).  

 

Als nächsten Schritt öffnest du die Konfigurationsseite ( Open Config) und tätigst deine Einstellungen. 

IP Adr.: die IP deines ESP Controllers (wähle eine IP außerhalb deines konfigurierten DHCP-Bereiches)
UDP Port: die Portnummer, welche du im Code definiert hast
Power min: kleinste Einstellung in der App Skala-Beschriftung [1..99] – % Leistung
Power max: größter Wert in der App Skala-Beschriftung [2..100] – % Leistung
Empfehlung

Time min:
kürzeste Zeit in Minuten [>0 und <60]
Time max: längste Zeit in Minuten [>Time min und <=60]
Servo Offset: dieser Wert bestimmt die Mindestleistung der Pumpe. Das Vorzeichen hängt davon ab, wie deine mechanische Kopplung vom Servo zum Poti aufgebaut wurde. [-180 .. 180]
Drive Speed: Wie schnell sollen Leistungsänderungen umgestellt werden. [1…300] – (kleiner Wert: Änderung schnell; großer Wert: Änderung langsam)
Token: dein persönlicher Key, der immer überprüft wird – ansonsten keine Steuerung möglich.

Nach der Parametrierung schließt du mit „Save and Close“  den Screen. Der Rest auf dem Mainscreen sollte selbsterklärend sein. Ist dein ESP-Controller online, kannst du nun mit der App deine Pumpe steuern.

Ein nützliches Tool bei der Entwicklung und den Tests ist der Packet Sender. Mit dem Tool kannst du alle Funktionen testen. 

Technische Erklärung

Nach dem Start des ESP8266 01 werden die Ausgänge auf OFF (low aktiv) gesetzt und danach die von dir konfigurierte WLAN Verbindung aufgebaut. Klappt dies, bestätigt der Controller dies mit drei langen Tönen. Und dann beginnt schon die Loop-Schleife – also das Warten auf ein korrektes Kommando per UDP Empfang. Zyklus drei mal je Sekunde.

Der Empfang Stream des ESP8266 01 muss wie nachfolgend aufgebaut sein und am korrekten Port  eintreffen. Dies wird von der App PumpControl realisiert bzw. sichergestellt – praktisch nur zur Information.

Beispiel: ON;33;10;30;100;1;20;-70;180;123abc;

Value1: Kommando (ON, OFF, APPINFO01, APPINFO02, RESTART) [RESTART wurde in der App nicht implementiert – Diente nur für Tests]
Value2: Soll Leistung der Pumpe
Value3: Soll Einschaltdauer der Pumpe in Minuten
Value4: Bereich Power min
Value5: Bereich Power max
Value6: Bereich Einschaltdauer min
Value7: Bereich Einschaltdauer max
Value8: Servo Offset
Value9: Servo Reaktionszeit
Value10: dein persönlicher Key [WICHTIG!!! Dein Schlüssel darf kein Semikolon-Zeichen enthalten]

Kommt der erste korrekte Befehl am ESP an, merkt sich der Controller die Remote IP und sendet dem Device eine entsprechende Antwort bzw. agiert mit der Hardware (Servo, Schaltschütz, Summer). In Abhängigkeit der Variable RemoteOnlyOne kommuniziert das ESP dann nur mit diesem Gerät oder mit mehreren Geräten, die ein gültiges Kommando zum ESP senden. Somit kann konfiguriert werden, dass der Controller bis zum nächsten Restart oder Reset immer nur von einem Device gesteuert werden kann. Im anderen Fall, wird mit dem Gerät kommuniziert, welches den letzten korrekten Befehl gesendet hat.

const boolean RemoteOnlyOne = true; //true = only one Client / false = any clients

Fehlerhafte Datenpakete oder nicht autorisierte Geräte IPs an dem Controller werden nicht quittiert – das Daten-Paket wird verworfen.

Pumpe ON – Kommando
Wird die Pumpe eingeschaltet, bewegt sich der Servo im Eilgang immer auf 100% Leistung und regelt dann erst auf die gewünschte Soll-Leistung herunter. Damit soll sichergestellt werden, dass der Motor sicher unter Last anläuft. 

Alternative
Du kannst natürlich jedes Modul aus der ESP8266- oder ESP32 – Familie verwenden. Ändere entsprechend die Beschaltung und ggf. dein Board in der IDE.

Datenschutz

Die zum Download bereitgestellte Firmware und die App „PumpControl“ im Google Play Store kommunizieren einzig im lokalen Netzwerk (Benutzer Konfiguration) und übertragen keinerlei Daten in ein externes Drittsystem (Cloud, Web-DB, Webservice, usw…). Ausnahme Update Funktion Google Play Store – Check nach neuer APP-Version.  

Stand: 28. Juli 2020

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.