Post on 07-Aug-2020
Grafische Regelerstellung für die Hausautomatisierung mit FHEM
26.01.2015 Regelverarbeitung – T. Kanther & F. Pistorius 1
Forschungsseminar
Toni Kanther
Felix Pistorius
26. Januar 2015
Inhalt
26.01.2015 Regelverarbeitung – T. Kanther & F. Pistorius 2
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
1. Einleitung
2. Grafische Regelerstellung (Toni Kanther)
3. Regelübersetzung (Felix Pistorius)
4. Ergebnis
1. Einleitung
26.01.2015 Regelverarbeitung - F. Pistorius 3
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
1. Motivation
2. Zielsetzung
3. Systemüberblick
1.1 Motivation
26.01.2015 Regelverarbeitung - F. Pistorius 4
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
● Hausautomatisierung gewinnt immer mehr an Bedeutung
● Viele Hersteller mit unterschiedliche Lösungen und Standards
● Hausautomatisierung mit FHEM
– Unterstützt viele Standards
– Frei verfügbar und Open Source
– Modular aufgebaut
– Kann erweitert werden
1.2 Zielsetzung
26.01.2015 Regelverarbeitung - F. Pistorius 5
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
● Herausforderungen:
– Unterschiedliche Nutzer -> unterschiedliche Regeln● Problem:
– Regeln müssen meist programmiert werden● Untersuchung der Möglichkeiten zur grafischen Regelerstellung für die
Hausautomatisierung mit FHEM.
● Regelerstellung:
– Benutzerfreundlichkeit durch Programmiersprachenunabhängigkeit
– Verwendung des Hausautomatisierungsservers FHEM
– Erstellung von komplexen Regeln soll möglich sein
1.2 Systemüberblick
26.01.2015 Regelverarbeitung – T. Kanther 6
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
2. Grafische Regelerstellung
26.01.2015 Regelverarbeitung - T. Kanther 7
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
1. Vorgehensweise
2. Lösungsansätze
3. Grammatik
4. Implementierung
Begriffe
Server meint hier einen Repräsentant der Gesamtheit von Heimautomatisierungsserver
Sensoren, Aktoren können auch Software basiert emuliert werden z.B. Dummys
VirtualDevice – Geräte die bestimmte Bedingungen zusätzlich beschränken, Regelauswertung beeinflussen oder Aktionen beeinflussen, z.B. verzögern, können. Dahinter stehen steht Software-Routinen.
2.1 Implementierung einer webbasierten GUI zur Regelgenerierung
26.01.2015 Regelverarbeitung - T. Kanther 8
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
Wintersemester 2014/15
● Theoretische Konzeption II
– Modellierung von Regeln
– Ex-/ Import von Regeln– Herleitung der Grammatik
– Aufbau einer JS-Library
– Testen der JS-Library
– Implementierung einer Drag&Drop UI
2.2 Lösungsansätze – Import der Geräteinformationen (JSON)
26.01.2015 Regelverarbeitung - T. Kanther 9
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
Ausschließliche Bereitstellung durch Server
Vorteile:
• hohe Gestaltungsfreiheit [serverseitig]
Nachteil:
• Datenstrukturen können permanent "wanken„- Erfassung der Vielzahl an Fällen nicht möglich
• Auch standardisierte Devices (z.B. Timer, jeglicher Art) werden unnötig gemappt
oder durch den jeweiligen Editor selbst
Vorteile:
• hohe Konsistenz und klare Struktur durch Vordeklaration Object- Repräsentationen der Devices selbst
• Mapping der Standard-Devices entfällt
Nachteil:
• Die Standardparameter, welche die Server benötigen, müssen bekannt sein► beschränkt anwendbar
Aufwand des Mappings enorm:
► Anzahl der zu unterstützenden Hardwaresysteme/-reihen, Geräte (Sensoren, Aktoren, Schalter), bereitgestellte virtuelle Geräte & Routinen), Wartungsaufwand (ständige Weiterentwicklungen der Hersteller, Geräte sowie Firmware)
► Trotz Standards variieren Anzahl und Struktur der importierten Parameterinformationen, Bedingungen können unendliche Vergleichswerte besitzen (z.B. "IN" −Operator)
2.2 Lösungsansätze – Import der Geräteinformationen (JSON)
26.01.2015 Regelverarbeitung - T. Kanther 10
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
Beide Varianten können kombiniert werden:
Nachteil:• hoher Integrationsaufwand und Sicherstellung der
Identifikation beider Mengen► hier: anhand der Prefixe 'VD_' bzw. 'SYS_'
gewährleistet falls TYPE nicht eindeutig
• Genauere Handhabung und Transformationen sind immer im jeweiligen Wrapper-Skript für das jeweilige Zeilsystem zu regeln(im Regeleditor per JavaScript - Import;extern im jeweiligen Zielsystem für den Export )
var VIRTUAL_DEVICES = [{ "TYPE" : "VD_DIGITAL_TIMER", "NAME" : "Digital timer", "ALT" : "Digitale Zeitschaltuhr, welche … …realen Bauweise nachempfunden ist", "ICON_CLASS" : "RD_DIGITAL_TIMER", "SETS" : [ "Weekdays", "BeginTime", "EndTime", "BeginDate", "EndDate" ],
# Ausführungsbeschränkung – Actor-Event nur # im Zeitfenster aktiv "IS_ACTOR" : true,
# Zusätzliche Beschränkung von Bedingungen "IS_SENSOR" : true,
# Regel wird außerhalb des Zeitfensters # abgelehnt "IS_VDEV" : true}, …
var VIRTUAL_DEVICES = [{ "TYPE" : "VD_DIGITAL_TIMER", "NAME" : "Digital timer", "ALT" : "Digitale Zeitschaltuhr, welche … …realen Bauweise nachempfunden ist", "ICON_CLASS" : "RD_DIGITAL_TIMER", "SETS" : [ "Weekdays", "BeginTime", "EndTime", "BeginDate", "EndDate" ],
# Ausführungsbeschränkung – Actor-Event nur # im Zeitfenster aktiv "IS_ACTOR" : true,
# Zusätzliche Beschränkung von Bedingungen "IS_SENSOR" : true,
# Regel wird außerhalb des Zeitfensters # abgelehnt "IS_VDEV" : true}, …
Beispiel: Deklaration eines VirtualDevice
2.2 Lösungsansätze – Modellierung der Regeln als k-Baum
• Realisierung durch k-Bäume
• Sensoren stetslinksseitig
• Aktoren stetsrechtsseitig
• Zusatzelementebeiderseits möglich(virtuelle Devices z.B. Timer - reine Schaltuhr, zur Schaltverzögerung)
26.01.2015 Regelverarbeitung - T. Kanther 11
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
2.2 Export der Regeldaten – Lösungsansätze
26.01.2015 Regelverarbeitung - T. Kanther 12
{ "RULES": { "RULE1": { "_UNIQUE_ID": "RULE1", "rulename" : "Kühlungsprozess Raum XY", "ruleDescr" : "" }, "RULE2": { "_UNIQUE_ID": "RULE2", "rulename" : "Lüftungsprozess Raum XY", "ruleDescr" : "" } }…
{ "RULES": { "RULE1": { "_UNIQUE_ID": "RULE1", "rulename" : "Kühlungsprozess Raum XY", "ruleDescr" : "" }, "RULE2": { "_UNIQUE_ID": "RULE2", "rulename" : "Lüftungsprozess Raum XY", "ruleDescr" : "" } }…
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
… "RULE1": { "COND": { "OR": { "S1": { "_temperature": { "op": ">", "value": "30" } }, "S2": { "_humidty": { "op": ">", "value": "70" } } } }, "EXEC": { "A1": { "state": "close" }, "A2": { "state": "close" }, "A3": { "state": "on" } } },…
… "RULE1": { "COND": { "OR": { "S1": { "_temperature": { "op": ">", "value": "30" } }, "S2": { "_humidty": { "op": ">", "value": "70" } } } }, "EXEC": { "A1": { "state": "close" }, "A2": { "state": "close" }, "A3": { "state": "on" } } },…
Grob-Entwurf aus dem SS 14
Identifikation und Übergabe zusätzlicher Meta-Informationen(z.B. Benutzerfreundliche Beschreibungen)
Findung einer geeigneten Regel-Darstellung
2.2 Export der Regeldaten – Probleme des Ansatzes
26.01.2015 Regelverarbeitung - T. Kanther 13
{ "RULES": { "RULE1": { "_UNIQUE_ID": "RULE1", "rulename" : "Kühlungsprozess Raum XY", "ruleDescr" : "" }, "RULE2": { "_UNIQUE_ID": "RULE2", "rulename" : "Lüftungsprozess Raum XY", "ruleDescr" : "" } }…
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
… "RULE1": { "COND": { "OR": { "S1": { "_temperature": { "op": ">", "value": "30" } }, "S2": { "_humidty": { "op": ">", "value": "70" } } } }, "EXEC": { "A1": { "state": "close" }, "A2": { "state": "close" }, "A3": { "state": "on" } } },…
ZweigleisigkeitZweigleisigkeit
Strikte Trennung von Regelinformationen und Metadaten
Strikte Trennung von Regelinformationen und Metadaten
Deutlicher Mehraufwand durch manuelles Parsen der Regeln
Deutlicher Mehraufwand durch manuelles Parsen der Regeln
Anmerkung:Widerspruch zur Baumdarstellung –Wer bildet die Wurzel?
Anmerkung:Widerspruch zur Baumdarstellung –Wer bildet die Wurzel?
Konträre Objekte auf erster EbeneKonträre Objekte auf erster Ebene
NachteileNachteileVorteileVorteile
2.2 Export der Regeldaten – Probleme des Ansatzes
26.01.2015 Regelverarbeitung - T. Kanther 14
{ "RULES": { "RULE1": { "_UNIQUE_ID": "RULE1", "rulename" : "Kühlungsprozess Raum XY", "ruleDescr" : "" }, "RULE2": { "_UNIQUE_ID": "RULE2", "rulename" : "Lüftungsprozess Raum XY", "ruleDescr" : "" } }…
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
… "RULE1": { "COND": { "OR": { "S1": { "_temperature": { "op": ">", "value": "30" } }, "S2": { "_humidty": { "op": ">", "value": "70" } } } }, "EXEC": { "A1": { "state": "close" }, "A2": { "state": "close" }, "A3": { "state": "on" } } },…
ParameterdarstellungParameterdarstellung
Strikte Verwendung von Key-Value-Paaren→ Einfache Representation
JavaScript-Objekt
Strikte Verwendung von Key-Value-Paaren→ Einfache Representation
JavaScript-Objekt
Fixe Anzahl von BezugswertenFixe Anzahl von Bezugswerten
Mehrstufige Operanden:„Wochentag“ : {„IN“ : „Mo“} „Fr“„zwischen“ : {„BETWEEN“ , 0} ? Obergrenze?
Mehrstufige Operanden:„Wochentag“ : {„IN“ : „Mo“} „Fr“„zwischen“ : {„BETWEEN“ , 0} ? Obergrenze?
NachteileNachteileVorteileVorteile
Eindeutigkeit von Keys innerhalb Objekten muss gewährleistet sein
Eindeutigkeit von Keys innerhalb Objekten muss gewährleistet sein
2.2 Export der Regeldaten – Probleme des Ansatzes
26.01.2015 Regelverarbeitung - T. Kanther 15
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
… "RULE1": { "COND": { "OR": { "S1": { "_temperature": { "op": ">", "value": "30" } }, "S2": { "_humidty": { "op": ">", "value": "70" } } } }, "EXEC": { "A1": { "state": "close" }, "A2": { "state": "close" }, "A3": { "state": "on" } } },…
Identifikation von ObjektenIdentifikation von Objekten
Aktoren-/ Sensorerkennung zu 100%
gewährleistet? !!!NEIN!!!Fremdsysteme können nur bedingt mit fremden IDs umgehen
Aktoren-/ Sensorerkennung zu 100%
gewährleistet? !!!NEIN!!!Fremdsysteme können nur bedingt mit fremden IDs umgehen
NachteileNachteile
Wie logische Gatter von Sensoren unterscheiden?Wie logische Gatter von Sensoren unterscheiden?
Mitgaben von Ausführungsbeschränkungen?Mitgaben von Ausführungsbeschränkungen?
Umgang mit Software basierten Devices und Generatoren?Timer, Sonnenauf- und -untergang, Feiertage, Protokollierungsmodule
Umgang mit Software basierten Devices und Generatoren?Timer, Sonnenauf- und -untergang, Feiertage, Protokollierungsmodule
Verwendung von gleichen Gattern auf gleicher Ebene → Key-Verletzung
Verwendung von gleichen Gattern auf gleicher Ebene → Key-Verletzung
2.3 Aufstellung einer Grammatik
26.01.2015 Regelverarbeitung - T. Kanther 16
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
• Behebung der Probleme:• Behebung der Zweigleisigkeit, jede Grammatik hat ein Wurzelelement (in JavaScript
das oberste Wurzelobjekt)
• Vergleichsoperatoren in „Referenzparameter“ abgebildet (Mix aus JS-Objekt, JS-Array)
Referenzparameter-Syntax: { “Bezugsgröße“ : [ Operand, Wert1, Wert2, … WertX ], …, “Bezugsgröße n“ : […] }
Parameter zum Vergleich: Syntax: { “Bezugsgröße“: Wert, …, “Bezugsgröße n“ : Wert n }
• Einführung von Gruppierungsobjekten (Gatter, Aktorengruppen) und virtueller Devices
• Struktur virtueller Devices
• JS-Objekt-Strukturen werden durch die Vorgabe der Regeln gebildet und nicht umgekehrt, gewährleistet Eindeutigkeit von Objekten sowie Flexibilität bzgl. Erweiterungsfähigkeit und Protierbarkeit
[ PDF \ DEMO ]
2.4 Implementierung der Library
26.01.2015 Regelverarbeitung - T. Kanther 17
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
• Behebung der Probleme:
• Senkung des Wartungsaufwands und Erhöhung der Funktionssicherheit durch ausschließliche Nutzung von ECMA-Skript5 ► Verzicht auf API‘s
• Nutzung eines Testframeworks (QUnit) zur stetigen Validierung
• Problem in diversen Browser werden bestimmte Selectoren nicht unterstütztUmgehung des jQuery-Hidden-Problems
● Verwendete Technologien: JavaScript, Ajax, JSON
● Verwendete API‘s Jquery, Qunit-Testframework
– JQuery: Vereinfachung des Zugriffs auf DOM-Elemente
– JQuery UI: Drag-&-Drop / Oberflächenanimation
Demo der Regelerstellung
26.01.2015 Regelverarbeitung – F. Pistorius 18
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
3. Regelübersetzung
26.01.2015 Regelverarbeitung – F. Pistorius 19
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
1. Aufgabenstellung
2. FHEM Analyse
3. FHEM Modul
4. Wizard basierte Regelerstellung
3.1 Aufgabenstellung
26.01.2015 Regelverarbeitung – F. Pistorius 20
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
● Untersuchen der Möglichkeiten zur Anbindung des UI an FHEM
● Übersetzen von Regeln des UI in FHEM Regeln
● Vorgehensweise
– Analyse von FHEM
– Entwurf und Implementierung
– Prüfen der Schnittstelle, mit Hilfe eines einfachen UI
3.2 Analyse FHEM
26.01.2015 Regelverarbeitung – F. Pistorius 21
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
● Regelverwaltung in Konfigurationsdatei
● Besteht aus FHEM- und Perl-Befehlen
– FHEM: set, get, define
– Perl: {if($devicestate eq 'on'){ fhem 'set $device dim40%%';; }}● Grundlegende Befehle für FHEM Regeln
– notify: Regelausführung abhängig von einem Ereignis
– at: Regelausführung abhängig von einer Zeitangabe● Anbindung
– Extern: HTTP, Telnet
– Intern: Perl Modul
(Quelle: fhem.de)
3.3 FHEM Modul
26.01.2015 Regelverarbeitung – F. Pistorius 22
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
● UI I/O:
– Empfängt Regeln
– Sendet Informationen
über Regeln● Repository:
– Sqlite DB
– Speichert Regeln und Status● Compiler:
– Übersetzt Regeln
3.4 Wizard basierte Regelerstellung
26.01.2015 Regelverarbeitung - F. Pistorius 23
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
● Ziel:
– UI für nicht technisch affine Nutzer
– Test der Schnittstelle zum FHEM Modul● Idee:
– Einfache Fragen zum Erstellen einfacher Regeln
– Auf einzelne Anwendungsfälle zugeschnitten (Aktion, Zeit)● Funktionsumfang:
– Erstellen von einfachen Regeln
– Aktivieren und deaktivieren➔ Demo
4. Ergebnis
26.01.2015 Regelverarbeitung - T. Kanther 24
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
● Jede Geräteinformationen von Servern beziehen? NEIN=> Parameter-Informationen stark schwankend=> Programmieraufwand=> Gemeinsamkeiten sollten genutzt um Mapping-Aufwand zu reduzieren=> relative Erhöhung der Ajax-Performance
● Grammatik zur Strukturellen Darstellung von Regeln in JSON
● JavaScript-Bibiliothek basierend auf ECMA-Script 5, ohne API-Abhängigkeit
● Regeleditor mit Wrapper für FHEM
● Observer-Pattern zur Aktualisierung der Benutzeroberflächefunktioniert, ABER: trotz modernen Browser merklich verlangsamt („Ruckeln“) sobald HTML-Blöcke erneuerte werden => Ergebnis: Darstellung nur zu beginn aufgebaut, auf komplette Umsetzung des Patterns verzichtet
4. Ergebnis
26.01.2015 Regelverarbeitung - F. Pistorius 25
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
● Übersetzung grundsätzlich möglich
● Spezialfälle und Neuentwicklungen müssen nachträglich implementiert werden.
● Fehlende Metainformationen zu Geräten in FHEM
● Schnittstelle bietet Möglichkeit zur Implementierung von individualisierten User Interfaces.
➔ Hauptfokus kann auf die Gestaltung des UI gelegt werden.
4. Ausblick
26.01.2015 Regelverarbeitung - T. Kanther 26
Einleitung – Regelerstellung – Regelübersetzung - Ergebnis
● VirtualDevice & Co. (Software-Emulation)Untersuchung und grundlegenden Diskussion ist im Bezug auf Findung eines geeigneten JSON-Austausch-Formates notwendig. Sowohl für die Unterstützung anderer Server-Systeme als auch die Gerätschaften gleicher Gerätegattungen verschiedener Hersteller. Die Diskussion ist somit für alle Gerätegattungen unabhängig zu führen.
● Überarbeitung der GUI eventuell unter Verwendung vonHTML-5-Canvas (jedoch fehlende GUI-Elemente)
26.01.2015 Regelverarbeitung – T. Kanther & F. Pistorius 27
Vielen Dank für Ihre
Aufmerksamkeit!
26.01.2015 Regelverarbeitung – T. Kanther & F. Pistorius 28
Vielen Dank für Ihre
Aufmerksamkeit!
Fragen?