Projekte
MPDPlayer
MPDPlayer ist eine App fürs iPhone, die im Apple AppStore veröffentlicht ist. Zweck dieser App ist es, die Kommunikation zu einem beliebigen MPD-Server (Music Player Daemon - https://www.musicpd.org/) aufzubauen. Nach der Installation des MPD ist es möglich eigene auf dem Gerät befindliche Musik abzuspielen und diese dann durch diverse Clients zu steuern, wie beispielsweise durch meine App.
Weitere Informationen zu meiner App sind auf der entsprechenden MPDPlayer-Homepage zu finden.
HomeKit
HomeKit ist ein Feature von Apple für deren Geräte. Sind kompatible Geräte im Netzwerk vorhanden, können diverse Geräte, wie Lichter oder Schalter gesteuert werden.
Da es für Mikrocontroller von geringer Größe, wie beispielsweise einen ESP8266, keine angemessene Implementierung gibt, habe ich an einer eigenen HomeKit-Implementierung gearbeitet. Die Implementierung ist auf meinem Gitlab-Server vorzufinden. Die Implementierung basiert auf der nichtkommerziellen HomeKit Spezifikation, die hier zum Download bereitsteht.
Ziel ist es die Implementierung weiterzuentwickeln, dass eine universelle HomeKit-Bibliothek bereitgestellt werden kann. Dadurch muss eine Implementierung für ein Gerät nur um die Gerätespezifischen Bibliotheken erweitert werden.
YoutubeDownloader
Um Songs von Youtube einfach und schnell herunterzuladen, habe ich ein Backend bzw. eine REST-API entwickelt. Eine Beschreibung der API ist unter https://youtubedownloader.a-berisha.de/ zu finden, wobei die eigentliche API unter der URL https://api.youtubedownloader.a-berisha.de/ liegt.
Dieses Backend ist derzeit in vier Module eingeteilt. Einmal der "Playlist-Synchronizer", das größte Modul, und nimmt bei seiner Initialisierung über die API eine Youtube Playlist URL als Parameter entgegen um diese später regelmäßig synchronisieren zu können. Findet der Playlist-Synchronizer ein neues Video in der Playlist, versucht es den Song mittels der Youtube-Metadaten herunterzuladen. Wenn in diesen Metadaten der Künstler und Titel des Werks hinterlegt ist, setzt er den Song mit den entsprechenden Metadaten direkt in die Download-Warteschlange. Andernfalls setzt er das Video bzw. den Song auf eine andere Warteschlange, die anschließend ausgelesen werden kann um diese manuell mit den nötigen Metadaten zu befüllen.
Ein weiteres Modul liefert die wichtigsten Metadaten über eine Youtube-URL. Wird eine URL über eine Youtube Playlist mitgegeben, liefert das Modul alle enthaltenen Videos daraus aus, solange dieses nicht durch zwei zusätzliche Parameter "start" und "end" beschränkt wird. Welche Informationen zurückgegeben werden, kann in der vorher genannten API-Beschreibung entnommen werden.
Zweck des dritten Moduls ist das direkte Herunterladen eines Songs mittels einer mitgegebenen Youtube-URL, einem spezifizierten, relativen Pfad und den Metadaten für den Song.
Das vierte Modul ist für die ID3-Tags verantwortlich. Mittels der ID3-Tags werden Metadaten auf den heruntergeladenen Songs abgespeichert. Somit ist eine Auflistung und Modifizierung sämtlicher Metadaten aller Songs bzw. Dateien möglich.
Um Dritten den Zugriff zu verweigern, findet eine Autorisierung über einen API-Key statt.
Homebridge Plugins
Homebridge ist ein leichtgewichtiger NodeJS-Server, der beliebig mit Plugins erweiterbar ist.
Ein von mir entwickeltes Plugin ist das "homebridge-led-strip" Plugin, das ein simples Ziel verfolgt, eine LED bzw. eine LED-Kette mittels hinterlegten Pin zu steuern. Dieses Plugin ist auf meinem Gitlab-Server und auf NPM verfügbar.
Ein weiteres Plugin, ebenfalls für den Gebrauch mit LEDs gedacht, ist das "homebridge-blinkled", dass den gleichen Zweck wie das eben genannte Plugin erfüllt, nur das es mittels der Helligkeitsstufen die Geschwindigkeit des Blinkens einstellt, anstatt die Helligkeit der LEDs. Dieses Plugins ist auch auf meinem Gitlab-Server und auf NPM verfügbar.
Um die mitgelieferte Set-Top-Box (STB) von Unitymedia (Horizon-Box) zu kontrollieren, habe ich für dieses ebenso ein Homebridge Plugin entwickelt, dass das Ein- und Ausschalten und weitere Funktionen bereitstellt. Weitere Funktionen sind beispielsweise das Wechseln des Programms. Dieses Plugins ist auf meinem Gitlab-Server und auf NPM verfügbar.
Zum jetzigen Stand (01.09.2019) ist das Abrufen des Status der Horizon-Box seit etwa 3 Monaten nicht mehr möglich. Vermutlich aufgrund eines Updates. Früher konnte der Status, also ob die STB an oder ausgeschaltet ist, mittels der URL "http://IP:62137/DeviceDescription.xml" überprüft werden. Ist eine erfolgreiche Antwort zurückgekommen, war die STB eingeschaltet. Falls jemand eine Alternative zum Abrufen des Status gefunden hat, möge er sich bitte bei mir melden, dann werde ich dieses in das Plugin einarbeiten.