Technische Alternative (TA) Daten zu Loxone importieren, es gibt zwar schon einiges online zu finden und auch die Hersteller Dokumentation von der Technischen Alternative und Loxone [JSON] sind online recht übersichtlich, doch ist mir beim übertragen meiner ersten Werte einige Fehler passiert und die implementierung war recht langwirig. Daher jetzt mal ein HowTo, getestet habe ich alles mit einem CMI (V1.38.1), UVRx2 und der LoxConfig 13.1. mit einem Miniserver der Gen 1. Läuft auch noch mit der LoxConfig 14.5.12.7
Die TA (Technische Alternative) bietet einen JSON API Adapter an. Diesen habe ich benutzt um die Sensordaten der TA in Loxone darstellen zu können. Recht einfach gestalltet. Hilfestellung gab es auch im LoxForum.
Technische Alternative Einstellungen
Anfangen musst du bei der URL bzw. bei der IP Adresse der Technische Alternative. Z.B. über das Webportal und den Punkt Einstellungen kann man die locale IP Adresse auslesen.
Wenn wir schon bei den Einstellungen sind vergeben wir, fals noch nicht geschehen, ein Anwender User Passwort, möglichst kompliziert etc.
Technische Alternative CMI URL für JSON Abruf erstellen
Wenn wir die IP Adresse, den Usernamen und das Passwort haben können wir über einen normalen Webbrowser die Werte die wir wollen via JSON Daten ausleiten. Kurz ein Beispiel, wir wollen alle Eingänge und Ausgänge am CAN Knoten eins auslesen, dafür müssen wir die URL wie folgt zusammenstellen:
http://192.168.10.234/INCLUDE/api.cgi?jsonnode=1&jsonparam=I,o
die „jsonnode=1“ gibt an welchen CAN Knoten wir wollen und jsonparam welche Daten wir gerne hätten, ist auch in der vollständige Dokumentation der JSON-API von Technische Alternative zu finden, anbei ein Link dazu: hier. Seite 3. Wenn wir die Seite so in einem Webbrowser aufrufen bekommst du, wenn alles gut geht, so einen Text zurück:
{ "Header":{ "Version":5, "Device":"87", "Timestamp":1672188576 }, "Data":{ "Inputs":[ { "Number":1, "AD":"A", "Value":{ "Value":56.9, "Unit":"1" } }, { "Number":2, "AD":"A", "Value":{ "Value":56.3, "Unit":"1" } }, { "Number":3, "AD":"A", "Value":{ "Value":51.0, "Unit":"1" } }, { "Number":4, "AD":"A", "Value":{ "Value":41.2, "Unit":"1" } }, { "Number":5, "AD":"A", "Value":{ "Value":50.0, "Unit":"1" } }, { "Number":6, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":7, "AD":"A", "Value":{ "Value":35.1, "Unit":"1" } }, { "Number":8, "AD":"A", "Value":{ "Value":33.3, "Unit":"1" } }, { "Number":9, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":10, "AD":"A", "Value":{ "Value":35.1, "Unit":"1" } }, { "Number":11, "AD":"A", "Value":{ "Value":35.9, "Unit":"1" } }, { "Number":14, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":15, "AD":"A", "Value":{ "Value":42.1, "Unit":"1" } }, { "Number":16, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }], "Outputs":[ { "Number":1, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":2, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":3, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":4, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":5, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":10, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":11, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":12, "AD":"A", "Value":{ "State":0, "Value":100.0, "Unit":"8" } }, { "Number":13, "AD":"A", "Value":{ "State":0, "Value":100.0, "Unit":"8" } }, { "Number":14, "AD":"A", "Value":{ "State":0, "Value":100.0, "Unit":"8" } }, { "Number":15, "AD":"A", "Value":{ "State":0, "Value":100.0, "Unit":"8" } }, { "Number":16, "AD":"A", "Value":{ "State":1, "Value":100.0, "Unit":"8" } }]}, "Status":"OK", "Status code":0 }
Nur das Nötigste an Loxone
Jetzt könnte man sich in Loxone natürlich alle Werte von allen CAN Knoten auch so importieren und dann in Loxone ein Anlagenschema bauen. In meiner Heizung habe ich aber schon ein Can Touch im Keller und via Technische Alternative CMI schon ein Schema. Das gleiche nochmal in Loxone ist für mich jetzt überflüssig. Hinweis, man kann aus der Loxone auch auf das CMI verlinken. Einige Werte und Stausanzeigen finde ich praktisch auch gleich in Loxone sehen zu können. Daher hier mal die URL wie ich Sie für mich angepasst habe um drei Temperaturwerte aus dem DL-Bus, einem digitalen Eingang und einem Ausgang auszulesen.
http://192.168.10.234/INCLUDE/api.cgi?jsonnode=1&jsonparam=D1,D2,D3,I14,O11
nach dem Aufruf im Webbrowser:
{ "Header":{ "Version":5, "Device":"87", "Timestamp":1672183861 }, "Data":{ "DL-Bus":[ { "Number":1, "AD":"A", "Value":{ "Value":6.6, "Unit":"1" } }, { "Number":2, "AD":"A", "Value":{ "Value":21.7, "Unit":"46", "RAS":"0" } }, { "Number":3, "AD":"A", "Value":{ "Value":20.7, "Unit":"46", "RAS":"0" } }], "Inputs":[ { "Number":14, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }], "Outputs":[ { "Number":11, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }]}, "Status":"OK", "Status code":0 }
Anbei ein Tipp wenn du den Status Code 4 mit der Meldung: TOO MANY REQUESTS erhällst musst du ca. eine Minute warten, steht auch im Handbuch JSON API von TA Seite 8.
So wenn wir die URL mit den Werten so erstellt haben und im Browser ein Ergebis erziehlt haben müssen wir für Loxone noch den User und das Passwort voranstellen z.B. so:
http://user:0123456@192.168.10.234/INCLUDE/api.cgi?jsonnode=1&jsonparam=D1,D2,D3,I14,O11
Und nein ich empfehle nicht 0123456 als Passwort zu verwenden, ebenso den User Admin nicht. Wenn du damit fertig bist gehts zur Loxoneconfig.
Loxone Config Virtueller Eingang
unter dem Miniserver sind die „Virtuelle Eingänge“ in der LoxoneConfig zu finden dort finden wir dann auch oben in der Menue Leiste Virtueller HTTP Eingang Virtueller Eingang erstellen.
Ich habe die Bezeichnung CMI_TA_Parameter gewählt und dort die URL eintragen die wir oben erstellt haben. Da das C.M.I nur alle 60 Sekunden einmal abgerufen werden kann hab ich den Abfragezyklus auf 61 Sekunden gestellt.
Dannach erstellst du einen „Virtueller HTTP Eingang Befehl“ um die Technische Alternative Werte einem Loxone Element zuzuweisen.
Im „Virtueller HTTP Eingang Befehl“ gebe ich die Bezeichnung immer dem gleichen Wert wie ich ihn aus der TA kenne, dann habe ich weniger Verwechslungsgefahr. Angefangen habe ich mit dem StatusCode, wenn dieser 0 ist weiß ich, dass die Abfrage erfolgreich war.
Die Befehlserkennung ist bei komplexeren Abfragen, am Anfang schwirig zu verstehen. Der StatusCode kommt nur einmal vor daher ist die Abfrage einfach mit „Status code“:\v der Platzhalter „\v“ steht bei Loxone für den Wert der zu übernehmen ist.
für meine fünf Technische Alternative Werte brauche ich nach dem JSON StatusCode jetzt noch fünf Befehle. Jeder Technische Alternative Wert hat im JSON File seinen eigene Identification und muss über die Erkenung eindeutig identifiziert werden. Wenn wir uns die JSON Daten aus dem Browser in einen Texteditor oder noch besser eine Programmierungsumgebung ansehen sehen wir die zusammenhänge besser.
{ "Header": { "Version":5, "Device":"87", "Timestamp":1672183861 },
"Data":{
"DL-Bus":[ {
"Number":1, "AD":"A", "Value":{ "Value":6.6, "Unit":"1" } }, {
"Number":2, "AD":"A", "Value":{ "Value":21.7, "Unit":"46", "RAS":"0" } }, {
"Number":3, "AD":"A", "Value":{ "Value":20.7, "Unit":"46", "RAS":"0" } }],
"Inputs":[ {
"Number":14, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }],
"Outputs":[ {
"Number":11, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }]},
"Status":"OK", "Status code":0 }
Was in meinem Beispiel auffält ist das die Werte identifikationen = „Number“ nicht heufiger vorkommen, wenn ich den Input 1 abfragen wollte müsste ich die höhere ebene DL-Bus, Inputs, Outputs auch noch in die Befehlserkennung übernehmen. Da ich bei meinen ersten Tests viele Fehler hatte und nicht recht wuste woran es lag kann ich dir das LoxForum Artikel 121728 empfehlen. Aus diesem hab ich auch den Tip mit dem doppelten Value texten in der Abfrage.
Die Befehlserkennung von Loxone ist nicht so intuitiv aber doch verständlich:
Zeichen zum Auslesen eines Wertes:
\v = Wert
Zeichen zum Navigieren durch den Text:
\iText\i = Springe zu ‚Text‘
Also was wir suchen ist immer der Value im String: „Number“:1, „AD“:“A“, „Value“:{ „Value„:6.6, „Unit“:“1″ } }, { mit der Befehlserkennung
Number":1\iValu\i\iValu\ie":\v
Virtueller HTTP Eingang Befehl Temperatur
Number":1\iValu\i\iValu\ie":\v => Außen
Number":2\iValu\i\iValu\ie":\v => Wintergarten
Number":3\iValu\i\iValu\ie":\v => 1.OG
Virtueller HTTP Eingang Befehl Digitalereingang
Number":14\iValu\i\iValu\ie":\v => Warmwasser zapfen
Virtueller HTTP Eingang Befehl Digitalerausgang
Number":11\iValu\i\iValu\ie":\v => Zirku Pumpe
Virtueller HTTP Eingang Befehl Betriebsarten
Number":2\iValu\i\iValu\i\iRAS\i":"\v => Wintergarten
Number":3\iValu\i\iValu\i\iRAS\i":"\v => 1.OG
Wenn man alle Werte Auslesen will muss man die Inputs bzw. Outputs noch in die Befehlskette integrieren, da die Number werte mehrfach vorkommen und Loxone nur das erste aufkommen als wert übernimmt.
Inputs und Outputs mit der gleichen Nummer in einer Abfrage
Virtueller HTTP Eingang Befehl Eingang
Inputs\iNumber":11\i\iValu\i\iValu\ie":\v
Virtueller HTTP Eingang Befehl Ausgang
Outputs\iNumber":11\i\iValu\i\iValu\ie":\v
NOCH NICHT GETESTET
Loxone Statusbaustein bessere Lesbarkeit
Für die Betriebsarten empfiehlt sich noch ein Statusbaustein mit StatusCode abfrage
Technische Alternative Betriebsarten (RAS-State)
- 0 = Automatikbetrieb
- 1 = Normalbetrieb
- 2 = Absenkbetrieb
- 3 = frost/ Standbybetrieb
Technische Alternative Status code
- 0 = OK
- 1 = Node not available
- 3 = Error in the request String
- 4 = to many requests
- more at TA CMI-JSON-API
Zu guter letzt kann man die virtuellen Eingänge in die Config setzen und z.B. in einem Anlagenschema anzeigen.
Mittlerweile gibts auch eine Ergänzung Technische Alternative und Loxone [HTML]