Seite 2 von 3

Re: Auslesen von Werten aus Danfoss API

Verfasst: 28.04.2021, 21:10
von MichaelN
Du brauchst eine URL. Keine Ahnung was das Addon macht.

Re: Auslesen von Werten aus Danfoss API

Verfasst: 28.04.2021, 21:39
von Black
in den header bekommst du bei wget mit z.b.

Code: Alles auswählen

--header="Accept-Encoding: compress, gzip"
eigene Ausdrücke eingefügt... so müsste es auch mit deinem API key gehen

Black

Re: Auslesen von Werten aus Danfoss API

Verfasst: 29.04.2021, 10:13
von andi4822
Black hat geschrieben:
28.04.2021, 21:39
in den header bekommst du bei wget mit z.b.

Code: Alles auswählen

--header="Accept-Encoding: compress, gzip"
eigene Ausdrücke eingefügt... so müsste es auch mit deinem API key gehen

Black
Ich bin leider zu doof um diesen Befehl mitzuschicken. Wie genau sollte der Code bei mir aussehen? So bekomme ich nur Fehlermeldungen im Script Editor der CCU.

Code: Alles auswählen

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

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

      
        WriteLine(status);

Re: Auslesen von Werten aus Danfoss API

Verfasst: 29.04.2021, 10:18
von MichaelN
Du kannst nicht wild " und ' mischen. Das muss schon einen SInn ergeben!

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - --header=x-api-key=xxxxxxxxxxxxxxxxxxx '"#url#"'");
vielleicht muss der Header auch gekapselt werden, also evt:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - --header='x-api-key=xxxxxxxxxxxxxxxxxxx' '"#url#"'");

Re: Auslesen von Werten aus Danfoss API

Verfasst: 29.04.2021, 10:35
von andi4822
Danke für die Hilfe. Aber leider bekomm ich noch immer keine Rückmeldung vom Link zurück. Ich glaub ich gebe jetzt auf. 10 Stunden probieren sind genug :)

Re: Auslesen von Werten aus Danfoss API

Verfasst: 29.04.2021, 10:38
von Black
MichaelN hat geschrieben:
29.04.2021, 10:18
Du kannst nicht wild " und ' mischen. Das muss schon einen SInn ergeben!

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - --header=x-api-key=xxxxxxxxxxxxxxxxxxx '"#url#"'");
vielleicht muss der Header auch gekapselt werden, also evt:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - --header='x-api-key=xxxxxxxxxxxxxxxxxxx' '"#url#"'");
ich würds so schreiben.. bin mir net sicher ob serverseitig da nicht ein " erwartet wird

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(^wget -q -O - --header="x-api-key:xxxxxxxxxxxxxxxxxxx" "^#url#^"^);

Re: Auslesen von Werten aus Danfoss API

Verfasst: 29.04.2021, 11:04
von Fonzo
andi4822 hat geschrieben:
29.04.2021, 10:35
Ich glaub ich gebe jetzt auf. 10 Stunden probieren sind genug :)
Hast Du es denn mal auf anderem Weg probiert?
Das wäre PHP

Code: Alles auswählen

<?php
 
$curl = curl_init();
 
curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://external.enspire.danfoss.com/devices',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'x-api-key: <API Key>'
  ),
));
 
$response = curl_exec($curl);
 
curl_close($curl);
echo $response;
Ansonsten könntest Du auch probieren ob Du das aus dem NEO Server verschickt bekommst und dort die Antwort gleich auswerten, vielleicht ist das ja einfacher für Dich einzurichten. Zumindest sieht Du wenn Du mal einen anderen Weg zum Test ausprobierst, ob überhaupt was von der CCU3 verschickt wird und ob Du einen sinnvollen Response vom Gerät bekommst.

Re: Auslesen von Werten aus Danfoss API

Verfasst: 29.04.2021, 11:55
von Black
Ich könnte jetzt auch noch eine Lösung in Javascript oder Python oder Pascal oder c #schreiben.. wären alle genauso wenig hilfreich für dich wie eine PHP Lösung.

du hattest da nur einen Dämelsfehler drinne: einen header schreibt man mit nem Doppelpunkt.
es geht mit deiner Api sowohl mit wget als auch mit curl (getestet)

der einfachheithalber hier die wget Lösung
mit deinem testweise zur verfügung gestellten Key bekomme ich auch eine korrekte Antwort (sieht führ mich zumindest nach einem validen JSON aus, musst du nun weitertesten.

ich hab mir aber erlaubt das für system.Exec zu schreiben:

Code: Alles auswählen

string url = "https://external.enspire.danfoss.com/devices";
string stdErr;
string stdOut;

system.Exec(^wget --timeout=2 -q -O - --header="x-api-key:DerVerwendeteApiKey" "^#url#^"^,&stdOut, &stdErr); 
WriteLine (stdOut);  
Gruss Black

Re: Auslesen von Werten aus Danfoss API

Verfasst: 29.04.2021, 12:03
von andi4822
Black hat geschrieben:
29.04.2021, 11:55
du hattest da nur einen Dämelsfehler drinne: einen header schreibt man mit nem Doppelpunkt.
es geht mit deiner Api sowohl mit wget als auch mit curl (getestet)
Ohh Mann nur eine Kleinigkeit, vielen vielen Dank. Das ist genau das was ich wollte.

Re: Auslesen von Werten aus Danfoss API

Verfasst: 29.04.2021, 12:07
von Black
yup, das berühmte alte Gesetz: kaum macht mans richtig, schon funktioniert es :wink:

vergess das --timeout=2 oder 3 oder so aber nicht, ansonsten legt es dir, wenn die verbindung hängt, die rega aufn rücken.

Black