Posts

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...