my-CTRL

x

LOGO

Die WEB - APP

Volle Kontrolle!

Weltweit!

Die Web-App

Damit ich die Objekte übers Handy bedienen kann. Weltweit.


Eine grafische Benutzeroberfläcke soll es sein. Chic und intuitiv. Für Smartphone, Tablet und PC. So dass meine weitaus bessere Hälfte sie bedienen kann - ohne zu behaupten, das sei viel zu kompliziert. Und so, dass die sehr design-orientierte Dame sich nicht mit einem weithin sichtbar selbstgebastelten Bedienfeld blamieren muss, das schon optisch abtörnt.

Die Web-App soll überall da funktionieren, wo es eine Datenverbindung gibt. Weltweit und in Echtzeit. Darüber hinaus soll das Ganze dann auch noch sicher sein, also ohne dass sich jeder einfach in mein Haus einhacken kann.

Zu guter Letzt brauche ich auch noch einen Pushmessage-Service, denn ich möchte auch über Wasserlecks, geöffnete Fenster und Temperaturüberschreitungen gewarnt werden, wenn die App gerade nicht läuft. Ihr sehr schon: es gibt einiges zu tun!


Echte Handy-App oder Website?

Ich will mein Haus ja schließlich in Echtzeit über das Handy steuern und überwachen können
Februar 2016
blynk.jpg

Bisher fand die Softwaresteuerung ausschließlich über die Python Scripts auf dem Raspberry Pi und mit wenig Interaktivität statt. Ich möchte den Zustand meiner Objekte im Haus schließlich in Echtzeit anzeigen. Und meine Geräte schalten. Über das Smartphone. Weltweit.

Ein schickes grafisches Benutzerinterface soll es sein. Mit allem PiPaPo und professionellem Aussehen. Zur Auswahl stehen fertige Interfaces, echte App-Programmierung und ein Webinterface.

Nach einigen Versuchen muss das sehr elegante BLYNK leider ausscheiden. Ich schaffe es nicht, die vorgegebenen Bedienelemente für meinen Zweck zu konfigurieren, wie ich es mir vorstelle.

Eine echte App macht eine eigene Programmierung für jedes Bertriebssystem erforderlich. In meinem Umfeld sind PCs, Macs, iPhones, Android und Windows-Mobile Geräte. Nee, das wird nix!

Also bleibt die Web-App, die ich einmal programmiere und auf jedem Gerät starten kann. Für das was ich brauche, muss ich aber HTML, CSS, Java Script und PHP lernen. Neben Python für den Pi kommt jetzt nicht nur eine weitere Programmiersprache hinzu, sondern gleich vier! Uiuiui, was habe ich mir da nur vorgenommen?!?!?!

LOGIN

Erste Steuerungsversuche am Handy

...besser gesagt: die allerersten Versuche mit PHP und Java Script
Februar 2016
standardbuttons.jpg

Ein bisschen statisches HTML hatte ich vor ein paar Jahren schon mal versucht. Jetzt muss es dynamisch sein und dazu braucht es PHP.

Bis jetzt bin ich gut vorangekommen und das soll bitteschön so weitergehen. Also flugs den Apache Server auf dem Pi installiert und mit meinen ersten PHP Hüpfern losgehoppelt. Die ersten Versuche mit den winzigen HTML-Standard-Buttons sind sehr holprig, und ich brauche einige Versuche bis es schließlich klappt. Ich bin froh, als das erste Kommando mit Rückmeldung funktioniert, aber ehrlich gesagt habe ich das Zusammenwirken von HTML und PHP noch nicht so recht verstanden.

Auch optisch ist das Ganze eher nicht der Brüller, aber es funktioniert immerhin. Ich schalte voller Stolz den ganzen Tag eine Leuchtdiode auf dem Breadboard ein und aus und freue mich wie ein Schnitzel, wenn das Textinterface auf meinem iPhone korrekt meldet: "LED ist AN" oder "LED ist AUS".

Allerdings sieht das sehr nach Website aus und nicht wie eine richtige App. Das muss doch auch ohne Eingabezeile gehen! Zumindest für das iPhone bekomme ich das hin! Und nach einiger Zeit klappt es auch beim Androiden. Das hebe ich mir für die Grafische Variante auf, die ich jetzt als nächstes angehen möchte.

LOGIN

Pushmessages

Damit ich Warnungen und Alarme auch bei inaktiver Web-App bekomme.
Februar 2016
Pushover.png

Pushmessages funktionieren nur mit einer echten App. Sie müssen vom Python Script im RasPi ausgelöst werden, sobald dieses eine Alarmsituation feststellt. Da ich nur eine PHP Website habe, die nicht immer läuft, nützt es nichts, eine Meldung auf die Web-App zu bringen.

Im Internet finde ich solche Dienste und entscheide mich für Pushover. Es kostet nur einmalig 7€ und dafür sind monatlich 10.000 Messages enthalten. Das sollte mal mehr als locker reichen.

Die Einbindung ins Python Script ist kinderleicht und funktioniert sofort und bestens. Man kann den Meldungstext, den Ton, die Prioritäten und vieles andere für jede Meldung frei wählen. Das ist genau das was ich brauche!

Ein paar Zeilen Code im Python Script an den richtigen Stellen und schon pfeift mein Handy, sobald ich im Szenario UNTERWEGS virtuell ein Fenster öffne oder wenn ein bestimmtes Temperaturlimit überschritten wird.

LOGIN

Der Python wächst

... und zwar rapide!
Februar - Mai 2016
python.png

Mit einzelnen kleinen Python Scripts auf dem Himbeertörtchen ist es jetzt nicht mehr getan. Die Einführung der Datenbank und das Abarbeiten der verschiedenen Objekttypen wie Heizung, Licht, Fensteralarme, Temperaturen und so weiter, erfordert ein komplexes und umfangreiches Python-Script, ohne das nichts mehr geht.

Gott sei Dank ist die Sprache nicht sehr kompliziert, so dass es recht schnell vorangeht. Schritt für Schritt und Gewerk für Gewerk arbeite ich mich vor. Lediglich die Syntax beim Datenbankzugriff ist etwas anders als in PHP, so dass ich hier ab und zu mal verzweifle. Man findet diese Fehler nicht auf Anhieb!

Trotzdem schaffe ich es mit akzeptablem Aufwand. Nachdem das Script innerhalb von ein paar Tagen steht, funktioniert es zu 70% gut. Wie immer dauern die letzten 10% am längsten. Vor allem einige der verschiedenen Schalterarten bereiten mir im Zusammenspiel mit der Web-App lange Zeit große Probleme.

LOGIN

Das erste Web-Interface

...jetzt auch mit eigener Grafik und mit Datenbank!
April 2016
firstGUI1.png

Als erstes entwerfe ich schöne bunte Bildchen, die mir als grafische Buttons und als Statusanzeige dienen sollen. Das macht zwischendurch auch mal Spaß.

Es ist gar nicht so einfach, herauszufinden, wie man mit PHP grafische Buttons programmiert, die dann je nach Status unterschiedlich aussehen, aber an der selben Stelle auftreten sollen. Nach einer gefühlten Ewigkeit glaube ich es verstanden zu haben, um dann herauszufinden, dass es doch eher Zufall war...

Meine Idee ist, dass sich das Web-Interface automatisch konfiguriert, indem es genau die Objekte anzeigt, die in der Datenbank als installed="Y" eingetragen sind. Erstaunlicherweise klappt das gleich auf Anhieb.

Die Startseite enthält die Hauptsteuerelemente und die Links zu den Gewerkseiten, also momentan Licht und Heizung.

Außerdem definiere ich Szenarien, mit denen ich schnell und bequem alle wichtigen Situationen mit einem einzigen Tastendruck steuern kann.

Die 3 Szenarien auf der Hauptseite werden kontextsensitiv ausgewählt. Wenn das Szenario "Bin Zuhause" aktiv ist, macht es keinen Sinn, "Coming Home" anzubieten, sondern "Schlafen" oder "Weggehen". Ich nenne das "Quickselect".

LOGIN

Szenarien

...zum Steuern und Überwachen der gesamten Bude mit einem einzigen Klick
April 2016
szenarien.png

Die Steuerung der Hausautomation soll einfach sein. Niemand wird jedes Licht einzeln ausschalten und für jeden Raum die Heizung einzeln regeln wollen.

Dazu definiere ich Szenarien, mit denen ich schnell und bequem alles mit einem einzigen Tastendruck steuern kann: Wenn ich z.B. aus dem Haus gehe, sollen alle Lichter ausgeschaltet werden und eine Warnung ausgegeben werden, wenn noch ein Fenster offen ist. Nachts soll die Heizung abgesenkt werden und wenn ich verreist bin, reicht Frostschutztemperatur und das zufällige Schalten von Lampen im Haus soll Anwesenheit vorgaukeln.

Die meistbenutzten Szenarien werden als Quickselect auf der Hauptseite passend zum aktuellen Kontext angeboten. Alle anderen Szenarien, die man nicht so häufig benutzt (z.B. VERREIST, VORHEIZEN oder PARTY) können im Bereich Szenarien aber jederzeit angewählt werden.

Ich sprühe vor Ideen und kann nachts kaum schlafen, weil mir immer neue Dinge durch den Kopf gehen. Die Möglichkeiten scheinen endlos. Ich beschließe, das Ganze auf Platinen aufzubauen und tatsächlich im Haus einzubauen!

LOGIN

Die Web-App reift und gedeiht!

Sooo viele Tests und noch mehr Korrekturen
Mai 2016
firstGUI2.png

Das GUI funktioniert schon an vielen Stellen und macht richtig Spaß. Genau so habe ich mir das vorgestellt. Aber es ist auch noch richtig viel zu tun. Die Liste der Bugs ist endlos.

Dennoch: mein Konzept reift von Tag zu Tag und auch die Ideen, wie ich die Hardware vom Steckbrett in dauerbetriebstaugliche und flexible Module verwandelt bekomme, nehmen langsam Formen an.

Die Datenbank besteht aus je 1 Tabelle für jedes Gewerk: eine Tabelle für die Alarme (Fenster und Wasser), eine Tabelle für Lichter und andere geschaltete Objekte, und eine Tabelle für die Heizungen und Temperatursensoren.

Man denkt immer: gleich ist man fertig, aber dann steckt der Teufel im Detail und es liegt noch viel mehr Arbeit vor einem als man glaubt.

Natürlich muss mit jeder Erweiterung auch das Python Script angepasst werden, das die Sollwerte aus der Datenbank liest, dann an der Hardware einstellt und den Istzustand wieder zurück in die Datenbank schreibt. Um die App alleine zu testen, kann man die Werte manuell in der Datenbank ändern, denn das Python Script ist bereits auf die "finale" Hardware ausgerichtet.

Wohlgemerkt: mein "Haus" besteht immer noch aus dem Breadboard, wo ich lediglich einige LEDs ansteuere und überwache. Es wird Zeit, dass die Hardware auf eine Platine kommt!

LOGIN

Akzeptieren

Diese Website verwendet Cookies. Durch die Nutzung dieser Webseite erklären Sie sich damit einverstanden, dass Cookies gesetzt werden. Mehr erfahren