Apple HomeKit mit dem ESP8266 an einem Abend: Ein Dropshipping-Lichtbild Smarthome-kompatibel gemacht

Für knapp 15 Euro bekommt man über bekannte Dropshipper Lichtbilder, welche durch rückseitige Beleuchtung ihren Scham erhalten. Leider kann nur durch eine umständliche Kabelfernbedienung die Beleuchtung geändert werden. Zeit, das zu ändern und in die Apple HomeKit-Welt einzusteigen.
Publish Date
31. Oktober 2023
Read Time
13 minutes

Der Beginn

Ich muss zugeben: Manchmal lasse ich mich von Marketing und Produktbildern zu Spontankäufen verleiten. Ganz besonders auf Instagram und X/Twitter finden sich zuweilen neben Produktbildern und auf keinen Fall KI-Generierten Werbetexten der Link zu manchen finsteren Droppshipping-Unternehmen mit Sitz in Bottropp oder auf den Seychellen, welche im Hintergrund auch nur bei AliExpress oder Alibaba, den Großmärkten für Direktversand aus China, die Bestellungen eingeben. Jedes mal wenn ich eine Werbung für ein Produkt sehe, welches mit großen Versprechen bei dem Produkt und weniger großen Versprechen bei dem Kundensupport, sollte dann doch einmal etwas auf den tausenden Kilometern von China nach Deutschland schief laufen, wirbt, schaue ich zuerst, was denn das Produkt direkt „eine Ebene höher“ bei AliExpress kostet. Im Fall eines Lichtbildes, also einem rückseitig beleuchteten Kunstwerks, welches mir „im größten Sale des Jahres“ auf einer kleinen Dropshipping-Seite für „nur“ 59 Euro angeboten wurde, fand ich direkt auf AliExpress für schlappe 15 Euro inkl. dem Versand. Und bei diesem Preis wurde auch ich schwach: Wenn dieses Produkt auch nur halb so gut ist wie auf den Bildern dargestellt, wäre ich mehr als zufrieden mit meinem Kauf.

Gute 15 Tage später, als das Lichtbild mit gebrochenen Rahmen (nichts, was etwas Alleskleber nicht hätte reparieren können) in einem kaputten Paket geliefert wurde, konnte ich nach Reperatur des Rahmens einen ersten Blick auf meine Spontan-Investition werfen: Im ausgeschalteten Zustand ein Kunststoffrahmen im Holz-Look mit schwarzen Linien auf weißer Fläche, bei angeschalteter Hintergrundbeleuchtung mit farbigen Akzenten und erstaunlich überzeugendem Schattenwurf. Und auch wenn die Farben bei weitem nicht so Intensiv wie im Orginal sind, war ich mit dem Teil des Produkts durchaus glücklich. Weniger glücklich war ich mit der Entscheidung des Herstellers, zur Ansteuerung eine Inline-Fernbedinung zwischen dem USB-Stecker des Bildes und dem Rahmen zu stecken, die sowohl unflexibel als auch nur umständlich zu bedinen war, insbesondere wenn das Kabel möglichst versteckt werden sollte. Ganz zu schweigen von möglichen Tageszeit-Abhängigen automationen oder mehr als zwei Abstufungen bei der Farbwahl. Eigentlich wäre so ein Lichtbild ein perfektes Produkt für die Smart-Home Integration, doch aus mir unerklärlichen Gründen (wahrscheinlich einige Cent bei der Produktion sparen) gibt es keinerlei Produkte auf dem Markt, die dies anbieten. Da aber feststand, das ich mit der eingebauten Fernbedinung das sonst eigentlich tolle Kunstwerk nicht verwenden werde, wurde schnell klar, das ich selbst bei der Smarthome-Intergration nachhelfen müsste. Eine kleine Google-Recherche ergab kurz darauf, das mit WLAN-Fähigen Mikroprozessoren, insbesondere der ESP-Reihe der Firma espressif, eine Smarthome-Integration in das Apple HomeKit-Ökosystem möglich wäre, auch wenn viele der Libraries seit Jahren keine Updates mehr erhielten. Auf jeden Fall gab es mehr als genug Anhaltspunkte, um das Upgrade halbwegs realistisch erscheinen zu lassen.

Eine Abendliche Beschäftigung

Da ich nach meinem Umzug in das schöne Hamburg zur Zeit kaum noch Zugriff auf meine kleine Werkstatt habe, war ebenfalls klar, das aus dem Smarthome-Retrofitting kein tagelanges Projekt werden sollte. Stattdessen fasste ich den Plan, den Umbau an einem Abend zu vollenden. Das hatte zur Folge, das ich nur Komponenten nutzen konnte, die ich von anderen Projekten noch auf Lager und von denen ich halbwegs wusste, wie sie einzusetzen sind. Dabei hatte ich zu dem Zeitpunkt aber keine Idee davon, wie das Lichtbild intern aufgebaut war bzw. welche Ansteuerung zum treiben der LEDs verwendet wurde.

Um mal aus meinem klassischen Projektberichts-Format auszubrechen, einen Stilbruch zu wagen und damit etwas neues zu probieren, erzähle ich nun den Verlauf des Retrofittings Chronologisch und unterteilt in vier Epochen.

I: Vor 20 Uhr

"Soso, wie funktioniert hier was und welche Bauteile habe ich auf Lager?"

Es ist 17:15 Uhr. Nach sechs Stunden und sechs Minuten Fahrt von Hamburg bis Heidelberg komme ich im leichten Regen in meinem ehemaligen Zuhause an, dort, wo sich noch meine kleine Werkstatt befindet. Diese dient aktuell mehr als Ablagefläche und weniger als Ort zum Werkeln und Tüfteln. Eigentlich wollte ich noch etwas laufen gehen in den letzten Strahlen der nun deutlich schwächeren Herbstsonne, doch der Regen bei diesem Plan einen Strich durch die Rechnung.

Also beginne ich damit, die Werkbank freizuräumen und (wie man das eben macht) einfach alles, was dort auf der Werkbank so im Moment liegt, auf eine andere freie Fläche, demnach größtenteils den Boden, zu legen. Das Lichtbild, welches die Fahrt von Hamburg nach Heidelberg augenscheinlich überlebt hat, teste ich ein letztes mal mit der Fernbedinung und widme sogleich mich dem Auseinanderbau. Dieser stellt sich als sehr simpel dar, weil die Rückplatte, eine dünne MDF-Platte nur durch ein paar Metallclips festgehalten wird.

Ein erster Blick auf die Innenseite zeigt die reine Auslegung auf maximale Kosteneffizienz und brutalistisch simple Auslegung der Komponenten. Ein Kabel, ein LED-Streifen mit zwei LED-Weißfarbtemperaturen, und viel Luft. Gegenüber der MDF-Platte sitzt das eigentliche Bild, aufgeteilt in drei Schichten: Eine an bestimmten Stellen lichtblockende Pappe, dann ein transluzender Farbdruck der auf die vorderste Schicht, einem hauchdünnen Acrylmilchglas mit aufgedrucktem Linienmuster, projiziert. Der Rahmen besteht aus Kunststoff im Holz-Look und einem dickeren weißem Stück Schaumstoff, welches wahrscheinlich das Licht möglichst gut intern reflektieren soll. Alles in allem würde ich von maximal zwei, eher einem Euro Materialaufwand ausgehen. Mit sicherlich nicht ganz günstigem Versand aus China für dieses A4-Große Lichtbild kommt man am Ende auf einen Preis im oberen einstelligen Eurobereich. 15 Euro gezahlt zu haben ist dabei wohl Fair, 50 Euro wie bei anderen Anbietern für das exakt gleiche Produkt zu zahlen wohl schierer Wucher.

Der LED-Stripe mit seinen zwei einzeln ansteuerbaren Weißtemperaturen wird dabei bei 5V bei einer gemeinsamen Annode direkt von der Fernbedinung mit einem sehr unschönen PWM-Signal gesteuert und gedimmt, die Art, für Ecken einfach den LED-Stripe zu falten und mit Heißkleber an seinem Platz zu halten ist dabei aus Produktsicherheits- und Langlebigkeitssicht ungefähr die absurdeste Idee, die ich seit langer Zeit gesehen habe.

Wenn das auch nur eine offizelle Stelle für Produktsicherheit sehen würde, wären die (deutschen) Droppshipper wohl ganz schnell Geschichte.

Und auch wenn ich von dem physikalischem Aufbau in dem Lichtbild eher weniger überzeugt bin, so hat die ganze Einfachheit zumindest einen großen Vorteil: Ich kann mich einfach direkt mit einem Mikrocontroller an den LED-Stripe hängen und diesen als einfachen analogen Output betrachten anstatt (wie z.B. bei digital-LED-Stripes wie jenen, die auf der WS2812B-LED-Aufgebaut sind) die LEDs zu programmieren.

Also einmal in meine Kiste mit Bauteilen geschaut und einen ESP8266-Chip auf einem sog. NodeMCU V2, einem Breakout-Board mit einigen Lebenserleichterungen, z.B. der möglichkeit einer direkten 5V-Stromversorgung herausgezogen. Dazu nehme ich noch die Tüte mit Transistoren und MOSFETs heraus, mit denen ich die LEDs dann treiben könnte.

II: 20 Uhr bis 22 Uhr

Gelangweilte MOSFETs und gestresste Softwareentwicklung

Ich entscheide mich dazu, zum Treiben der LEDs MOSFETs vom Typ IRLZ44N von Infineon Technologies zu nehmen. Zum Einen, weil mit einer maximalen Schaltlast von fast 80 Ampere damit ich mir keine Sorgen um überhitzende Transitoren im TO-92-Format machen muss und weil ich von diesem Typen von sehr frühen Versuchen meinerseits in der Elektrotechnik (ca. 2014) noch wirklich einige bei mir habe. Und auch wenn es mir irgendwo Leid für die in diesem Sinne natürlich vollkommen Absurd überdimensionierten MOSFETs tut, so haben diese wenigstens aufgrund der günstigen entstehenden Arbeitsbedinugungen ein langes Leben vor sich.

Also nichts wie Lötkolben aufwärmen und ein paar Jumper-Kabel an die LED-Stripes löten: Nachdem diese nun mit einem Breadboard verbunden sind und ein Test-Setup aufgebaut ist, passiert beim ersten Einschalten (trommelwirbel bitte) genau gar nichts. Mindestens 30 Minuten, eine Oszilloskop-Analyse des Steuerungssignals des Mikrocontrollers später steht die Ursache der Fehler fest: Ich arbeite schlicht zu wenig in der Prototypenentwicklung in den letzten Jahren! Nicht ein Wackelkontakt oder ein kaputtes Bauteil, sondern der Fakt, den ich vergessen habe, das ein Breadboard in den Spannungsführenden durchkontaktierten Siderails in der Mitte unterbrochen sind, führt zu dem Nicht-Funktionieren. In der Zwischenzeit arbeite ich akribisch an der Software, welche mich ebenfalls vor ihre eigenen herausforderungen stellt. Diese kommen primär daher, das die Library nicht mehr out-of-the-box zu Apple HomeKit kompatibel ist und deshalb ein paar Anpassungen braucht: Insbesondere im Setup-Code fehlt es in vielen (älteren) Beispielen an dem Code-Schnipsel

arduino_homekit_setup(&accessory_config);
welches bei jedem Start des Mikrocontrollers die Konfiguration im Netzwerk bzw. gegenüber Apple Home Kit bekannt macht. Fehlt dieser im Setup, werden nach einem Reconnect nach dem Einrichten in Apple Home keine Daten mehr übertragen.

III: 22 Uhr bis 24 Uhr

Es werde Licht!

Besonders spannend ist in der Software für mich auch, wie die Funktionen des HomeKit-Zubehörs in der Hardware-Schicht definiert werden: Im Endeffekt werden für jedes Gerät die verschiedenen Eigenschaften als Feature Flag gesetzt; Im Internet konnte ich kein Bespiel für selbstentwickelte HomeKit-Accessories finden, die LEDs nur in der Weißfarbtemperatur steuern. Also begebe ich mich selbst auf die Suche nach der richtigen Feature-Flag, um bei HomeKit „HMCharacteristicTypeColorTemperature“ setzen zu können. Beim durchschauen des Library-Quellcodes finde ich dann „cha_color_temperature“ als mögliche Feature Flag, welche mir im Programm Werte von 50 bis 400 micro-reciprocal degrees (mired) zurückgibt. Dabei ist mired der Kehrwehrt der mehr geläufigen Farbtemperatur-Angabe Kelvin, es gilt:

\text{Mired-Wert} = \frac{10^{6}}{\text{Farbtemperatur in Kelvin}}

Nachdem ich nun etwas an der Software gearbeitet habe und ein erstes mal diese gerne testen würde, stelle ich mich wieder dem (immer noch) nicht funktionierenden Ansteuerungsschaltkreis. Diesen repariere ich in dem ich das Breadboard richtig verschalte (ein Wunder, das ein falsch zusammengestecktes Breadboard nicht richtig funktioniert).

Bevor ich die LEDs zum ersten Mal verbinde, messe ich jedoch erstmal mit dem Osziloskop nach, ob die Ansteuerung wie gewünscht funktioniert. Das die Verbindung klappt und der Microcontroller die Werte richtig interpretiert, zeigt sich damit:

Perfekt! Die Kommunikation zwischen Apple HomeKit und dem ESP funktioniert damit. Das dies so einfach geht habe ich bis vor ein paar Stunden nicht gedacht, schließlich ist Apple mit seinen Technologien sehr restriktiv, das man sich da so einfach mit einem ESP-Devboard reinklinken kann, hätte ich nicht gedacht. Aber noch ist viel optimierungsarbeit nötig: Die LEDs sind falsch gemapped in der Steuerung und die ganze Software ist noch sehr bloated mit unnötigen Funktionsaufrufen, welche die Ausführung und refresh-rate unnötig verlangsamen. Also optimieren und vereinfachen soweit wie möglich.

IV: Nach 24 Uhr

"Integrationshölle ist kein Witz"

Bei jedem Projekt, ob über mehrere Jahre und Milliarden-Dollar (wie z.B. die Autoherstellung) hinweg, oder ein Ein-Abend-Spaß, irgendwann erwartet jeden der Schritt der Integration des Erbauten. Bei diesem Projekt liegt die Integrationsarbeit vorallem darin, den fliegenden Aufbau vom Breadboard zu dem Einbau in den Rahmen, welche wie so häufig deutlich aufwendiger wird als angenommen. Nicht umsonst spricht man häufig von der Integrations-Hölle, weil in diesem Schritt nocheinmal viele benötigte Optimierungen auffallen. Ich beginne auf jeden Fall damit, die Jumper-Kabel zu entfernen und durch Widerstandsärmere Kupferkabel zu ersetzen, welche ich in dem selben schritt auf die richtige Länge kürze. Dann mache ich etwas, was manchem E-Techniker die Fußnägel hochrollen lässt: Ich klebe (!) die IRLZ44N-MOSFETs mit Heißkleber an die dünne MDF-Rückplatte. Ich würde dieses vorgehenen niemals und niemandem in keiner Situation ans Herz legen, aus Wartbarkeits- und Sicherheitsaspekten ist eine Verklebung von solchen Bauteilen der blanke Horror. Deshalb versichere ich mich doppelt, das meine MOSFETs nicht auch nur ein kleines Stück warm werden (die ausgerechnete maximale Verlustleistung bestimme ich auf etwa 0,1 Watt pro MOSFET im absoluten Worstcase, dazu kommen etwa 0,01 Watt von jedem Pull-Down Widerstand. Das ist nicht auch nur ansatzweise genug Verlustleistung, um das MOSFET auch nur einen Grad über Raumtemperatur zu heben – trotzdem: Wenn ihr nicht vorhabt, ein Projekt in einem Abend fertig zu stellen, andere Personen mit dem von euch gebauten jemals in Kontakt kommen sollen und ihr euch nicht absolut sicher sein könnt, das die Erwärmung der verklebten Bauteile vernachlässigbar ist, ist Klebstoff die falsche Option.

Nachdem ich die MOSFETs verklebt habe, kürze ich die beinchen meines NodeMCU-Microcontrollers und klebe diesen direkt daneben. Dieser wird mit den MOSFETs verkabelt, dann folgt ein neues USB-Kabel, welches ich gleich auf die benötigte Länge zuschneide. Dieses wird dann direkt mit den MOSFETs verbunden, dazu kläre ich mit einem dünnen Kabel noch die Stromversorgung des Mikrocontrollers (dieser arbeitet übrigens komplett auf 3,3 Volt Ebene, die 5V kann ich nur deshalb direkt anschließen, weil der NodeMCU einen internen Spannungswandler von 5 Volt auf 3,3 Volt besitzt und deshalb mit der Versorgungsspannung umgehen kann. Das Logiklevel an den MOSFETs ist natürlich trotzdem 5V) und führe dann das USB-Kabel mit einem Knoten vor dem Burchbruch in der Rückplatte als Zugentlastung nach außen.

Das Ergebnis

Nach rund sechs Stunden des Probierens, Lötens und Software-Schreibens war es also fertig: Mein Lichtbild mit retrofitted Apple-Home-Anbindung. Als Projektnamen habe ich MyFrame gewählt, da mit der Anbindung aus irgendeinem Lichtbild im Rahmen wirklich mein Lichtbild im Rahmen wurde. Ich könnte nicht glücklicher über die Funktionalität sein, so geht jedes Mal das Lichtbild an, wenn ich nach Hause komme und geht wieder aus, wenn ich das Haus verlasse. Auch der Sonnenverlauf wird nachgestellt dank der Apple HomeKit und einer Drittanbieter App von Eve Systems, mit welcher man bei allen HomeKit-Geräten die für diese Simulation benötigten Abläufe erstellen kann. wie das geht, hat der Blog „Smartapfel“ in einem Beitrag erklärt.

Und jetzt du!

Nach der fertigstellung habe ich die Software sowie einen kleinen Schaltplan auf GitHub veröffentlicht. In dem Repository ist auch eine Kopie der verwendeten Library, damit diese direkt installiert werden kann.

Wenn du das Projekt nicht nur replizieren, sondern selbst etwas in die Richtung entwickeln willst, würde ich empfehlen, einen Blick in der HomeKit-Library in die Datei

/src/homekit/characteristics.h

zu werfen. Dort sind alle Apple HomeKit-Charactaristika implementiert, direkt mit den maximalen Werten, die deinem Programm übergeben werden können.

Ideen für die Zukunft

Das Projekt hat mir die Augen geöffnet, wie viel mit selbstentwickeltem Zubehör für Apple HomeKit möglich ist: Von Spielereien mit Licht bis zu Bewässerungsgeschichten und tiefgehenden Home-Automatisierungen ist vieles Möglich, das ich gerne noch ausprobieren würde. Auch das Konzept des Lichtbilds hat mich angefixed, gerne würde ich selbst ein größeres Lichtbild bauen. Dafür stehen die Planungen aber erst ganz am Anfang, gerade die Datengenerierung für die Motive ist nicht simpel. Sollte sich jemand Berufen fühlen, mit mir an dem Thema zu arbeiten und ein Lichtbild in A3 oder sogar A2-Größe für noch mehr „Wow-Faktor“ zu bauen, kann sich gerne hier melden. Auf jeden Fall hat es riesen Spaß gemacht, nach einiger Zeit und anderen Projekten wie dem TemperatUHR-Projekt mal wieder in die Hardwareentwicklung einzutauchen – sicherlich etwas, was in in der nahen Zukunft gerne wiederholen würde. Ideen gibt es auf meiner Seite genug.

Post Tags

Related Tags

My Blog

Related Articles

Leave an Opinion

Your email address will not be published. Required fiels are marked *

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.