Um bei der künftigen Entwicklung die Absprachen der Entwickler und die Benennung im Code zu vereinfachen habe ich hier mal eine kleine Liste von Definitionen zusammen getragen.
Praktisch alles außer die Messwerte selber, wird von der Middleware als „Entity“ behandelt.
Ein Kanal (engl. Channel) repräsentiert einen „Sensor“ oder einen „Zähler“ (engl. Meter)
Er wird durch eine Universally Unique Identifier eindeutig referenziert.
Der Kanal hat auch einen Typ, der die Meßgröße näher spezifiziert.
Ein „Zähler“ (engl. Meter) erfasst einen Verbrauch.
Typische Messgrößen sind zum Beispiel:
definiert sind dafür (aus dem Source des Frontend gelesen):
Ein „Sensor“ könnte kontinuierlich Daten liefern.
Typische Messgrößen sind zum Beispiel:
definiert sind dafür (aus dem Source des Frontend gelesen):
Ein „Aggregator“ fasst Zähler oder Kanäle zusammen und kann diese gemeinsam analysieren.
Wir besitzen zur Zeit erst einen Aggregator, die Gruppe. Andere Beispiele wären: Benutzer, Häuser, Städte, Zähler-/Sensortypen…
Eine „Gruppe“ (engl. Group) fasst beliebige Kanäle oder Gruppen zusammen. Diese können ohne lokalen oder physischen Bezug „virtuell“ gruppiert werden. Z.B.: alle eigenen Stromzähler bilden eine Gruppe; alle Wasseruhren eine zweite Gruppe und alle zusammen eine dritte.
So können ähnlich wie in gängigen Dateisystem Hierarchien erzeugt werden - die dritte Gruppe enthält zum Beispiel die beiden ersten Gruppen.
Definiert sind hierfür laut Frontend bisher:
Ein Controller bildet die Schnittstelle zwischen Zähler/Sensor und der Middleware. Dafür vermittelt er zwischen dem Protokoll des Zählers und der Middleware api.
Weitere Aufgabe des Controllers ist die Pufferung von Messwerten bei Verbindungsproblemen und ggf. das Verteilen der Messwerte über einen lokalen Webserver (local interface).
Die Middleware ist für die Speicherung und Verarbeitung der Messwerte zuständig. Die Verwaltung von Usern, Kanälen ist auch Aufgabe der Middleware.
Es besteht aus Webserver, Datenbank, und PHP Interpreter.
Das Frontend ist für die Visualisierung der Messwerte verantwortlich.
Typischerweise wird hierzu ein Browser verwendet, der mit Hilfe von Javascript die Daten anzeigt.
Ein Tuple ist ein Messwert, der von der Middleware ausgeliefert wird. Meist wurde er schon von der Middleware verarbeitet/zusammengefasst.
Statt die Messwerte von der Middleware abzufragen, können diese auch direkt von einem lokalen Webserver auf dem Controller abgefragt werden, um eine geringere Latenz und eine höhere zeitliche Auflösung zu erreichen.