[DIY Smart Home] Teil 4: Das erste Skript bauen

Oh ja, endlich ist es soweit: Wir starten jetzt richtig durch bei unserem Smart Home, indem wir es smart machen. Worauf warten wir? Legen wir los!

Ideensammlung

Hey, hast Du Dir eigentlich schon Gedanken gemacht, was und wie Du alles smart machen möchtest? Nein? Willkommen im Club! Anfangs weiß man nie so wirklich, was man jetzt alles machen kann bzw. machen will, bis man es irgendwo liest und denkt „Das will ich jetzt auch!“. Daher liste ich nachfolgend mal ein paar meiner Ideen auf, die ich teils auch schon realisiert habe:

Der Saugroboter soll einmal am Tag durch die Wohnung fahren, wenn ich diese verlasse. Allerdings nur in einem Zeitraum von 8 Uhr – 21 Uhr, um die Nachbarn nicht zu stören (Ich weiß nicht, ob die Nachbarn das überhaupt hören würden, aber sicher ist sicher) und wenn ich nach Hause komme, während der Saugroboter noch fährt, soll dieser aufhören zu saugen und zur Ladestation fahren, damit er mir nicht im Weg ist. Zudem soll auf meinem Handy eine Nachricht ankommen, wenn er anfängt zu saugen und wenn er aufhört zu saugen, mit Infos, wie lange er gebraucht hat und die Quadratmeter, die er gesaugt hat. Ebenso möchte ich informiert werden, wenn er irgendeinen Fehler hat (er also feststeckt etc.).

Wenn ich in der Früh den Wecker auf meinem Handy ausschalte, wird zufällige Musik über den Google Home im Schlafzimmer abgespielt, um morgens gut gelaunt aus dem Bett zu kommen. Wer bspw. gerne in der Früh Kaffee trinkt, der könnte dies auch noch mit seiner Kaffeemaschine verknüpfen, sodass diese direkt den Kaffee durchlaufen lässt oder dass automatisch alle Rollos hochfahren.

Wenn ich heimkomme, soll mich mein Google Home im Wohnzimmer mit einer persönlichen Nachricht begrüßen und sollte ich abends innerhalb eines bestimmten Zeitraums nachhause kommen, soll gleich das Licht im Wohnzimmer mit angemacht werden. Falls ich schon daheim bin, soll das Licht bei Sonnenuntergang automatisch im Wohnzimmer angehen.

Der smarte Rauchmelder soll, sobald er rauch erkennt, ein Foto der Überwachungskamera aufs Handy schicken und direkt alle elektrischen Geräte im Haus ausschalten.

Wenn ich die Wohnung verlasse, soll überprüft werden, ob alle Fenster und Türen verschlossen sind und sobald etwas offen ist, soll sofort eine Benachrichtigung aufs Handy kommen.

Auf geht’s ans Umsetzen

Nachdem wir uns nun ein paar Ideen gesammelt haben, können wir uns daran machen, diese umzusetzen. Doch davor gehen wir die Sache langsam an und bauen erstmal etwas ganz Einfaches, was so ziemlich jeder umsetzten könnte.

Ein Skript anlegen

Wir wechseln in unserem ioBroker zum Tab Skripte und klicken erstmal auf das „+“-Icon links oben, um uns einen neuen Ordner/Gruppe zu erstellen. Hier empfehle ich für jeden Raum einen eigenen Ordner anzulegen, damit die Skripte etwas sortiert sind. Wir geben einen Gruppennamen ein (ich nenne es einfach mal Wohnzimmer) und wählen unter Erzeugen in KEINE GRUPPE aus und erstellen diese mit OK.

Hier erstellen wir einen neuen Ordner/Gruppe.

Nun klicken wir auf das „Datei“-Icon links oben, welches sich links vom „+“-Icon befindet. Jetzt haben wir die Wahl zwischen Blockly, JavaScript und TypeScript. Da wir programmiertechnisch überhaupt keine Ahnung haben, wählen wir erstmal Blockly aus. Denn hier können wir die Skripte wortwörtlich bauen, indem wie Blöcke miteinander verbinden, ohne eine Zeile Code zu schreiben. Doch jetzt brauchen wir noch etwas, das wir bauen wollen.

Über das Datei-Icon erstellen wir ein neues Skript.

Ausgangssituation

Als Anfang nehmen wir uns einfach mal eine alte Stehlampe, die wir mittels WLAN-Steckdose „modern“ gemacht haben. Nur für die WLAN-Steckdose gibt es keinen Adapter im ioBroker, aber die Steckdose unterstützt glücklicherweise IFTTT. Also starten wir erstmal damit, diese via IFTTT steuerbar zu machen.

Neues Applet in IFTTT anlegen

Da wir in Teil 3 bereits IFTTT mit unserem ioBroker verbunden haben, müssen wir jetzt nur noch IFTTT aufrufen und zu My Applets wechseln und dort auf New Applet klicken. Wir klicken auf this und suchen nach dem Service Webhooks und wählen Receive a web request aus. Bei Event Name geben wir einen Befehl ein, den wir nachher via ioBroker an IFTTT schicken möchten. In diesem Fall also stehlampe_an. Wichtig ist hier nur, dass der Befehl keine Leerzeichen enthält. Mit Create trigger speichern wir dies ab und können nun that auswählen.

Als Event Name geben wir den Befehl ein, den wir via ioBroker senden möchten.

Nun ist es davon abhängig, welchen Dienst/App Deine Steckdose nutzt, z. B. TP-Link Kasa oder Smart Life. Nach diesem suchen wir und wählen diesen aus. Eventuell musst Du Dein Konto noch mit diesem verknüpfen, damit auf Deine eingerichteten Steckdosen zugegriffen werden kann. Wir wählen nun Turn on aus und suchen uns nun unsere Steckdose raus, welche mit der Stehlampe verbunden ist. Optional hast Du sie sogar schon „Stehlampe“ genannt. Mit einem Klick auf Create action können wir dem ganzen noch einen Namen vergeben und ein Klick auf Finish speichert das Applet ab.

Bei that wählen wir aus, was passieren soll, nachdem wir den Event Namen gesendet haben.

Dasselbe richten wir nun auch noch zum Ausschalten aus. Dazu geben wir als Event Name einfach stehlampe_aus ein und wählen anschließend Turn off statt Turn on aus.

Back to the ioBroker

Bevor wir mit dem Skript starten, erstellen wir uns noch schnell ein eigenes Objekt, welches später entscheidet, ob die Lampe an- oder ausgeschaltet wird. Somit können wir dies in anderen Skripten ganz einfach einbinden und müssen nicht jedes Mal den ganzen Code zum Ein- bzw. Ausschalten erneut einbauen. Wir wechseln also zum Tab Objekte und klicken hier links oben auf das „+“-Icon.

Über das „+“-Icon legen wir ein neues Objekt an.

Wir kontrollieren, dass bei Parent nichts hinterlegt ist (falls doch, dann einfach die Seite neu laden) und geben dann beim Namen etwas ein. Ich hab es Eigene_Dateien.0 genannt, da ich hier später alle eigenerstellten Objekte reinpacke, um meinen ioBroker etwas strukturiert zu halten. Wichtig auch hier: keine Leerzeichen! Den Typ stellen wir auf Kanal, klicken auf OK und klicken im nachfolgenden Fenster auf Speichern.

Eigenen Ordner für unsere Objekte erstellen.

Nun wählen wir unseren erstellen Ordner aus und klicken erneut auf das „+“-Icon, geben als Namen bspw. Stehlampe_an/aus ein, klicken wie vorher auf OK und anschließend auf Speichern. Fertig. Jetzt ist in unserem Ordner ein Objekt mit dem vorher eingegebenen Namen zu finden.

Neues Objekt anlegen, welches als Schalter agiert.

Ein neues Skript haben wir ja bereits angelegt, aber noch keinen Namen vergeben. Dies können wir neben dem Punkt Namen erledigen. Ich nenne es einfach Switch_Stehlampe_an/aus, um später bei vielen Skripten noch genau zu wissen, was dieses macht.

Über dieses Feld können wir den Namen des Skriptes ändern.

In unserem Baukasten finden wir links einige Punkte, welche durch einen Klick darauf die einzelnen Blöcke freigeben. Hier alles zu erklären wäre zu umfangreich. Man muss einfach damit rumspielen, selbst ich kenne nicht von jedem Block die genaue Funktion. Gut, also los geht’s mit dem Skript:

Jetzt zu erklären, wie wir das Skript zusammenbauen, wäre irgendwie schwierig, deshalb ein Bild, das mehr als tausend Worte sagt.

Unser fertiges Skript.

Kleine Info am Rande: Das sonst falls kann man über das „Zahnrädchen“-Icon des falls mache-Blocks hinzufügen.

Und nun zur Erklärung, was hier passiert. Sobald der Wert der Objekt-ID Stehlampe_an/aus aktualisiert wird (entweder true oder false, also an oder aus), wird geprüft, in was der Wert denn geändert wurde. Wenn der Wert true ist, möchten wir, dass die Lampe angeht, also senden wir an IFTTT das Event stehlampe_an. Wenn der Wert nicht true entspricht, wird geguckt, ob der Wert false entspricht. Wenn dies zutrifft, wollen wir, dass die Lampe ausgeschaltet wird, deshalb senden wir an IFTTT das Event stehlampe_aus. Die Punkte value1-3 können wir erstmal ignorieren, darüber könnte dann bei anderen Geräten bspw. die Farbe des Lichts geändert werden etc.

Hier klicken wir auf den „Play“-Button, um das Skript zu starten.

Damit das Skript nun aktiv wird, klicken wir links in der Ordnerübersicht auf den „Play“-Button und speichern natürlich unser Skript. Wenn wir nun zum Tab Objekte wechseln und bei unserem Stehlampe_an/ausObjekt den Wert von false auf true ändern (einfach einen Haken in die Checkbox setzten und ENTER drücken), sollte, wenn wir alles richtig gemacht haben, die Lampe angehen. Und wenn wir den Wert wieder in false ändern, sollte die Lampe wieder ausgehen. Wenn nicht, dann kontrolliere am besten nochmal die Applets von IFTTT, ob hier alles aktiviert ist und richtig ausgewählt wurde sowie ob das Skript im ioBroker auch aktiv und wie oben im Bild aufgebaut ist.

Haken = true/kein Haken = false

Rumspielen und ausprobieren

Nur mit diesem Motto kommt man weiter. Ich hatte anfangs auch meine Probleme, bis ich das mal raus hatte, wie man was machen kann und wo es Probleme gibt. Falls das nicht auf Anhieb klappen sollte, einfach eine Pause machen und später nochmal versuchen. Irgendwann weiß man, woran es liegt. Im nächsten Teil beschäftigen wir uns dann mit dem Telegram-Adapter und können somit dann Benachrichtigungen an unser Smartphone senden.