Benutzer-Werkzeuge

Webseiten-Werkzeuge


development:middleware

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
development:middleware [2011/11/30 08:29] – angelegt justinotherguydevelopment:middleware [2011/12/01 00:05] (aktuell) – [Interpreter] Typo justinotherguy
Zeile 1: Zeile 1:
 ====== Struktur der Middleware ====== ====== Struktur der Middleware ======
  
 +<note important>Überschneidungen mit der Seite "[[.:definitions]]" sollten vermieden werden. \\ Ggfs. sollte das Zusammenlegen der beiden Seiten in Erwägung gezogen werden.</note>
  
 ===== Entities ===== ===== Entities =====
  
-Alle Klassen stammen von der Basisklasse "Entities("Dinge"ab.+Alle Kanäle, Zähler, Gruppen, User, Sensoren sind Entities (dt. "Dinge").
  
 +Sie besitzen alle eine weltweit eindeutige [[http://de.wikipedia.org/wiki/Universally_Unique_Identifier|UUID]]. Diese wird durch die Middleware beim Erstellen eines neuen Kanals generiert.
 +
 +Es gibt verschiedene Typen von Entities. Diese sind in der Datei ''[[https://github.com/volkszaehler/volkszaehler.org/blob/master/lib/Definition/EntityDefinition.json|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 ==== ==== Interpreter ====
  
-Alle Messgeräte sind in verschiedene Gerätetypen einklassifiziertAlle Messgerätetypen basieren auf der Klasse "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 === === MeterInterpreter ===
  
 Alle Messgeräte, die eine Verbrauchsmessung (Energie, Betriebsstunden) durchführen und deren Messwert einen Verbrauchswert darstellt, sind über die Klasse "MeterInterpreter" abgebildet. 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 Beispiele
-  * S0-Zähler für elektrische Energie oder Wassermenge+  * S0-Zähler für elektrische Energie, Wasser- oder Gasmenge
   * Verbrauchskanal im eHZ   * Verbrauchskanal im eHZ
   * Betriebsstundenzähler   * Betriebsstundenzähler
Zeile 25: Zeile 45:
   * l   * l
   * h   * h
- 
  
 === SensorInterpreter === === SensorInterpreter ===
Zeile 39: Zeile 58:
   * W   * W
   * °C   * °C
 +
 +=== AggregatorInterpreter ===
 +
 +Auch abstrakte Typen wie User ("user"), Gruppe ("group") oder Haus ("building") besitzen einen Interpreter.
 +Dieser summiert die Werte der enthaltenen Kanäle.
 +
 +<note warning>Dieser Interpreter ist noch nicht fertig gestellt!</note>
 +
 +===== 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 ''[[https://github.com/volkszaehler/volkszaehler.org/blob/master/lib/Definition/PropertyDefinition.json|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 ''[[https://github.com/volkszaehler/volkszaehler.org/blob/master/lib/Definition/EntityDefinition.json|EntityDefinition.json]]'' festgelegt.
  
development/middleware.1322638148.txt.gz · Zuletzt geändert: 2011/11/30 08:29 von justinotherguy