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

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. :-)

Fernziel 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);
}

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.

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. :-)

Zuletzt bearbeitet: 7. Januar, 2018
Tags: , , , , , , , , , , , , , ,

Verwandte Beiträge

Hinzufügen von Website-Icons für iPhone, iPad und Android-Geräte

So ziemlich jeder Webseitenbetreiber hinterlegt im Wurzelverzeichnis seiner Webseite ein Favicon. Diese kleine Grafik wird dann im Browser-Tab oben neben dem Namen der Webseite angezeigt, genauso wie beim setzen eines Bookmarks bzw. Lesezeichens. Manch einer vergisst jedoch, dass inzwischen etliche Benutzer vorwiegend mit Mobilgeräten bzw. Smartphones wie iPhone, iPad oder Android-Smartphones und Tablets im Internet […] Weiterlesen »


Schnäppchensuche, Gutscheincodes und Rabattaktionen

Die experimentelle Suchmaschine von Saschas-Bastelstube.de wurde um das Themenfeld Schnäppchen, Coupons, Gutscheine und Rabattaktionen erweitert. Ab sofort findet man hier neben aktuellen Rabatten und Gutscheincodes auch Informationen und Sonderangebote von bekannten Onlineshops und Marken. Die verschiedenen Bereiche werden in Kategorien wie zum Beispiel Auto & Motorrad, Baby & Kind, Computer & Technik, Erlebnis- & Geschenkideen, […] Weiterlesen »


Streams und Apps um Radio zu hören

Der Empfang von deutschen oder auch ausländischen Rundfunkstationen ist kein Problem mit der passenden App. Auch Empfangsprobleme gehören so der Vergangenheit an. Inzwischen werden die meisten Sender auch über das Internet digital ausgestrahlt, sodass man nicht zwangsläufig auf ein Radio als Empfangsgerät angewiesen ist. Wer dennoch auf sein herkömmliches Radio nicht verzichten möchte, für den […] Weiterlesen »


Apps und Spiele für Apple Watch

Die experimentelle Suchmaschine von Saschas-Bastelstube.de für iOS- und Android-Apps wurde um eine weitere Kategorie und Funktionalität erweitert. Ab sofort findet man hier neben aktuell reduzierten Apps und Spielen auch Software speziell für die Apple Watch (WatchOS). Eine Sortierfunktion nach Kundenbewertungen, um sich schnell die Top-Apps und Top-Spiele  anzeigen zulassen, gibt es jetzt auch. Genau wie ein […] Weiterlesen »


KING OF KARTS 3D

Mach dich bereit, auf die Plätze, LOS! King of Karts ist ein faszinierendes 3D-Rennspiel! Besiege deine Freunde auf 8 Strecken. 3 unterschiedliche Spielmodi warten auf dich, wobei auch Mehrspieler-Partien mit bis zu 6 Geräten möglich sind. Sammle Power-Up-Items, entdecke Abkürzungen und verborgene Wege, benutze Boostfelder und Sprungschanzen und wage riskante Stunts und Drifts. King of […] Weiterlesen »