Das Herzstück einer Steuerung im Smarthome ist die umgesetzte Logik. Basierend auf Ereignissen und Zuständen werden die gewünschten Aktionen ausgeführt. Diese Realisierung wird auch als ereignisorientierte Programmierung bezeichnet. Praktische alle Steuerungssysteme für ein Smarthome basieren darauf. Ein klassischer Vertreter dieser Steuerungsart ist die „WENN-DANN-SONST-Logik“, die z. B. von dem Internetdienst IFTTT.com (IF This Then That) verwendet wird.
Die Abbildung zeigt den prinzipiellen Ablauf einer Ereignissteuerung und beginnt immer mit einem Ereignis (Trigger) und schließt mit einer Aktion ab.
- Trigger (Ereignis)
Der Trigger startet die „Abarbeitung“ der Logik und kann z. B. die Bewegung in einem Raum, das Einschalten des Fernsehers, Öffnen eines Fensters oder das Erreichen einer vorgegeben Temperatur sein. Ein Trigger kann auch die Änderung eines Zustands sein. - Zustände
Die Zustände beeinflussen zusätzlich die Verarbeitung der Logik. Beim Betreten eines Raumes muss das Licht z. B. nur eingeschaltet werden wenn es dunkel ist. Wie vorher schon geschrieben, kann der Zustand auch der Wert eines Trigger sein und somit dem Ablauf einer Logik maßgeblich beeinflusst. - Logik
Die Realisierung einer Logik selbst, kann auf verschiedene Arten umgesetzt werden. Mit einer grafischen (visuellen) Logik, in der Regel bestehend aus Elementen der Aussagenlogik und Boolschen Algebra (UND, ODER, NICHT). Die Darstellung im visuellen Code-Editor ist hierbei sehr unterschiedlich, bekannte Vertreter sind z. B. Node-RED oder Blockly. Demgegenüber steht die Gruppe der Logiken die textbasiert umgesetzt werden. Auch hier gibt es zwei unterschiedliche Konzepte zum einen Logiken die in Form einer Konfigurationsdatei (Wenn-Dann-Sonst) realisiert werden, ein Vertreter ist die YAML-Auszeichnungssprache die Home Assistant nutzt. Zum anderen werden in den Logiken die Programmiersprachen wie Python, PHP oder JavaScript zur Realisierung genutzt. Möglich sind auch Mischformen, die grundsätzliche Logik wird visuell aufgebaut und einzelne Spezialfunktionen in Form von Funktionsblöcken in einer textuellen Programmiersprache umgesetzt. - Aktion
Den Abschluss einer Logikeinheit bildet die Aktion. Dies kann z. B. das Ein-/Ausschalten oder Setzen eines Helligkeitswert einer Leuchte sein.