Blockly – Beispiel – Aktion nur einmal pro Tag ausführen

In diesem Teil der Blockly Artikelreihe zeige ich Dir anhand eines Beispiels, wie Du eine Aktion so steuern kannst, dass sie nur einmal pro Tag ausgeführt wird.

Für manche Aktionen ist es durchaus sinnvoll, diese so zu steuern, dass Sie nur einmal pro Tag ausgeführt werden. Das folgende Beispiel veranschaulicht dieses Problem.

Szenario

Mittels einer Anwesenheitserkennung wird überprüft ob sich Personen im Haus befinden. Wenn alle Personen das Haus verlassen haben, soll automatisch der Staubsauger-Roboter mit dem Reinigungsprogramm beginnen. Dabei soll dies nur einmal am Tag passieren.

 

Für die Umsetzung des oben genannten Szenarios setze ich eine funktionierende Anwesenheitserkennung voraus. In dieser Anwesenheitserkennung ist für jede Person ein Datenpunkt angelegt, in dem der Status der Person gespeichert wird ( true=anwesend, false=abwesend). Zudem existiert ein weiterer Datenpunkt „SomebodyAtHome“, mit dem erkannt werden kann ob mindestens eine Person zu Hause ist. Für die Steuerung müssen wir im ersten Schritt erkennen, wann eine Person das Haus verlässt. Dazu habe ich folgendes Blockly-Script angelegt:

Der Trigger wird ausgelöst, sobald die Person „Matthias“ das Haus verlässt.

Im nächsten Schritt habe ich nun die Funktion „Staubsauger“ erstellt, welche im ersten Schritt prüft ob jemand zuhause ist. Wenn der Datenpunkt auf „false“ steht, wird im nächsten Schritt geprüft ob der Staubsauger heute bereits gelaufen ist. Wenn dieser Datenpunkt ebenfalls auf „false“ steht wird dann der Staubsauger gestartet sowie der Status Datenpunkt über den Staubsauger aktualisiert. In meinem Beispiel setze ich dazu den Datenpunkt „TestStatus“ auf wahr und starte somit virtuell den Staubsauger ;-).

 

Nun haben wir bereits den wichtigsten Teil der Steuerung implementiert. Durch die Kapselung der Funktionalität kann diese nun durch einen einfachen Funktionsaufruf auch für andere Personen oder später andere Szenarien implementiert werden.

Im nächsten Schritt müssen wir nun den Status Datenpunkt zu einem definierten Zeitpunkt wieder auf „false“ setzen. Ich erledige diese Aufgabe über einen Zeitplan, welcher jede Nacht um „00:01“ ausgeführt wird. Dazu habe ich den folgenden Trigger angelegt:

 

Der hinterlegte Zeitplan des Triggers ist wie folgt definiert:

 

 

Ich hoffe Dir gefällt der Artikel. Ich freue mich über Deinen Kommentar oder Fragen 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere