Posts

Es werden Posts vom Juli, 2017 angezeigt.

d3 Einstieg

Bild
Wie wir in den früheren Posts gesehen haben, kann man mit Skripten und Vis relativ viel machen, um die Funktion von ioBroker zu erweitern und zu visualisieren. Allerdings hat der einfache Zugang auch seine Nachteile: Debuggen ist umständlich. Umfangreichere und modulare Skripte sind darum schwierig. Man ist für die Visualisierung zunächst mal auf existierende Widgets festgelegt. Zwar kann man das DOM "von Hand" manipulieren, aber das wird bei grösseren Projekten schnell zum Albtraum. Ich vermisse die gewohnten Frameworks wie D3 oder Aurelia  und die umfassenden Edit- und Debugmöglichkeiten einer Entwicklungsumgebung wie Idea  oder auch nur eines komfortablen Editors wie  Atom . Glücklicherweise ist das kein Problem. Der ioBroker-Adapter "simpleAPI" aus der Gruppe "Kommunikation" stellt eine REST-Schnittstelle zum Auslesen und Setzen von States bereit. Dieses API kann man mit beliebigen Programmen in irgendeiner Programmiersprache, die REST-Anfra

Darstellungsvariationen

Bild
Hier mal ein kleiner Einschub zum Fluch jedes Webentwicklers: Ich habe die im letzten Post gezeigte Visualisierung auf einem Mac mit Safari-Browser entwickelt und getestet. Da sah z.B. das ein/aus/auto-Element so aus: Wenn man nun die Seite mit einem Chrome-Browser aufruft, dann sieht dasselbe Element so aus: Derartige Probleme sieht man nur, wenn man unterschiedliche Browser und unterschiedliche Betriebssysteme ausprobiert. Manchmal ist es recht schwierig, sie zu beheben. Hier in diesem Fall ist es einfach: Statt sich auf die Default-Darstellung der Browser zu verlassen, gibt man explizit die Schrift vor: Wichtig ist hier auch, dass Sie die Fort-Size wirklich in Pixeln (oder em) eingeben, und nicht die vorgegebenen Möglichkeiten "small", "medium", "normal"  etc. einsetzen. Denn just diese Begriffe interpretieren die Browser je nach Voreinstellung unterschiedlich. Faustregel: Immer dann, wenn es um Fliesstext geht, sollte m

Backup und weiter

Bild
Jetzt haben wir schon so viel Mühe und Zeit investiert, dass es ein Jammer wäre, wenn der Raspberry Pi oder auch nur die SD-Karte aus irgendeinem Grund kaputt ginge. Der Wert der Hardware wäre dann fast zu vernachlässigen, verglichen mit der vielen Zeit, die wir hinein gesteckt haben. Aber wie kann man die Arbeit sichern? Das ist gar nicht mal so schwer: Um die Skripte zu sichern, klicken Sie auf "Export von allen Skripten" Und um eine Vis-View zu sichern, klicken Sie im Vis Editor auf Setup->Projekt-Export->Exportieren: In beiden Fällen erhalten Sie ein gezipptes Backup auf Ihrem lokalen Computer (also nicht auf dem Raspberry). Aussenlicht-Widget Damit können wir uns jetzt den nächsten UI-Elementen zuwenden. Das Aussenlicht funktioniert ganz gut automatisch. Nur: Wir wollen das Licht auch manuell schalten können, ohne dass die Automatik es im unpassenden Moment an- oder ausschaltet.  Dieses Schaltelement ist ein Schalter mit drei St

Visualisierung

Bild
Vis ist die in ioBroker standardmässig mitgelieferte Visualisierungslösung. Vis untersteht einer eigenen Lizenz, welche für Privatgebrauch kostenlos ist. Man kann die Lizenzdatei über iobroker.net beziehen und in den Einstellungen der vis-Instanz in der Admin-Konsole eingeben.   Soweit ich es erkennen kann, funktioniert aber derzeit auch die unregistrierte Version normal. Normalerweise wird man zusätzlich noch ein oder mehrere Widget Sätze installieren. Diese findet man in der Admin-Konsole in der Rubrik "ioBroker.vis". Für diese Demo hier benötigen wir die "canvas gauges style Widgets". In früheren Posts habe ich ja schon gezeigt, wie man auf einfache Weise einen Button mit einer Lampe verbinden kann. Jetzt möchte ich eine visuelle Darstellung aller Smarthome-Objekte im Haus in einem Guss entwickeln. Leider bin ich grafisch nicht besonders talentiert, aber wir fangen einfach mal klein an: Raspberry Pi Monitor   Als erstes bauen wir einen Überwac

von Schedules und Triggern

Bild
Regelmässige Ausführung mit Schedule In den vorherigen Posts habe ich häufig folgenden Ausdruck verwendet: schedule({'* * * * *'}, function(){}) Dies bewirkt, dass die als zweites Argument genannte Funktion zu Zeiten ausgeführt wird, die das erste Argument vorgibt. Dabei stehen die Sterne von rechts nach links für Wochentag, Monat, Tag im Monat, Stunde, Minute. Wenn noch ein sechster Stern vorhanden ist, dann steht der ganz links für Sekunden. So bedeutet beispielsweise "10 * * * *", dass etwas jeden Tag jede Stunde zur 10. Minute ausgeführt wird. Oder "10 7 * * *", dass etwas jeden Tag um 07:10 Uhr dran ist. Wichtig ist, dass man die "10" in obigem Beispiel nicht mit "alle 10 Minuten" verwechselt. Dies wurde man mit "10,20,30,40,50 * * * *" oder mit  "*/10 * * * * " erreichen. Glücklicherweise muss man sich mit derartigen Codes nicht wirklich herumschlagen, ein Klick auf "Cron" rechts oben lässt

Sonne in den Tank

Bild
Nach den ersten Spielereien mit ioBroker-Skripten kam eine etwas anspruchsvollere Idee auf: Das Auto soll tagsüber nur dann laden, wenn die Photovoltaikanlage dafür ausreichend Strom liefert. Andernfalls soll es nachts den Niedertarif nutzen. Wir brauchen also die momentane Leistung des Solardachs und wir brauchen eine Möglichkeit, das Ladegerät des Autos davon abhängig zu schalten. Ersteres ist einfach: Es gibt ja bereits einen ioBroker Adapter für den Fronius Wechselrichter, der unter Anderem auch die Momentleistung und die Netto-Leistung vom/ins Netz ausspuckt. Das Auto lässt sich zwar ebenenfalls per Fernsteuerung laden, aber die Schnittstelle dafür ist leider nicht offengelegt, und ausserdem lässt der Hersteller sich die Fernsteuerung auch per Jahresabo bezahlen. Aber es gibt eine andere Möglichkeit: Man kann das Ladegerät an eine schaltbare Steckdose anschliessen. Davon gibt es eine ganze Reihe, zum Beispiel von Homematic etc. Ich hatte aber ein Exemplar von myStrom. Für

Einfache Script-Beispiele

Bild
Zwei Lampen miteinander verknüpfen Wenn wir das Licht im Esszimmer ein- und ausschalten, soll auch gleich das Licht im Korridor dasselbe tun.  Das ist ein wirklich simples Skript: Wir setzen eine "subscription" auf die Eigenschaft "on" der Esszimmer-Lampe und reagieren auf Schaltvorgänge, indem wir der Korridorlampe denselben Status zuweisen. Derartige Verknüpfungen werden so oft benötigt, dass es dafür eine Abkürzung gibt: on("lightify.0.82EBC90000261884.on","lightify.0.DAF3C90000261884.on") Dies tut exakt dasselbe: Bei jeder Änderung des Zustandes des ersten State-Objekts, wird das zweite in denselben Zustand versetzt. Fernsehlicht einschalten, wenn der Fernseher an und die Sonne untergegangen ist. Wir haben, wie am Anfang dieser Reihe erwähnt, Philips LivingColors-Lampen als Fernsehlichter. Die sollen sich jetzt automatisch einschalten, wenn wir nach Sonnenuntergang fernsehen. Hier wird eine interessante Möglichke

Script Einstieg

Bild
Wenn Sie die eine Lightify-Lampe erfolgreich mit dem Web-UI ein und ausschalten können, gehen wir jetzt einen Minischritt weiter. Die Lightify-Lampen lassen sich ja nicht nur ein- und ausschalten, sondern auch -je nach Typ- dimmen und/oder können die Farbe wechseln. Ziehen Sie für eine zweite Lampe nicht das 'button bool'-, sondern das 'button dimmer'-widget auf die Arbeitsfläche, und verbinden Sie die Object-ID unter 'Common' mit der Eigenschaft 'bri' der gewünschten Lampe, anstatt mit 'on' (Den Eintrag unter 'Visibility' werde ich weiter unten erklären). Zum "Spielen" habe ich hier noch eine Uhr und den Yahoo Wetterdienst hinzugefügt. Beide müssen nicht mit Objekten in der Wohnung verknüpft werden: Die Uhr nützt einfach die Systemzeit des Computers als Quelle, der Wetterdienst einen Webservice von Yahoo. Sie müssen nur Ihren Standord in den Settings eingeben. Wie auch immer: Dieses UI macht optisch nicht v

Raspberry Pi einrichten

Bild
Empfehlenswert ist ein Raspberry Pi Typ 2B oder 3B. Die älteren Varianten sind mit unserer Heimautomation ein wenig überfordert. Laden Sie am besten das Komplettsystem aus Raspbian, Nodejs, ioBroker und redis herunter. Zum Zeitpunkt dieses Schreibens war das hier aktuell: http://www.iobroker.net/docu/?ddownload=6911 . Um das Image zu entpacken, genügt in Linux: unzip ioBroker_RasPi_2_3_20170304.zip . Beim Mac benötigen Sie allerdings derzeit 7zip. 7zip bekommen Sie auf dem Mac am besten via Homebrew : brew install p7zip . Danach können Sie das Image mit 7z x ioBroker_RasPi_2_3_20170304.zip entpacken. Legen Sie dann die MicroSD Karte mit einem geeigneten Adapter in Ihren Computer ein und führen Sie folgende Befehle aus: diskutil unmountDisk /dev/pfad/zur/sd-karte dd if=<pfad-zum-image> of=/dev/pfad/zur/sd-karte bs=1m (Mehr Informationen zum Entpacken und Schreiben von Images für den Raspberry Pi, auch mit Windows,  finden Sie direkt bei der Quelle .) Der Schrei

Heimautomation mit ioBroker

Aller Anfang ist schwer. Für die Heimautomation gilt das in besonderem Mass. Das Gebiet ist noch relativ neu, es gibt verschiedene, teils kompatible, teils inkompatible Systeme, und die Pioniere haben sich bereits einen Jargon angewöhnt, der dazu führt, dass der Einsteiger meist nur Bahnhof versteht – selbst dann, wenn die alten Hasen aufrichtig der Meinung sind, ganz anfängergerecht zu erzählen. Viele Interessenten haben in den letzten Jahren schon da und dort fernsteuerbare Lichter und Steckdosen etc. eingekauft und sehen sich beim Sprung auf eine integrierte Heimautomation mit verschiedenen, auf den ersten Blick inkompatiblen Systemen konfrontiert. An dieser Stelle kommt ioBroker ins Spiel. Eine OpenSource-Software, die Steuersignale der verschiedenen Gerätetypen analysieren, übersetzen und senden kann. Dadurch können Systeme unterschiedlicher Hersteller miteinander vernetzt werden, sofern für alle beteiligten Geräte ein Adapter für ioBroker existiert - und das sind täglich m