DIYS Smart-Home V1 - Irgendwo muss man ja anfangen!

RC Box - Arduino, ESP8266 und IR-Remote

Schon seit einiger Zeit plane ich mein Smart-Home. Neben dem Kostenfaktor für all die tollen Dinge die ich mir so vorstelle fehlt es oft an der notwendigen Zeit zur detailierten Planung und Umsetzung. Daher habe ich beschlossen einfach mal irgendwo anzufangen und dieses DIY-Projekt parallel niederzuschreiben...mal sehen wohin das führt...Ich bitte um Nachsicht wenn ich nicht auf jedes kleine Detail eingehe, allerdings denke ich das alles ganz gut verständlich ist. Sollten dennoch Fragen auftreten dürft ihr mir aber gerne eine Mail schicken und ich werde sehen ob ich helfen kann. :-)

Inhaltsverzeichnis:

Do-It-Yourself Smart Home

christ schmuck.jpgFernziel ist es jedenfalls eine zentrale App für mein Smartphone zuschreiben, welche möglichst alle elektronischen Komponenten im Haushalt steuern kann. Das Ganze soll sowohl auf meinem iPhone (+Apple Watch), als auch auf meinem iPad laufen und nach Möglichkeit ohne Alexa & Co. auskommen, da ich es für Irrsinn halte Daten einmal um den Globus zu schicken nur um z.B. eine Lampe oder den Fernseher einzuschalten. Davon ab ist das hier ein Hobby-Projekt und einfach nur ein riesen großer Spaß! ;-)

Ich setze vor allem auf das WLan-Modul ESP8266 ESP-01 ESP8266 ESP-01, welches auch in vielen Wifi-Schaltern (u.a. Lichtschalter, Dimmer, etc.) und -Steckdosen (z.B. Sonoff S20 Sonoff S20) verbaut ist. Der Vorteil ist, dass man die Firmware der Module relativ einfach überschreiben bzw. flashen kann und den Chip mit eigenem Code füttern und betreiben kann. So ist man in der Lage diese direkt an sein eigenes Heimnetzwerk anzubinden ohne Cloud-Services wie Amazon AWS etc. angewiesen zusein.

Ein Anfang: TV und Horizon-Recorder steuern

Im ersten Schritt habe ich mir überlegt meinen LG-TV und den Horizon-Recorder von Unitymedia über eine App innerhalb des eigenen WLANs steuern zu können.

Benötigte Bauteile zum Steuern von Geräten über Infrarot:
- Arduino UNO
- 5V Breadboard power supply
- IR (Infrarot) Empfängermodul und eine IR LED
- WLAN-Modul ESP8266 ESP-01 ESP8266 ESP-01
- Ein paar Kabel, Akkubohrer, Lötkolben, Heißklebepistole und ggf. ein Case wo die ganze Technik untergebracht wird.

Zusammengebaut sieht das bei mir dann so aus:

RC-Box - Arduino, ESP8266, IRRemote

Auf den ersten Blick simpel denn der TV genauso wie z.B. der DVD-Player werden über IR-Signale (Infrarot) gesteuert, was kein allzu großes Problem darstellt. Einfach den IR-Empfänger an den Arduino anschließen, die IRremote-Library einbinden, und über if (irrecv.decode(&results)) und results->value im loop() die empfangenen IR-Codes ausgeben.

Dann kann man die Fernbedienung des Fernsehers auf den IR-Empfänger richten, die benötigten Tasten drücken und bekommt so die entsprechenden Codes, welche man dann über IRSend und eine angebrachte IR-LED später senden kann. Der entsprechende Code ist Simpel (in meinem Fall für einen LG-TV) und könnte so in etwa aussehen:

#define TV_POWER_ON 0x20DF10EF
.....
void sendIR(unsigned long code)

{
irsend.sendNEC(code, 32); //LG uses NEC-Protocol
}

Als nächstes habe ich den ESP8266 an meinen Arduino angeschlossen, mithilfe einer kleinen Wifi-Library (WiFiEsp) mit meinem WLAN verbunden und den Port 10005 für UDP-Pakete geöffnet. So kann ich über meine kleine iOS-App an diesen Port Anweisungen schicken, welche der Arduino dann per IR an den Fernseher schickt.

TV oder weitere IR-Fähige Geräte ansteuern ist also keine große Sache. Die Tücke liegt wie so oft im Detail, denn der Horizon Recorder von Unitymedia wird über Funk bzw. WLan angesteuert. Da es keine Dokumentation über die Steuercodes gibt habe ich etwas im Internet recherchiert und freundliche Unterstützung bei Daniel erhalten (siehe: https://daniel-ziegler.com/php/esp/mikrocontroller/2017/12/18/Horizon-ueber-Netzwerk-Steuern/), welcher mir über seinen Artikel und per Mail kurz und knackig aushelfen konnte. Danke dafür! ;-)

Durch seinen PHP-Code war es ein leichtes die gewünschte Funktionalität in Objective-C zu programmieren und so auf mein iPhone zu bringen. Schön an dieser Lösung, dass der Arduino entlastet wird, denn die App kann so direkt ohne Umwege mit dem Horizon-Recorder kommunizieren.

Kurz gesagt habe ich mir die Keys (jeweils 2 byte) wie folgt definiert.

#define key_power @"E000"
#define key_number0 @"E300"
#define key_number1 @"E301"
...usw...

Dann habe ich eine kleine Funktion geschrieben welche nach dem Handshake mit dem Horizon-Recorder den jeweiligen Steuercode entgegen nimmt, ein entsprechdes Byte-Array bildet und an die Box sendet. Die 8 Bytes welche so den gesamten Steuercode bilden werden 2mal hintereinander mit kurzer Pause gesendet, wobei Byte Nr. 2 einmal eins (Taste gedrückt) und einmal null (Taste losgelassen) ist.  Das Ganze sieht bei mir dann so aus...

-(void)sendWifiCmdUM:(NSString*)sCode
{
char data[] = {0x04, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; //die letzten 2 bytes stellen den Tastencode dar

unsigned int anInt;
NSString *hexCharStr = [sCode substringWithRange:NSMakeRange(0, 2)];
NSScanner *scanner = [[NSScanner alloc] initWithString:hexCharStr];
[scanner scanHexInt:&anInt];
data[6] = (char)anInt;
scanner = nil;

hexCharStr = [sCode substringWithRange:NSMakeRange(2, 2)];
scanner = [[NSScanner alloc] initWithString:hexCharStr];
[scanner scanHexInt:&anInt];
data[7] = (char)anInt;
scanner = nil;

//press button
[socket sendBytes:data count:8];

//wait
[NSThread sleepForTimeInterval:0.1f];

//release button
data[1] = 0x0;
[socket sendBytes:data count:8];

NSLog(@"SENT (%@)", sCode);
}

Smart Home App für Smartphone und Tablet

RC App iOSIm Anschluss habe ich ein kleines Frontend für die App gebastelt und die entsprechenden Funktionalitäten implementiert.

Im Prinzip besteht die App aktuell aus 3 Reitern. Horizon, TV und Config.

Die Lautstärke-Regelung für den Fernseher habe ich mit in die Dialoge für Horizon genommen, da in der Praxis das hin und her switchen etwas lästig war.

Kurzzeitig hatte ich auch OpenEars für Spracherkennung mit drin. Habe dies allerdings erstmal wieder auskommentiert, da die Erkennung für meinen Geschmack einfach nicht gut genug ist, und ich die Bedienung über einen Tap in der App einfach schneller und zielführender finde.

uhrcenter.jpg

Der Konfigurationsdialog ist gut zum Einstellen der IP-Adressen von Horizon-Box und Arduino, praktisch aber auch um den Jugendschutz-Pin des Horizon-Recorders zu speichern. So kann man die gesamte Pin-Eingabe von der App übergeben lassen ohne dies lästig selbst tun zumüssen.

RC App für WatchOSDa ich beim Schreiben der App gerade im Flow war, habe ich auch gleich die Apple Watch mit angebunden.

Unnötig aber irgendwie auch ein witziges Spielzeug wenn man Fernseher und Horizon über seine Uhr am Handgelenk steuern kann. :D

Das ist der Stand der Dinge fürs Erste...Wie es mit dem Projekt weitergeht könnt ihr zu gegebener Zeit hier bei Saschas-Bastelstube.de erfahren.

Anregungen, Verbesserungsvorschläge oder Verweise auf eure eigenen Projekte sind erwünscht und können gern per Mail an mich geschickt werden. Gerne stelle ich diese hier als Inspirationsquelle vor. :-)

Author: Sascha von Saschas-Bastelstube.de

Autor: sascha

Ein paar Worte über mich selbst. Mein Name ist Sascha, wie der Titel dieses Blogs erahnen lässt. :-) Ich bin von Beruf selbstständiger Programmierer und Trader. Neben Programmierung, Trading und Kampfsport sind einige meiner Interessen und Hobbys das Kochen, Fitness und das Hören lauter Heavy-Metal Musik. :D

Dies könnte dich auch interessieren

Projekt: pi_robot - Raspberry Pi, iPad und etwas Code

Der Raspberry Pi ist nach wie vor einer der beliebtesten Mini-Computer, nicht nur unter Bastlern. Kostengünstig (je nach Modell um die 30 bis 40,- EUR), flexibel im Anwendungsbereich und spätestens seit dem Raspberry Pi 3 auch mit ausreichend CPU-Leistung und Arbeitsspeicher ausgestattet, um auch etwas komplexere Aufgaben zu lösen. Mit dem 1,2 GHz quad-core ARM … „Projekt: pi_robot - Raspberry Pi, iPad und etwas Code“ weiterlesen


Armbanduhren: Luxus und Lifestyle

Bei dem Erwerb einer Armbanduhr stellt man sich unmittelbar vor eine große Herausforderung: Wie treffe ich die richtige Auswahl? Der Markt bietet nämlich derart viele Preis- und Qualitätsklassen, dass ein Überblick schwerfällt. Zudem ist die Kenntnis über einige Eigenschaften von Armbanduhren bei einer Kaufentscheidung von Vorteil. Wir zeigen Ihnen im Folgenden einen Überblick über die … „Armbanduhren: Luxus und Lifestyle“ weiterlesen


Fitnessboard v1 - DIYS

Am Wochenende hatte ich glücklicherweise mal wieder etwas Zeit zum Basteln und dazu noch eine ganz nette Idee für ein Fitness-Board für das Training zuhause, welches aus der Liegestütz-Position bedient wird. Ein Video dazu gibt es weiter unten in diesem Artikel und im Youtube-Channel von tedokai.de. Jeder der Zuhause dann und wann Sport betreibt kennt … „Fitnessboard v1 - DIYS“ weiterlesen


Telegram Messenger und die Bot API - Teil 2

Im ersten Teil - Telegram Messenger und die Bot API - bin ich auf einige Grundlagen eingegangen wie man einen Telegram-Bot einrichtet und diesen nutzt um sich Nachrichten, Informationen und sonstiges bequem auf sein Handy zu schicken. Da sich dieses Werkzeug als äußerst praktisch erwiesen hat, habe ich mich dazu entschlossen den vorherigen Beitrag nochmal … „Telegram Messenger und die Bot API - Teil 2“ weiterlesen


Kinder MP3 Player / Radio

Auf der Suche nach einem schönen und individuell konfigurierbaren MP3-Player für meine kleine Tochter, kam ich realativ schnell auf den Kinder-MP3-Player namens Hörbert . Ein schickes Gerät, gut verarbeitet und eigentlich genau das was ich gesucht habe - allerdings etwas zu teuer für meinen Geschmack. Inhaltsverzeichnis:Kinder MP3 Radio Player selber bauenProduktempfehlung - Kinder MP3-Player Kinder … „Kinder MP3 Player / Radio“ weiterlesen