CCU-Jack: REST-API/MQTT-Server/MQTT-CCU-Adapter

Der CCU-Jack als REST- und MQTT-Schnittstelle für die CCU und virtuelle Geräte für das IoT

Moderator: Co-Administratoren

Mathias
Beiträge: 1767
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 253 Mal
Kontaktdaten:

CCU-Jack: REST-API/MQTT-Server/MQTT-CCU-Adapter

Beitrag von Mathias » 03.10.2019, 22:06

Hallo,

ich möchte hier ein neues Projekt von mir vorstellen:

CCU-Jack bietet einen einfachen und sicheren REST-basierten Zugriff auf die Datenpunkte der CCU. Er implementiert dafür das Very Easy Automation Protocol, welches von vielen Programmiersprachen leicht verwendet werden kann.

Folgende Merkmale zeichnen CCU-Jack aus:
  • Lese- und Schreibzugriff auf alle Gerätedatenpunkte und Systemvariablen der CCU.
  • Alle Datenpunkte können über eine Baumstruktur erkundet werden.
  • Umfangreiche Zusatzinformationen zu jedem Datenpunkt, z.B. Anzeigenamen, Räume, Gewerke, aber auch viele technische Informationen aus den XMLRPC-Schnittstellen und der ReGaHss.
  • Hohe Performance und minimale Belastung der CCU-Prozesse (XMLRPC-Schnittstellen, ReGaHss, CCU Web-Server).
  • Unterstützung von HTTP/2 und Verbindungssicherheit auf dem Stand der Technik.
  • Fertige Distributionen für viele Zielsysteme (CCU2, CCU3/RM, Windows, Linux, macOS).
  • Die Verwendung des VEAP-Protokolls ermöglicht einfachste Anbindung von Applikationen und Frameworks (z.B. Angular, React, Vue). Zudem ist das Protokoll nicht CCU-spezifisch. Entwickelte Client-Applikationen könnnen auch mit anderen VEAP-Servern verwendet werden.
Viele weitere Details sind auf der Projektseite zu finden.

Gruß
Mathias
Zuletzt geändert von Mathias am 15.02.2020, 21:19, insgesamt 2-mal geändert.

Mathias
Beiträge: 1767
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 253 Mal
Kontaktdaten:

Re: CCU-Jack: Schnittstelle für einen REST-basierten Zugriff auf die Datenpunkte der CCU

Beitrag von Mathias » 07.10.2019, 21:58

Der CCU-Jack verwendet einen völlig anderen Ansatz als die XML-API (und auch die OpenAPI). Bei der Abfrage und Erkundung von Gerätedatenpunkten werden die ReGaHss und die Schnittstellenprozesse überhaupt nicht angesprochen. Es werden also auch keine HM-Skripte ausgeführt, die die ReGaHss blockieren. Die folgenden Performance-Messungen verdeutlichen es.

Latenz für das Lesen eines Gerätedatenpunktes in Millisekunden:
ccu2-latency.png
ccu2-latency.png (5.37 KiB) 10365 mal betrachtet
Durchsatz (gelesene Datenpunktwerte/Sekunde):
Hinweis: Das Diagramm ist überholt! (siehe **)
ccu2-throughput.png
ccu2-throughput.png (6.4 KiB) 10365 mal betrachtet
(*) Die XML-API unterstützt Paket-Anfragen. Der CCU-Jack hingegen mehrere Verbindungen gleichzeitig.
Bei sehr großen Paket-Anfragen (z.B. 100 DP) hat die XML-API wahrscheinlich einen höheren Durchsatz als der CCU-Jack. Beim CCU-Jack könnten aber auch weitere parallele Verbindungen genutzt werden.
Getestet wurde der CCU-Jack als Add-On auf einer CCU2.
(**) Mit Implementierung der Bulk-API zum Lesen/Setzen mehrerer Datenpunkte in einer Anfrage in V2.2.0 ist der CCU-Jack bei Gerätedatenpunkten immer mindestens 40-fach schneller die XML-API.
Zuletzt geändert von Mathias am 12.01.2023, 22:15, insgesamt 1-mal geändert.

Mathias
Beiträge: 1767
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 253 Mal
Kontaktdaten:

Re: CCU-Jack: Schnittstelle für einen REST-basierten Zugriff auf die Datenpunkte der CCU

Beitrag von Mathias » 24.01.2020, 23:17

Die Entwicklung geht natürlich stetig weiter. In der v0.5.0 ist nun Folgendes hinzugekommen:
  • Web-basierte Benutzerschnittstelle mit der alle Datenpunkte erkundet und die Werte überwacht werden können.
  • Vollständige Unterstützung von Cross-origin resource sharing (CORS) für die Anbindung von Web-Applikationen.
Viele weitere Details sind auf der Projektseite zu finden.
Und die Downloads sind hier zu finden.

Zwei Screen-Shots von der Web-UI:
web-ui-navigator-var.png
web-ui-watcher.png
Der CCU-Jack ist schon sehr robust und besitzt eine hohe Performance. Folgende Angaben gelten für eine Installation als Add-On auf einer CCU3 (Raspberry Pi 3B):
  • 1,7 Millisekunden Latenz für das Lesen eines Datenpunktes.
  • Insgesamt können 8.800 Datenpunkte von 100 Clients pro Sekunde gesichert mit HTTPS-Verschlüsselung gelesen werden.
Gruß
Mathias

Mathias
Beiträge: 1767
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 253 Mal
Kontaktdaten:

CCU-Jack: Jetzt mit MQTT-Server und MQTT-CCU-Adapter

Beitrag von Mathias » 04.02.2020, 22:47

Der CCU-Jack wurde nun um einen vollwertigen MQTT-Server und MQTT-CCU-Adapter erweitert. Die Dokumentation der MQTT-Schnittstelle ist hier zu finden.

Ich denke, dass sich die beiden unterstützten Protokolle REST bzw. VEAP und MQTT sehr gut gegenseitig ergänzen. Über die REST-API können die Datenpunkte erkundet und zusätzliche Informationen zu diesen abgefragt werden. Über MQTT werden Wertänderungen ereignisgetrieben übermittelt. Datenpunkte können über beide APIs gelesen und gesetzt werden. Der CCU-Jack ist sehr schnell und ressourcenschonend (also kein Node.js :) ), er ist explizit auch für die CCU2 vorgesehen. Noch hat er nicht V1.0 erreicht, er ist also noch in der Entwicklung. Ich habe ihn aber auf 3 CCUs durchgängig im Betrieb.

Grundsätzliche Ideen des CCU-Jacks:
  • Einfache Installation (Es soll z.B. keine Kommandozeile (SSH) oder ein Editieren von Konfigurationsdateien für die Inbetriebnahme benötigt werden.)
  • Einfache Anbindung von Fremdapplikationen (Anderen Entwicklern soll es möglichst leicht fallen, ihre Applikationen an die CCU anzubinden. Die komplexe Ankopplung von etlichen CCU-Prozessen entfällt.)
  • Einfache Anbindung von IoT-Geräten (IoT-Geräte sollen ohne Programmierung, Blockly oder Flows angebunden werden können.)
  • Sicherheit auf dem Stand der Technik (Zertifikate werden automatisch generiert. TLS V1.3 wird unterstützt.)
  • Robust und leistungsfähig (Hunderte von Clients werden gleichzeitig unterstützt. CCU-Jack enthält einen der schnellsten MQTT-Server.)
Viele weitere Details sind auf der Projektseite zu finden.
Und die Downloads sind hier zu finden.

vepman
Beiträge: 164
Registriert: 12.09.2013, 13:52
System: CCU
Hat sich bedankt: 5 Mal

Re: CCU-Jack: Jetzt mit MQTT-Server und MQTT-CCU-Adapter

Beitrag von vepman » 05.02.2020, 20:07

Hallo Mathias,

erstmal Danke für das super Addon. Klasse!

Die Installation verlief einwandfrei.
Der Navigator funktioniert ohne Probleme.
Leider habe ich Probleme mit MQTT.
Ich bekomme die Lampe nicht geschaltet.
Hier mal ein Bild mit dem von dir empfohlenen MQTT Dash.

Fotogenic_08a9927e-1698-479b-bc6d-6322aba723d5.jpg


Für on und off hatte ich auch schon true und false eingesetzt.
Der Port 1883 ist in der CCU freigeschaltet.
Wenn ich in der Web-UI der CCU3 schalte, wird es im Navigator richtig angezeigt.
Was mache ich falsch?

Gruß
vepman

Mathias
Beiträge: 1767
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 253 Mal
Kontaktdaten:

Re: CCU-Jack: Jetzt mit MQTT-Server und MQTT-CCU-Adapter

Beitrag von Mathias » 06.02.2020, 18:32

Ich habe mir nochmal Gedanken gemacht, wie andere MQTT-Clients leichter zu konfigurieren sind. Den CCU-Jack habe ich daher so angepasst, dass er für das Setzen von Datenpuntken mehr Varianten der MQTT-Payload unterstützt. Die neue Version 0.7.2 ist wieder auf GitHub zu finden.

MQTT Dash kann nun wie folgt konfiguriert werden:

Hinweis: Die Topics zum Empfangen und Senden unterschieden sich!
Screenshot_20200206-181809.png
Screenshot_20200206-181816.png
Screenshot_20200206-181824.png

vepman
Beiträge: 164
Registriert: 12.09.2013, 13:52
System: CCU
Hat sich bedankt: 5 Mal

Re: CCU-Jack: Jetzt mit MQTT-Server und MQTT-CCU-Adapter

Beitrag von vepman » 06.02.2020, 19:47

Mit den von dir geposteten Bildern war es ein Kinderspiel.
Natürlich habe ich auch CCU-Jack vorher auf die neuste Version geupdated.
Klasse, jetzt klappt alles und als Nebeneffekt habe ich noch einiges über MQTT gelernt.
Danke für deine Hilfe.

wiwo
Beiträge: 16
Registriert: 17.01.2020, 17:48
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: CCU-Jack: Jetzt mit MQTT-Server und MQTT-CCU-Adapter

Beitrag von wiwo » 13.02.2020, 20:21

Hallo Mathias,

erst einmal herzlichen Dank für das tolle Projekt, das ich geren einmal testen möchte.

Ich nutze die RaspberryMatic als virtuelle x86 Version unter Proxmo und bin zufrieden damit,

viewtopic.php?f=65&t=54055

gibt es auch ein fertiges Paket für diese Installation?

Gruss
Wolfgang
Proxmox VE HA Cluster auf Shuttle DL20N6 + DL10J, RaspberryMatic 3.75.6.20240316, RPI-RF-MOD mit HB-RF-ETH, HM-LGW + HmIP-HAP als Gateway, 82 BidCos-RF, 45 HmIP Geräte, ioBroker

Mathias
Beiträge: 1767
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 253 Mal
Kontaktdaten:

Re: CCU-Jack: Jetzt mit MQTT-Server und MQTT-CCU-Adapter

Beitrag von Mathias » 15.02.2020, 09:07

Hallo Wolfgang,

ein fertiges Paket für das virtualisierte RaspberryMatic (Linux x86, 32Bit) gibt es zurzeit nicht. Aber ich werde versuchen heute oder morgen eines zu erstellen.

Gruß
Mathias

Mathias
Beiträge: 1767
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 253 Mal
Kontaktdaten:

Re: CCU-Jack: REST-API/MQTT-Server/MQTT-CCU-Adapter

Beitrag von Mathias » 15.02.2020, 21:26

So, das Paket für das virtualisierte RaspberryMatic (x86, 32 Bit) ist fertig:
ccu-jack-vccu-x86-0.7.4.tar.gz
(3.71 MiB) 139-mal heruntergeladen
Testen konnte ich es aber noch nicht. Vielleicht kannst Du mir kurz eine Rückmeldung geben.

Antworten

Zurück zu „CCU-Jack“