Skip to content

makerspace-wi/SmartPissoir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SmartPissoir

IMG_6802

Automatische Spülsteuerung auf ESP8266 mit VL53L0X-Abstandssensor. Das System erkennt Anwesenheit, wartet auf das Verlassen des Bereichs und startet danach eine zeitgesteuerte Spülung.

Features

  • Abstandsmessung mit VL53L0X (I2C)
  • Mindest-Anwesenheitszeit zur Verifikation
  • Spülung über bistabiles Ventil (L9110S H-Brücke, Pulssteuerung)
  • WLAN-Setup über WiFiManager (Captive Portal)
  • MQTT-Anbindung mit Reconnect
  • Konfigurationszustand wird als MQTT State publiziert und ist per MQTT zur Laufzeit änderbar
  • Spülstatus wird als MQTT-Status true/false publiziert
  • Elegant OTA Web-Update über Browser

Projektstruktur

  • platformio.ini: Board-, Build- und Library-Konfiguration
  • src/main.cpp: Hauptlogik (Sensor, Ablauf, WLAN, MQTT)
  • include/, lib/, test/: Standard-Ordner von PlatformIO

Hardware

Ventilsteuerung (bistabiles Ventil mit L9110S)

Das Ventil wird über eine L9110S H-Brücke angesteuert. Es ist bistabil und benötigt zum Öffnen und Schließen jeweils einen kurzen 5V-Puls (ca. 30 ms) in die jeweilige Richtung.

Pinbelegung (siehe src/main.cpp):

  • L9110_IN1 = GPIO12 (D6)
  • L9110_IN2 = GPIO13 (D7)

Funktionsweise:

  • Zum Öffnen: IN1 = HIGH, IN2 = LOW für 100 ms, dann beide LOW
  • Zum Schließen: IN1 = LOW, IN2 = HIGH für 100 ms, dann beide LOW

Sensor-Verdrahtung (VL53L0X)

  • SDA -> D2 (GPIO4)
  • SCL -> D1 (GPIO5)
  • GND -> GND
  • VCC -> 3.3V

Build, Upload, Monitor

Im Projektordner ausführen:

  • Build: ~/.platformio/penv/bin/platformio run
  • Upload: ~/.platformio/penv/bin/platformio run --target upload
  • Serial Monitor: ~/.platformio/penv/bin/platformio device monitor --baud 115200

WLAN-Einrichtung

Beim ersten Start öffnet WiFiManager ein Konfigurationsportal mit SSID:

  • SmartPissoir-Setup

Dort WLAN auswählen und Zugangsdaten speichern.

Zusatzfelder im Portal:

  • MQTT Server
  • MQTT Port

Diese Werte werden nach dem Speichern persistent im Dateisystem (LittleFS) abgelegt und beim nächsten Start automatisch geladen.

MQTT-Konfiguration

Standardwerte in src/main.cpp:

  • mqttBroker = 192.168.0.5
  • mqttPort = 1883
  • MQTT_CLIENT_ID = smartpissoir-esp8266

Empfohlen: MQTT Server und MQTT Port im WiFiManager-Portal setzen. Ein Neu-Flashen ist dafür nicht nötig.

OTA-Update (ElegantOTA)

Nach WLAN-Verbindung ist das OTA-Webinterface unter der Geräte-IP erreichbar:

  • http://<gerät-ip>/update

Basis-Statusseite:

  • http://<gerät-ip>/

Damit kannst du neue Firmware direkt im Browser hochladen.

MQTT Topics

Status/State (retained):

  • smartpissoir/config/state
  • smartpissoir/status/online (LWT: "online" bei Verbindung, "offline" bei Trennung)
  • smartpissoir/status/enabled ("enabled" oder "disabled")
  • smartpissoir/status/flushing ("true" während der Spülung, sonst "false")

Set-Topics (zur Laufzeit verändern):

  • smartpissoir/config/set/activationThresh
  • smartpissoir/config/set/minPresenceTime
  • smartpissoir/config/set/flushDuration
  • smartpissoir/config/set/enabled

Command-Topics:

  • smartpissoir/command/flush

Payload-Format für Set-Topics:

  • Positive Ganzzahl als Text, z. B. 300
  • Für smartpissoir/config/set/enabled: enabled/disabled, true/false, on/off, 1/0

Aktuell implementierte Wertebereiche:

  • activationThresh: 50 bis 2000 (mm)
  • minPresenceTime: 500 bis 30000 (ms)
  • flushDuration: 500 bis 30000 (ms)

Diese drei Werte werden nach MQTT-Änderungen auf LittleFS gespeichert und nach einem Neustart wieder geladen.

Enable/Disable-Status:

  • Standard beim Start ist enabled
  • Der Wert wird persistent gespeichert und nach Neustart wiederhergestellt
  • Bei disabled werden Anwesenheitsauslösung und Fernspülung ignoriert
  • Jede Änderung publiziert sofort smartpissoir/status/enabled und den aktualisierten smartpissoir/config/state

Beispiel:

Wenn auf smartpissoir/config/set/flushDuration der Wert 7000 publiziert wird, setzt das Gerät die Spüldauer auf 7000 ms und publiziert den neuen Zustand auf smartpissoir/config/state.

Wenn auf smartpissoir/command/flush eine Nachricht gesendet wird, startet sofort eine Spülung.

Wenn das System disabled ist, wird smartpissoir/command/flush ignoriert.

Während einer aktiven Spülung publiziert das Gerät smartpissoir/status/flushing mit dem Wert true und danach wieder false.

Das Topic smartpissoir/config/state enthält den kompletten aktuellen Zustand als JSON, zum Beispiel:

{ "activationThresh": 300, "minPresenceTime": 5000, "flushDuration": 10000, "enabled": true, "mqttBroker": "192.168.0.5", "mqttPort": 1883, "ip": "192.168.0.42" }

Beispiel zum Deaktivieren:

  • Topic: smartpissoir/config/set/enabled
  • Payload: disabled

Ablauf

  1. Nutzer unterschreitet activationThresh.
  2. Anwesenheit muss mindestens minPresenceTime anhalten.
  3. System wartet, bis der Bereich wieder frei ist.
  4. Ventil wird für flushDuration aktiviert.
  5. System geht direkt zurück in den Wartezustand.

Abhängigkeiten

In platformio.ini:

  • pololu/VL53L0X
  • tzapu/WiFiManager
  • knolleary/PubSubClient
  • ayushsharma82/ElegantOTA

Troubleshooting

  • Keine WLAN-Verbindung: Neustart, dann erneut mit SmartPissoir-Setup verbinden.
  • Keine MQTT-Verbindung: Broker-IP/Port prüfen und sicherstellen, dass Broker im gleichen Netz erreichbar ist.
  • Keine Distanzwerte: I2C-Verdrahtung und Sensorversorgung prüfen.
  • Unerwartetes Schaltverhalten: Verdrahtung von Ventil, L9110S und Versorgungsspannung prüfen.
IMG_6799 2

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors