RFID MusicBox mit EchoDot, ESP8266 und ioBroker
In diesem Artikel zeige ich Dir, wie ich eine einfache MusicBox mit EchoDot, einem ESP8266 Mikrocontroller und ioBroker realisiert habe.
In diesem kleinen Projekt steuere ich den Amazon echo Dot Lautsprecher über verschiedene RFID-Tags.
Bevor wir nun mit dem Aufbau der Hardware, der Programmierung und der Einrichtung in ioBroker beginnen, hier die Liste der verwendeten Materialen:
Preis: 8,04 €
Funktionsweise
Im folgenden Schaubild wird die Funktionsweise der RFID MusicBox erklärt. Mittels dem RFID-Scanner werden am ESP8266 Mikroprozessor die Tags gelesen und per MQTT an ioBroker übertragen. ioBroker wertet die empfangenen Tags aus und gibt dann per Script eine entsprechende Anweisung an den Amazon echo dot. An dieser Stelle können natürlich auch andere Aktionen definiert werden (z.B. Ausgaben über SONOS, etc.).
Aufbau der Schaltung
Im ersten Schritt bauen wir nun die Schaltung nach folgender Pin-Belegung auf:
RFID-RC522 | ESP8266 NodeMCU |
3,3V | 3,3V |
GND | GND |
RST | D3 |
SDA | D8 |
SCK | D5 |
MOSI | D7 |
MISO | D6 |
IRQ | – |
Die LED an Port D4 ist optional, und in der aktuellen Form der Implementierung noch nicht berücksichtigt. Über die LED soll später der RFID-Lesevorgang signalisiert werden. Auf dem Breadboard schaut der Schaltungsaufbau nun folgendermaßen aus:
Programmierung des ESP8266
Nach dem wir nun die Schaltung aufgebaut haben, können wir nun mit der Implementierung beginnen.
Den Sketch stelle ich aufgrund des Umfangs hier als Download zur Verfügung.
Nun zur Erklärung des Sketchs. Unterhalb der Include-Anweisungen ist der Definitionsbereich der Umgebung.
Über die Konstante ssid wird der Name des WLAN-Netzwerks definiert. Die Konstante password enthält das WLAN-Kennwort der Verbindung. Über die Konstante mqtt_server wird die IP-Adresse des MQTT-Brokers (in unserem Fall die ioBroker IP-Adresse) eingestellt.
In der Methode setupWifi() wird die WLAN-Verbindung hergestellt. Die Methode MQTTCallback() wird derzeit noch nicht verwendet. In der loop() Methode wird der RFID-Sensor gehandelt. Nach dem wir nun den Sketch per ArduinoIDE auf den ESP8266 geladen haben, können wir nun einen ersten Test starten. Wenn wir eine RFID-Tag über das Lesegerät halten, wird der Tag über die serielle Schnittstelle ausgegeben. Zudem wird in ioBroker über den MQTT-Broker ein Datenpunkt erstellt.
Integration in ioBroker
In den Objekten im Bereich „mqtt.0“ ist nun ein neuer Ordner „MusicBox“ mit dem Datenpunkt „rfid“ vorhanden. In diesen Datenpunkt wird der gelesene RFID-Tag gespeichert.
Im Bereich „Skripte“ legen wir uns nun ein neues JavaScript Script „MusicBox“ an. Im Script wird der neue RFID-Tag ermittelt und überprüft. Je nach Tag wird hier nun per Funktionsaufruf setState() der Amazon Echo Dot angesteuert um eine Playlist oder einen Radiosender abzuspielen.
on({id: "mqtt.0.MusicBox.rfid", change: "ne"}, function (obj) { var value = obj.state.val; log(value, 'info'); if ( value == "0979105d" ) { setState('alexa2.0.Echo-Devices.ID.Music-Provider.TuneIn', 'Spiele radio 107,7' ); setState('alexa2.0.Echo-Devices.ID.Player.volume', 30 ); } if ( value == "47cb708b" ) { setState('alexa2.0.Echo-Devices.ID.Music-Provider.Amazon-Music-Playlist', 'Spiele Playlist Maximilian' ); setState('alexa2.0.Echo-Devices.ID.Player.volume', 30 ); } });
Einbau in ein Gehäuse und erster Test
Nach dem finalen Aufbau habe ich die Elektronik zunächst in ein kleines Holzgehäuse eingebaut. Hier kann man sich später auch per 3D-Drucker ein passendes Gehäuse drucken. Die Stromversorgung habe ich provisorisch über zwei AA Batterien gelöst. Für einen ersten Test war das so völlig ausreichend.
Sieh dir diesen Beitrag auf Instagram an
Ich hoffe Dir gefällt der Artikel ? Ich freue mich über Deinen Kommentar!
Super coole Idee. Da wir hier gerade komplett einsteigen wollen und noch wenig Ahnung haben, könnten Sie vielleicht noch einmal genauer auf das Löten der Hardware Teile eingehen.
Pingback: briefkasten melder – Notizbuch
Pingback: briefkasten melder – Notizbuch
Hi Matthias,
Dein Script funktioniert bis auf das Anlegen des Datenpunktes in ioBroker. Das Auslesen der Transponder funktioniert. Ich kann die entsprechende Nummer über den Seriellen Monitor auslesen.
Was kann es sein, das der Datenpunkt im ioBroker nicht angelegt wird?
Wäre für Deine Hilfe dankbar, weil mich dieser Artikel sehr interessiert.
Nachtrag:
Verbindung zum MQTT-Server (ioBroker) auf Port 1883 besteht (true).
Benütze Raspberrymatic (RPi 3 B+) und ioBroker (RPi 4 B)
Hallo,
klappt fast alles super, bis auf das die MQTT verbindung nach 15 Minuten getrennt wird. Gibt es dafür irgendeine Lösung?
Viele Grüße und vielen Dank!
Die Lösung ist hier:
https://www.smarthome-tricks.de/esp8266/esp8266-mqtt-connection-closed-timeout/
Danke an Matthias Korte für den Hinweis darauf.
Hallo, ich habe den gleichen Fehler wie Max Meyer, allerdings dauert es bei mir maximal 30 Sekunden bis die Verbindung zum MQTT Server weg ist. Danach hilft nur der Neustart.
Hallo Björn,
schau mal in die Kommentare, das liegt an einem fehlenden Reconnect im Sketch.
LG Matthias
Hallo Matthias,
bin durch Zufall auf diesen Beitrag gestoßen und finde das System total klasse.
Leider habe ich ebenfalls den Reconnect Fehler – wäre es möglich das Du uns zeigst was wo im Code geändert werden muss? Das wäre der Knaller.
Vielen Dank
Grüße
Netty
Zum Code des ESP8266+RFID-Lesers wäre es hilfreich, wenn die verwendeten Bibliotheken dabei stünden.