Inhaltsverzeichnis
Struktur der Middleware
Ggfs. sollte das Zusammenlegen der beiden Seiten in Erwägung gezogen werden.
Entities
Alle Kanäle, Zähler, Gruppen, User, Sensoren sind Entities (dt. „Dinge“).
Sie besitzen alle eine weltweit eindeutige UUID. Diese wird durch die Middleware beim Erstellen eines neuen Kanals generiert.
Es gibt verschiedene Typen von Entities. Diese sind in der Datei EntityDefinition.json
definiert.
Hierbei wird jeder Typ durch folgende Eigenschaften charakterisiert:
- Name
- Icon
- Interpreter-Klasse (siehe
lib/Interpreter/*.php
) - Model-Klasse (siehe
lib/Model/*.ph
p) - Übersetzungen
Interpreter
Wie im vorherigen Abschnitt beschrieben ist jedes Entity einem bestimmten Typ zugeordnet. Dies ist nötig, da es verschiedene Arten von Sensoren, Zähler & Messgeräten gibt, die Daten in unterschiedlichen Formaten bereitstellen. Diese unterschiedlichen Formate müssen jeweils gesondert interpretiert, verarbeitet und analysiert werden. Das ist die Aufgabe der Interpreter.
Beispiel
Entity Typ | Stromzähler („power“) | Temperatur („temperature“) | User („user“) |
---|---|---|---|
Interpreter Klasse | MeterInterpreter | SensorInterpreter | AggregatorInterpreter |
Model | Channel | Channel | Aggregator |
Datenformat | Impulse eines S0-Zählers | absolute Messwerte | fasst Daten untergeordneterKanäle zusammen |
Im folgenden werden die verschiedenen Interpreter kurz vorgestellt.
MeterInterpreter
Alle Messgeräte, die eine Verbrauchsmessung (Energie, Betriebsstunden) durchführen und deren Messwert einen Verbrauchswert darstellt, sind über die Klasse „MeterInterpreter“ abgebildet. Die Daten werden hier in Form von Impulsen mit Zeitstempeln abgespeichert. Ein Impuls entspricht einer bestimmten Menge von Verbrauch. Je näher die Zeitstempel zweier Impulse beieinander liegen, desto höher ist der Verbrauch für diesen Periode.
Beispiele
- S0-Zähler für elektrische Energie, Wasser- oder Gasmenge
- Verbrauchskanal im eHZ
- Betriebsstundenzähler
Einheiten
- kWh
- l
- h
SensorInterpreter
Messgeräte, die einen Momentanwert bestimmt (Leistung, Durchflußgeschwindigkeit, Temperatur, Luftdruck) ausgeben, sind über die Klasse „SensorInterpreter“ abgebildet.
Beispiele
- Leistungskanal im eHZ
- Stromwandler
- Thermometer
Einheiten
- W
- °C
AggregatorInterpreter
Auch abstrakte Typen wie User („user“), Gruppe („group“) oder Haus („building“) besitzen einen Interpreter. Dieser summiert die Werte der enthaltenen Kanäle.
Properties
Jedes Entity kann Eigenschaften (engl. „properties“) besitzen. Mit diesen Eigenschaften können Entities genauer beschrieben werden: Ort, Zählermodel, Genauigkeit, Seriennr, Kosten/[l, kWh] etc..
Alle erlaubten Eigenschaften sind ähnlich wie bei den Entity Typen in der Datei PropertyDefinition.json
definiert.
Nicht jeder Entity Typ darf jede Eigenschaft besitzen. So macht es zum Beispiel wenig Sinn einem Temperatur Sensor die Eigenschaft Kosten („costs“) zu geben.
Die Zuordnung welche Eigenschaften optional sind und welche verpflichtend sind, ist für jeden Entity Typ in der Datei EntityDefinition.json
festgelegt.