Skip to the content.

Halloween Stimmungslicht

Die Grundlagen für die Programmierung eines Mikrocontrollers habe ich in dem Beitrag

beschrieben. In dem folgenden Projekt habe ich einen ESP genutzt, um zur Halloween Zeit einen ausgehöhlten Kürbis mit einem Stimmungslicht auszuleuchten. Natürlich könnt ihr das Stimmungslicht auch für andere Einsätze zB zur Weihnachtszeit nutzen. Hierfür lassen sich dann die Farbeffekte nach eigenem Geschmack anpassen. Als Steuerungszentrale nutze ich in meinem Fall das SmartHome, dh meine openhab Umgebung. Auch hier könnt ihr im Sketch die mqtt Steuerung entfernen und das Stimmungslicht immer nach dem Start des ESP aktivieren. Das Ganze dann ergänzt durch eine Schaltzeituhr oder Schaltsteckdose. Oder aber über eine App auf dem Smartphone den ESP an/ausschalten. Die Möglichkeiten sind , wie ihr seht, vielfältig .

Werfen wir erstmal einen Blick auf das Ergebnis und die hierfür notwendigen Komponenten:

Der Bio-Kuerbis Live

image logo

Komponentenliste

Amazon link

image logo

Amazon link

image logo

Die Stromversorgung des ESP erfolgt in diesem kleinen Projekt ueber eine Powerbank oder ein USB Ladekabel. Da das Stimmungslicht hauptsächlich in den Abendstunden angeschaltet ist, sollte dies ausreichend sein. Bei mir funktioniert es jedenfalls. Vom ESP könnt ihr dann 5V und Ground mit dem Neopixel Ring entsprechend mit VCC (5V) und GND verbinden. Die Datenleitung IN verbindet ihr dann mit dem Datenpin auf dem ESP - in meinem Fall PIN6. Später im Arduino Code müsst ihr darauf achten, dass PIN6 je nach Board unterschiedliche GPIO PIN Werte hat.

ESP8266 Pinout Reference: Welche GPIO pins muss ich auswählen ?

ESP8266 Pinout Reference

image logo

Der ESP Arduino code

Werfen wir jetzt einen Blick in das Programm bzw Sketch.

-> Arduino Code einfuegen

In dem Code findet ihr zu den jeweiligen Arbeitsschritten die Kommentare im Sketch. Zunächst müssen wir einige Variablen setzen, wie zB die WLAN credentials und den Namen des mqtt Servers. In setup() wird dann eine Verbindung zu unserem WLAN aufgebaut und zu dem definierten MQTT Server. Um im Falle eines Verbindungsabbruchs wieder Die Funktion loop() sorgt dafür, dass auch im Fall einer Verbindungsunterbrechung die Verbindung wieder hergestellt wird. In reconnect() wird im Fall einer Verbindung dann ein subscribe auf das entsprechende topic durchgeführt, so dass ab dann neue Nachrichten empfangen bzw gesendet werden können.

Nachdem wir das Microcontroller Board mit dem Sketch aktiviert haben, brauchen wir jetzt eine Steuerungsfunktion, um das Stimmungslicht an- und auszuschalten bzw das Ganze eventgesteuert zu betreiben. In meinem Fall verwende ich hierzu meine SmartHome Zentrale, so dass ich im folgenden einige Hinweise geben möchte, was hierzu an Einstellungen notwendig ist.

Openhab Einstellungen

Als erstes erstellen wir uns einen AN-/AUS Schalter fuer den ESP Controller in unserer sitemap:

In default.sitemaps:

	Switch  item=ESP2_Moodlight_OnOff label="ESP-Neo2 Stimmungslicht"

Das Item müssen wir dann später noch entsprechend dem Channel eines Thing zuordnen

Für die Kommunikation zwischen dem Mikrocontroller und dem raspberry setze ich einen MQTT Broker ein. Um MQTT Geräte nutzen zu können, müssen wir folgende Schritte durchführen:

  1. Installation des MQTT broker auf dem raspberry
  2. Installation des MQTT binding in openHAB
  3. MQTT Bridge Thing Konfiguration in openHAB

Ein gutes Tutorial findet ihr in der openHAB community unter folgendem link: MQTT Broker Installation

Nach der Installation und Konfiguration habt ihr eine Kommunikationsstrecke zwischen eurem raspberry (Server) und einem oder mehreren Devices (ESP8266), die durch den Broker zur Verfügung gestellt wird. Den Broker würde ich vereinfacht als mehrspurige Strasse bezeichnen auf dem wir nun eine zugewiesene Verbindungsstrecke für ein Device konfigurieren können, vergleichbar mit einer speziellen Spur, zB für Busse.

Installation+Konfiguration des MQTT broker in openHAB

image logo

Anschliessend wird die Verbindung zwischen openHAB mit dem MQTT Broker hergestellt

OpenHAB3 ist über ein Bridge Thing mit dem MQTT-Broker verbunden. Um ein Bridge Thing zu erstellen sind folgende Schritte erforderlich

Settings -> Things -> Blue + -> MQTT Binding -> MQTT Broker

Die Bridge muss nun konfiguriert werden

image logo

Klicke dann auf Thing erstellen.

Das Bridge Thing wird erstellt und erscheint in der Liste der Things. Nach ein paar Sekunden wird es als ONLINE angezeigt.

Wir haben nun einen funktionierenden MQTT-Broker, und openHAB ist über das Bridge Thing mit dem MQTT-Broker verbunden. Wir können nun beginnen, einzelne Geräte als Generic MQTT Thing hinzuzufügen.

Konfiguration openHAB3 für die Verbindung mit einem Device

Um zB einen Mikrocontroller zu steuern, müssen wir ein Generic MQTT Thing konfigurieren

Settings -> Things -> Blue + -> MQTT Binding -> Generic MQTT Thing

Eingabe der initialen Konfigurationsinformationen

* Unique ID: Der Wert kann auf default gelassen werden oder es wird eine eigene ID vergeben, die eindeutig sein muss. Einmal angelegt, kann diese ID nachträglich nicht mehr geändert werden

zB: espD1-02 (in this case for 2nd D2 Mini)

* Label:
sprechender Name für das Device zB „ESPD1-02“ an Stelle von Generic MQTT Thing

image logo

Anschliessend erstellen wir einen Kanal für dieses MQTT Thing. Hier werden die Eigenschaften des Kanals definiert, zB ob es sich um einen Schalter handelt.

image logo

Zusätzlich definieren wir hier die MQTT topics, über die später die Informationen mit unserem Device ausgetauscht werden, zB

stat/espD1/OnOff , um das Device an- oder auszuschalten (Werte ON oder OFF)

image logo

Code Beispiele

Damit sind alle wichtigen Voraussetzungen erfüllt, um Informationen zwischen dem SmartHome openHAB und dem Mikrocontroller auszutauschen.

Im Arduino Sketch findet ihr dann die entsprechenden Definitionen

	const char* mqtt_server = „IP Adresse des Brokers“;

Kommando zum Schreiben von Informationen auf ein topic

	client.publish("stat/espD1/OnOff“, „WriteString);

bzw dem Auslesen der Informationen auf der Empfängerseite.

	client.subscribe("stat/espD1/OnOff);

openHAB.rules

	val mqttActions = getActions("mqtt","mqtt:broker:ID-number)
	//  Schreibe auf das topic
	mqttActions.publishMQTT("stat/espD1/OnOff“,“OFF")

Viel Spass beim ausprobieren.

Bei Fragen/Hinweisen/Kommentaren kommt gerne auf mich zu.