Es ist so weit die neue Version (V1.0) des SmartHome yourself Systems steht nun endlich bereit.
Im Downloadbereich der Projekt-Homepage findet Ihr einen Link zum aktuellen SD-Karten Image, welches eine vorinstallierte Haussteuerung incl. aller neuen Features beinhaltet. Das Image habe ich zwar mit einer 8GB-SD Karte erstellt, da dies aber bei einigen Usern beim Beta-Image öfter zu Problemen geführt hat, da es für viele 8GB-Karten scheinbar zu groß ist, rate ich der Einfachheit halber zur Verwendung einer mindestens 16GB großen SD-Karte. Sobald die PI-Cam bei Abwesenheit als Überwachungskamera dienen soll, macht es eh Sinn, etwas mehr freien Speicher einzuplanen.
Das meiste der Neuerungen habe ich ja bereits im „500-Abos Video“ grob vorgestellt und im letzten Posting auch noch mal aufgelistet. Ich werde hier aber trotzdem noch einmal auf alle Punkte im Detail eingehen.
Wem das alles zu viel zu lesen ist, der findet am Ende dieses Beitrags auch das Video zum Release, in dem ich alles noch einmal zusammengefasst vorstelle.
Zuerst einmal, was gibt es neues?
– Neue dynamische Parameter
Klingt erst mal gut, aber was ist damit gemeint? Bisher waren eigentlich nur zwei Parameter zum Schalten von Geräten möglich. Und zwar die von meinen Funksendern verwendeten Parameter „schalte“ für die Geräte-ID und „dimm“ für die Helligkeitsstufe der Dimmer (falls fürs Gerät aktiviert).
Ich habe mir einige Gedanken dazu gemacht, wie man das ganze so erweitern kann, dass man nahezu jede eurer Ideen dynamisch ohne neuen Programmieraufwand ins System integrieren kann. Dabei heraus gekommen ist folgender Ansatz.
Zuerst einmal habe ich Parameter-Arten eingeführt, mit denen für jeden Parameter angegeben wird, um was für einen Datentyp es sich handelt (Zahl von/bis, Text, feste Werte…).
Da die benötigten Parameter von den verwendeten Arduino-Sketches (Also den Sendern) vorgegeben werden, und jegliche Variation ermöglicht werden sollte, habe ich dazu noch Sender-Typen eingeführt. Diese definieren, welche Parameter für eine bestimmte Art von Sender notwendig sind und welchen Datentyp diese erwarten. Diese Sender-Typen kann man nun in den Sender-Einstellungen im Bereich „Einstellungen-Basis“ den einzelnen Sendern zuweisen, und somit bestimmen, welche Parameter an das Gerät übertragen werden. Gleichzeitig legt man dadurch fest, welche Einstellungsmöglichkeiten für die Geräte in den Geräte-Einstellungen bzw in der Steuerung zur Verfügung stehen sollen.
Diese Sender-Typen könnt Ihr natürlich beliebig viele selber im System hinzufügen und das System somit jeder Zeit erweitern, wenn die existierenden Parameter-Kombinationen nicht ausreichen. Das ist aber nur notwendig, wenn ein neuer Sender mit anderen Parametern integriert werden soll. Wenn Ihr nur einen zweiten Funksender ins Netz einbinden wollt, da der erste z.B. mit der Reichweite des Funksignals nicht ausreicht, reicht es schon einen zweiten Funksender vom selben Sender-Typ in den Basiseinstellungen anzulegen. Heist, diese Funktionalität richtet sich eher an die User unter Euch, die Ihre eigenen Arduino-Projekte in die Haussteuerung integrieren wollen.
– Neue Editoren
Da durch die neue Parameter-Logik beliebige Kombinationen und vor allem auch eine große Anzahl an Parametern je Gerät denkbar sind, wollte ich eine Möglichkeit bieten, hier individuelle Steuerungs-Masken für die Geräte zu ermöglichen. Mein Testobjekt war in dem Fall der RGB-Controller den einige vielleicht auch schon aus meinen Videos kennen.
Dieser erwartet ja z.B. 3 Parameter (red, green, blue vom Typ Zahl 0-255). Diese Auswahl von Zahlen ist aber doch sehr umständlich, wenn man eigentlich ja eine Farbe auswählen möchte. Daher kann man nun für alle Geräte, die mindestens 3 Parameter besitzen die noch keinem Editor zugeordnet sind, diesen RGB-Farbwahl-Editor zuweisen. Diese Zuordnung ist je Gerät individuell möglich. Derzeit werden die Parameter-Arten noch nicht auf korrektheit geprüft. Hier müsstet Ihr selber noch ein wenig aufpassen was Ihr einstellt. Diesbezüglich werde ich aber sicherlich noch die Einstellungen optimieren und auch weitere Editor-Alternativen nachreichen.
Diese Einstellungen sind Anfangs evtl. etwas verwirrend. Daher vielleicht nur als kurze Hilfestellung kurz und knapp formuliert: Editoren und Sender-Typen haben beide unabhängig voneinander frei definierbare Parameter. Die Editoren Senden Ihre Parameter weiter, während hingegen die Sender-Typen die Parameter definieren, die vom Sender in Empfang genommen werden. In den Geräteeinstellungen muss man also bei der Zuordnung eines Editors diese beiden Seiten einander zuordnen, damit die in der Steuerung eingestellten Werte auch richtig an den Sender des Gerätes übermittelt werden können.
Das klingt jetzt erst einmal furchtbar kompliziert. Ich denke aber, wenn man es einmal gemacht hat, geht es danach recht leicht von der Hand. Ansonsten habe ich diese Einstellungen noch mal mit Fallbeispiel in eine Anleitung verpackt in der Ihr das ganze jeder Zeit noch einmal ausführlich nachlesen könnt.
– Steuerung, Shortcuts, Zeitplan an neue Logik angepasst.
Die Bereiche Steuerung, Shortcut und die Zeitplanung wurden in der Desktop- so wie Mobile-Ansicht an die neue Parameter-Logik angepasst. In der Steuerung werden die Daten nun über Objekte in einer Form übergeben und nicht mehr per Link. Dadurch sind die Buttons nicht mehr bunt und etwas kleiner. In den Shortcuts bekommt man bei aufgeklappter Liste der Elemente die hinterlegten Parameter-Werte mit angezeigt.
– Refactoring / Performance
Die meiste Arbeit fand wohl immer noch „unter der Haube“ statt. Ich habe mich bemüht öffentliche Methoden die wesentliche Logik enthielten in Objekte zu packen wo es nur ging. Das ermöglichte gleichzeitig ein Caching von Objekten, um mehrfaches Ermitteln von Daten und Abhängigkeiten zu unterbinden. So wurde das ganze System mMn. noch einmal ein Stück schneller.
Was die Bedienung zusätzlich angenehmer macht, ist dass Schaltvorgänge nun im Hintergrund erfolgen und der Seitenaufbau sich dadurch nicht mehr verzögert bis alle Geräte geschaltet wurden. (Allerdings lassen sich neue Schaltbefehle wärend andere noch laufen derzeit noch nicht hinten einreihen. Da muss ich mir noch etwas zu überlegen)
– API vorbereitet und ersten Basis-Aufrufe implementiert
Damit alle, die vielleicht schon einmal darüber nachgedacht haben, eine App oä für die Haussteuerung zu basteln vielleicht schon einmal beginnen können, habe ich eine Schnittstelle vorbereitet, mit der man die ersten Daten aus der Haussteuerung in Form einer XML abfragen kann.

