# CometVisu

CometVisu ist eine mit Web-Technologien realisierte Echtzeit-Visualisierung für Gebäudeautomatisierung. Hier werden verschiedene Zustände eines Gebäudes (Wo ist das Licht an? Wie hoch ist die Ist-Temperatur?) dargestellt und auch eingestellt (Soll-Temperatur). Zur Darstellung wird im Gegensatz zu anderen gängigen Lösungen keine spezielle Software, sondern nur ein Webbrowser benötigt, was eine nahtlose Benutzung auf mobilen Geräten erlaubt.
Erhältlich ist die CometVisu unter der GNU General Public License (GPL) von der GitHub-Projektseite. Außerdem wird sie inzwischen (ab Version 1.1) vorinstalliert mit dem WireGate Multifunktionsgateway, einer Appliance für Smarthomes, ausgeliefert.

## Geschichte

Die CometVisu ist eine Entwicklung, die aus Diskussionen im KNX-Userforum, der größten deutschsprachigen Informationsplattform zum Thema KNX-Standard (KNX) und „Smart living“, entstanden ist. Erste Ansätze gab es mit internen Diskussionen im Sommer 2010, einer öffentlichen Ankündigung am 30. Oktober 2010 und der ersten Veröffentlichung, der Version 0.5.0, am 24. Oktober 2010.
Entwickelt wurde die CometVisu, da es zum damaligen Zeitpunkt keine andere Web-basierte Visualisierung gab, die in Echtzeit Statusänderungen anzeigen konnte. Üblich waren im Jahr 2010 Visualisierungen, die auf dem Rechner installiert werden mussten und somit einen Computer mit Windows als Voraussetzung hatten. Auch gab es bereits Ansätze für Web-Visualisierungen. Diese konnten nur durch regelmäßiges Polling einen Statuswechsel anzeigen, was eine hohe Systembelastung bei gleichzeitig hoher Latenz der Anzeige zur Folge hatte.
Seit dem Jahr 2013 kann die CometVisu als Visualisierung für OpenHAB verwendet werden. Dies bildet auch die technische Grundlage des JUNG Smart Visu Server, der seit 2016 verfügbar ist.

## Versionsgeschichte

| Version | Veröffentlichung | Bemerkungen |
| Ältere Version; nicht mehr unterstützt: 0.5.0 | 24. Oktober 2010 | Erste Veröffentlichung (nur im SVN-Repositorium), für internen Betatest.$^{*)}$ |
| Ältere Version; nicht mehr unterstützt: 0.5.1 | 26. November 2010 | Erste Veröffentlichung als Paket. Neue Widgets. Einbau eines Editors. |
| Ältere Version; nicht mehr unterstützt: 0.5.2 | 11. Dezember 2010 | Der Visu kann mit Plug-ins erweitert werden. |
| Ältere Version; nicht mehr unterstützt: 0.5.3 | 6. Februar 2010 | Zusätzliche Designs. |
| Ältere Version; nicht mehr unterstützt: 0.6.1$^{**)}$ | 27. November 2012 | Deutliche Erweiterung der Funktionen. Veröffentlichung für den öffentlichen Betatest.$^{*)}$ |
| Ältere Version; nicht mehr unterstützt: 0.6.2 | 30. Dezember 2012 | Fehlerbereinigte Veröffentlichung. |
| Ältere Version; nicht mehr unterstützt: 0.8.0 | 17. November 2013 | Deutliche Erweiterung der Funktionen, z. B. auf mehrere Spalten oder 2D-Seiten. Neuer Editor. openHAB als weitere Datenquelle. |
| Ältere Version; nicht mehr unterstützt: 0.8.1 | 8. Februar 2014 | Fehlerbereinigte Veröffentlichung. Außerdem neues Plug-in (Gauge). |
| Ältere Version; nicht mehr unterstützt: 0.8.2 | 2. März 2014 | Fehlerbereinigte Veröffentlichung. Leichte Weiterentwicklung bei den Diagrammen und Gauge. |
| Ältere Version; nicht mehr unterstützt: 0.8.3 | 4. Mai 2014 | Leichte Weiterentwicklungen, insbesondere bei den Diagrammen. |
| Ältere Version; nicht mehr unterstützt: 0.8.4 | 11. November 2014 | Interne Umstellung auf AMD. |
| Ältere Version; nicht mehr unterstützt: 0.8.5 | 15. Januar 2015 | Zusätzliches Management-Interface um verschiedene Konfigurationsdateien rein über die Weboberfläche bearbeiten zu können. |
| Ältere Version; nicht mehr unterstützt: 0.9.0 | 8. November 2015 | Interne Umstellung der Webseiten-Erzeugung um bei großen Konfigurationen schneller zu laden. |
| Ältere Version; nicht mehr unterstützt: 0.9.1 | 13. März 2016 | Erweiterung der Layout-Einstellungen um responsive Seiten zu erlauben. |
| Ältere Version; nicht mehr unterstützt: 0.9.2 | 1. Mai 2016 | Fehlerbereinigung beim DPT:6.010 encoding und bei der Darstellungen von Infoaction-Widgets im Metal-Design. |
| Ältere Version; nicht mehr unterstützt: 0.10.0 | 5. März 2017 | Deutliche Verkürzung der Ladezeiten durch lokales Zwischenspeichern (Cache). |
| Ältere Version; nicht mehr unterstützt: 0.10.1 | 2. April 2017 | Performance-Verbesserung beim Login. |
| Ältere Version; nicht mehr unterstützt: 0.10.2 | 9. April 2017 | Kleiner Bugfix. |
| Ältere Version; nicht mehr unterstützt: 0.11.0 | 10. März 2019 | Einige Bugfixes und neue Features (Notification and Error Reporting, *.txt-Editor, Docker-Container, Demo-Mode, ...) |
| Ältere Version; noch unterstützt: 0.11.1 | 13. April 2019 | Einige Bug-Fixes. |
| Aktuelle Version: 0.11.2$^{***)}$ | 11. August 2019 | Einige Bug-Fixes (Slider-Updates, Templates mit Multi-Child-Nodes, ...). |
| Legende:Ältere Version; nicht mehr unterstütztÄltere Version; noch unterstütztAktuelle VersionAktuelle VorabversionZukünftige Version |||
$^{*)}$ In der Anfangszeit der Entwicklung wurde zwischen internem und öffentlichen Betatest unterschieden. Interne Betatester waren die Betatester des WireGate, auch wenn die CometVisu selbst seit den ersten Anfängen über das Versionsverwaltungssystem und den Veröffentlichungen auf SourceForge allen Interessierten zur Verfügung stand. $^{**)}$ Aufgrund technischer Probleme wurde 0.6.0 gleich durch die inhaltlich identische Version 0.6.1 ersetzt. $^{***)}$ Siehe GitHub
Neben den in dieser Tabelle dargestellten Versionen gab es einige Vorabveröffentlichungen und Releasekandidaten mit teilweise deutlichen Entwicklungshüben. Dies fand besonders vor der Version 0.6 (dem Start des öffentlichen Betatests) und der Version 0.8 (dem Wechsel des Editors) statt.

## Technik
### Clients

Alle Webbrowser, die moderne Standards unterstützen, sind zur Darstellung und Interaktion mit der Visualisierung geeignet. Dies gilt neben üblichen PC-basierten Browsern wie Google Chrome oder Firefox für mobile Geräte mit Android oder Apple iOS.

#### Designs

Aufgrund der Verwendung allgemeiner Internettechnologien (HTML, CSS) können leicht eigene Designs implementiert werden. Mitgeliefert werden (Stand 24. Januar 2015, Version 0.8.5) bereits neun verschiedene, vom minimalistischen „Pure“, über „Planet“ im Stil der Star-Trek-Produktionen (LCARS) bis zu „Metal“ in modernem Look.

#### Editor

Die CometVisu kommt mit einem integrierten Editor, der bis zur Version 0.6 als WYSIWYG-Editor implementiert war.
Ab Version 0.8 wurde dieser durch einen universelleren Editor ersetzt, der die XML-basierten Konfigurationsdateien direkt nach den gültigen Regeln des definierenden XML-Schemas (XSD) bearbeiten lässt. So ist die Anpassung auch für Anwender ohne XML-Kenntnisse möglich.

### Server

Die CometVisu benötigt serverseitig im Wesentlichen nur einen Webserver. Wenn dieser PHP unterstützt, können auch optionale Komponenten wie der Editor verwendet werden. Zur Anbindung an die Gebäudeautomatisierung existieren zwei verschiedene Backends. Eines basiert auf dem eibd, einem Open-Source-Daemon zur Kommunikation mit KNX, das andere setzt auf OpenHAB auf.

### Übertragungsprotokoll

Als Übertragungsprotokoll wird das frei verfügbare CometVisu-Protokoll verwendet. Basis ist ein „Long Polling“, auch bekannt unter dem Namen Comet-Pattern, einer Ajax-Programmiertechnik.