Benutzer-Werkzeuge

Webseiten-Werkzeuge


development:middleware

Struktur der Middleware

Überschneidungen mit der Seite „Definitionen“ sollten vermieden werden.
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/*.php)
  • Ü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 TypStromzähler („power“)Temperatur („temperature“)User („user“)
Interpreter KlasseMeterInterpreterSensorInterpreterAggregatorInterpreter
ModelChannelChannelAggregator
DatenformatImpulse eines S0-Zählersabsolute Messwertefasst 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.

Dieser Interpreter ist noch nicht fertig gestellt!

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.

development/middleware.txt · Zuletzt geändert: 2011/12/01 00:05 von justinotherguy