ITT
Micro Controller Projekt Doku

Micro Controller Projekt Doku

Pins

Pin Nutzen
19 Ventilator
23 Ventilator
25 Licht 1
26 Licht 2
27 Buzzer
32 Licht sensor
33 Klingel Knopf
34 Luft sensor
35 Licht button

Jobs des Hauses

Rojan

Licht sensor

Falls die Helligkeit unter 2000 (Etwa 50%) fällt, werden sofort alle lichter aktiviert.

Lichtschalter

Der Lichtschalter kann das Licht ein oder aus schalten. Wenn das Licht durch den lichtschalter eingeschalten wurde, kann es nichtmehr durch den Lichtsensor deaktiviert werden.

Kai

Gas Sensor

Sobald der Gassensor ausschlägt, wird der Ventilator aktiviert.

Klingel

Die Klingel löst einen buzzer aus, welcher ein piep ton startet. Ebenso wird eine Nachricht via discord versandt.

Node Red Flows

flows.json

Basis

base.png

Dieser Flow steuert die basischen dinge. Er stellt eine rest API zur verfügung, um pins zu steuern, und published, sobald der client client/init veröffentlicht welche pins wie benutzt werden sollen (Bewusst kein retain flag verwendet).

Rojan

flowRojan.png

Der obere Flow setzt das Licht an, wenn es zu dunkel wird. Dabei wird darauf geachtet, ob der Lichtschalter das Licht angeschaltet hat oder nicht

Der untere Flow setzt die Lichter an / aus, wenn ein knopf gedrückt wird.

Kai

kai.png

Der obere Flow aktiviert den buzzer, und schickt eine Nachricht via discord, sobald geklingelt wird.

Der untere Flow aktiviert den Ventilator, sobald die gaskonzentration zu hoch ist

C++ Code

sketch_may8a.ino

Overview

Dieses C++-Programm läuft auf einem ESP32-Mikrocontroller, verbindet sich via WiFi mit einem MQTT-Broker und steuert Pins basierend auf eingehenden MQTT-Nachrichten. Zudem liest es kontinuierlich Werte ausgewählter Pins und veröffentlicht deren Änderungen ebenfalls per MQTT.

MQTT-Verbindung

  • Broker: emqx.kubeberry.com

  • Port: 8883 (TLS)

  • Topics:

    • Subscription: pin/control

    • Publishing:

      • Pin-Daten: pin/{pin}/data
      • Initialisierung: client/init

MQTT-Kommandos

Die Nachrichten sind im JSON-Format aufgebaut:

{
  "pin": 0 - 39,
  "mode": "listen" | "buzzer" | null,
  "state": 0 | 1 | null
}
  • listen: Der Pin wird für Änderungen überwacht (analogRead).
  • buzzer: Aktiviert einen Buzzer am angegebenen Pin.
  • state: Setzt den Pin auf HIGH oder LOW.

Funktionen

  • setup_wifi(): Verbindung zum WLAN herstellen.
  • addListeningPin(int pin): Überwacht spezifische Pins auf analoge Änderungen.
  • useBuzzer(int pin): Erzeugt einen Signalton am angegebenen Pin.
  • callback(...): Verarbeitet eingehende MQTT-Nachrichten.
  • reconnect(): Stellt erneut Verbindung zum MQTT-Server her, wenn die Verbindung unterbrochen wurde.

Überwachung der Pins

Die Werte der überwachten Pins werden alle 100 Millisekunden überprüft. Änderungen werden sofort per MQTT veröffentlicht.

Hinweise

  • Pins müssen valide (0-39) sein; ungültige Pins werden ignoriert.
  • JSON-Nachrichten müssen korrekt formatiert sein; bei Fehlern erfolgt eine Ausgabe über Serial.
  • Der Buzzer nutzt PWM (Pulse Width Modulation) zur Tonerzeugung.