Auslesen von Werten aus Danfoss API

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

andi4822
Beiträge: 19
Registriert: 24.03.2020, 09:21
Hat sich bedankt: 2 Mal

Auslesen von Werten aus Danfoss API

Beitrag von andi4822 » 28.04.2021, 18:19

Hallo,

ich möchte die Werte meiner Heizungssteurung ECL Comfort 310 von Danfoss in meine CCU3 integrieren. Dafür gibt es seitens Danfoss einen API für Drittsoftware. Das ganze erfolgt über diesen Link https://external.enspire.danfoss.com/devices.

Um die Werte seiner Steuerung auszulesen muss man seinen API Key in den Header der URL schreiben. Wenn ich den Link im Firefox öffne und mittels dem Add On "Modify Header Value" den API Key rein schreibe (Add to header: x-api-key=xxxxxxx) bekomme ich die Werte als JSON im Browser ausgegeben.

Wie schaffe ich das jetzt, dass ich die Werte mittels Script in der CCU3 auswerten kann. Bzw. wie kann ich den Befehl "add to header" ausführen?

Ich habe nach langer Internetrecherche folgendes Script gebastelt. Leider ohne Erfolgt:

Code: Alles auswählen

string x_api = "x-api-key=xxxxxxxxxxxx";

po_request="/usr/local/addons/cuxd/curl -X POST -k -H \"Content-Type: application/json\" -d \"x-api-key=" #x_api# "\" https://external.enspire.danfoss.com/devices";

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(po_request);

var url = "https://external.enspire.danfoss.com/devices";

 
        dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
        dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
        string status = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

        ! Hier kann man schauen was man überhaupt bekommt vom Link
        WriteLine(status);
Sollte das nicht so funktieren?

Danke für eure Hinweise..

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Auslesen von Werten aus Danfoss API

Beitrag von MichaelN » 28.04.2021, 18:29

LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

cmjay
Beiträge: 2373
Registriert: 19.09.2012, 10:53
System: CCU
Wohnort: Jottweedee
Hat sich bedankt: 250 Mal
Danksagung erhalten: 348 Mal

Re: Auslesen von Werten aus Danfoss API

Beitrag von cmjay » 28.04.2021, 18:33

Sieht auf den ersten Blick so aus, als würde der Textbaustein "x-api-key=" doppelt vorkommen.
Zum einen ist er in der Variablendeklaration mit enthalten:

Code: Alles auswählen

string x_api = "x-api-key=xxxxxxxxxxxx";
Dann ist er aber auch nochmal beim Aufruf mit eingebaut:

Code: Alles auswählen

"x-api-key=" #x_api#
Probier doch mal, ob es mit Varablendeklaration

Code: Alles auswählen

string x_api = "xxxxxxxxxxxx";
funktioniert.
Es kann leider nicht ganz ausgeschlossen werden, dass ich mich irre.
HmIP muss leider draussen bleiben. in Ausnahmefällen erlaubt
ACHTUNG! Per Portweiterleitung aus dem Internet erreichbare CCU-WebUI ist unsicher! AUCH MIT PASSWORTSCHUTZ! Daher: Portweiterleitung deaktivieren!

Fonzo
Beiträge: 6687
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 478 Mal

Re: Auslesen von Werten aus Danfoss API

Beitrag von Fonzo » 28.04.2021, 19:46

andi4822 hat geschrieben:
28.04.2021, 18:19
Sollte das nicht so funktieren?
Laut API nicht, die funktioniert mit OAuth 2.0. Du musst Dir also erst mal jeweils den Bearer per Oauth abholen und dann im HTTP Header den Bearer Token zur Authentifizierung mitsenden.

Fonzo
Beiträge: 6687
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 478 Mal

Re: Auslesen von Werten aus Danfoss API

Beitrag von Fonzo » 28.04.2021, 20:08

andi4822 hat geschrieben:
28.04.2021, 18:19
ich möchte die Werte meiner Heizungssteurung ECL Comfort 310 von Danfoss in meine CCU3 integrieren. Dafür gibt es seitens Danfoss einen API für Drittsoftware.
An sich ist es sinnvoller die Daten direkt lokal von dem ECL 310 abzugreifen, dazu hat das Gerät explizit einen RS 485 Bus für ModBus-
Kommunikation mit SCADA-Systemen. Du braucht also primär ein Modbus RTU Gateway zum auslesen, dann kommst Du auch an alle Werte des Geräts lokal ran.

andi4822
Beiträge: 19
Registriert: 24.03.2020, 09:21
Hat sich bedankt: 2 Mal

Re: Auslesen von Werten aus Danfoss API

Beitrag von andi4822 » 28.04.2021, 20:21

Also das mit der Variable mit dem doppelten api-key hab ich probiert. Geht leider trotzdem nicht.

@ Fonzo: Wie genau funktioniert das mit dem Oauth 2.0? Gibt es da Beispiele, ich bin noch Neuling in diesem Bereich.

Das mit dem Modbus ist leider keine Alternative, da der bereits von meinem Fernwärmebetreiber genutzt wird.

Hier habe ich noch eine Anleitung gefunden von Danfoss für das API https://external.enspire.danfoss.com/re ... index.html

Fonzo
Beiträge: 6687
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 478 Mal

Re: Auslesen von Werten aus Danfoss API

Beitrag von Fonzo » 28.04.2021, 20:40

andi4822 hat geschrieben:
28.04.2021, 20:21
Wie genau funktioniert das mit dem Oauth 2.0?
So funktioniert OAuth2. Scheinst aber Glück zu haben, Oauth wird offensichtlich von den anderen APIs von Danfoss benutzt, in dem Fall scheint das auch völlig ohne zu gehen.
andi4822 hat geschrieben:
28.04.2021, 20:21
Gibt es da Beispiele, ich bin noch Neuling in diesem Bereich.
Das steht in der APi Beschreibung von Danfoss, Postman ist vielleicht hilfreich, dort importierst Du das OpenAPI yaml File, dann kannst Du mit der API in Postman ausgiebig experimentieren.
andi4822 hat geschrieben:
28.04.2021, 20:21
Das mit dem Modbus ist leider keine Alternative, da der bereits von meinem Fernwärmebetreiber genutzt wird.
An sich um so besser, wenn Modbus RTU so oder so schon genutzt wird, dann müsstest Du Dich ja nur auf den RS 485 zusätzlich hängen. Hängt ja aber davon ab was Du eigentlich genau bezweckst bzw. für was Du die Daten eigentlich in der CCU3 brauchst bzw. welche Daten Du alle brauchst. Kannst Dir natürlich auch was schreiben, wenn Dir das lieber ist. Falls Du mit den Daten dann nicht irgendwas direkt auf der CCU3 triggern willst, sondern diese einfach nur anzeigen, kannst Du so was alternativ z.B. auch einfach aus NEO als HTTP Request absetzten und dann von dem JSON als Antwort einer Grafik, Textfeld zur Anzeige zuweisen.

andi4822
Beiträge: 19
Registriert: 24.03.2020, 09:21
Hat sich bedankt: 2 Mal

Re: Auslesen von Werten aus Danfoss API

Beitrag von andi4822 » 28.04.2021, 21:00

Also brauch ich keine Oauth 2.0 Anmeldung machen? Postmen ist eine Software wo ich die Rückmeldungen empfangen kann soweit ich das sehe! Das hab ich im Firefox auch schon geschafft. Aber wie schaffe ich es dann die Werte als Script in der CCU3 abzufragen? Da scheitere ich an dem x-api-key in den header hinzuzufügen. Daher bekomm ich keine Rückmeldung von diesem Link.

Ziel ist es nur die Temperaturen abzufragen und als Variable in der CCU zu haben

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Auslesen von Werten aus Danfoss API

Beitrag von MichaelN » 28.04.2021, 21:04

Wenn du die Daten in Firefox abfragen kannst, dann hast du doch eine funktionierende URL.Schau dir den link an, den ich in Beitrag 2 gepostet habe. In dem Skript fügst du deine URL ein und kannst die Daten dann in Systemvariable speichern - die du natürlich noch anlegen musst.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

andi4822
Beiträge: 19
Registriert: 24.03.2020, 09:21
Hat sich bedankt: 2 Mal

Re: Auslesen von Werten aus Danfoss API

Beitrag von andi4822 » 28.04.2021, 21:09

Im Firefox geht es aber nur wenn ich mittels dem von mir beschriebenen Add On bei diesem Link von Danfoss den API key in den Header schreiben lasse.

An dem scheitere ich beim Script.

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“