Thema: Ich versuche mich gerade in Homematic Script einzuarbeiten, mit dem Beispiel, um Wetterdaten auf Openweathermap.org (OWM) per curl hochzuladen.
Sekundärziel ist anschließend auch ein vollständiges Script und Anleitung im Weatherman-Thread bereitzustellen, wenn es denn mal funktioniert, da momentan "nur" ein-Wunderground Beispiel von MartinBr vorhanden ist
Problem: Leider kommen bei OWM keine Werte an, weil ich vermutlich nicht das von OWM erwartete Format umgesetzt bekomme.
Es wäre echt toll, wenn Ihr mir -auf die Sprünge- helfen könntet, nach insgesamt 8h trial&error komme ich einfach nicht mehr weiter.
Hier das auf die Fragestellung reduzierte/ simplifizierte Test-Beispiel:
Eingabe:
Code: Alles auswählen
string appid = "1234abc";
string station_id = "131415a";
integer dt = system.Date("%F %T").ToTime().ToInteger(); !OWM erwartet unixtime...
real temperature = 11.1;
string wurl = "http://api.openweathermap.org/data/3.0/measurements?appid="#appid#"";
string r3 = "curl -X POST \""#wurl#"\" -d \"station_id="#station_id#"&dt="#dt#"&temperature="#temperature#"\" -H \"Content-Type: application/json\"";
WriteLine (r3);
!dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(r3);
Code: Alles auswählen
curl -X POST "http://api.openweathermap.org/data/3.0/measurements?appid=1234abc" -d "station_id=131415a&dt=1606132730&temperature=11.100000" -H "Content-Type: application/json"
=> Soweit so gut, jedoch es kommt aber bei OWM nichts an.
Die Erwartung von OWM ist jedoch Folgende:
URL:
Code: Alles auswählen
http://api.openweathermap.org/data/3.0/measurement&appid=1234abc
Code: Alles auswählen
[
{
"station_id": "131415a",
"dt": 1606132730,
"temperature": 11.1,
}
]
Code: Alles auswählen
Content-Type: application/json
Mit meinem Advanced Rest Client sieht das dann so aus, was auch tatsächlich funktioniert:
Post:
Code: Alles auswählen
curl "http://api.openweathermap.org/data/3.0/measurements?appid=1234abc" \
-X POST \
-d "[\n {\n \"station_id\": \"131415a\",\n \"dt\": 1606132730,\n \"temperature\": 11.1\n }\n]" \
-H "Content-Type: application/json" \
-H "content-length: 286"
Code: Alles auswählen
http://api.openweathermap.org/data/3.0/measurements?appid=1234abc&station_id=131415a&type=h&limit=100&from=1606000000&to=1606127999
Code: Alles auswählen
[
{
"type": "h",
"date": 1606132730,
"station_id": "131415a",
"temp": {
"max": 11.1,
"min": 11.1,
"average": 11.1,
"weight": 22
},...
Jetzt vermute ich, (bin kein Experte), dass OWM die Zeichen erwartet
Code: Alles auswählen
[ { }]
Wenn ja, finde ich weder im Forum noch in der Homematic Script Referent auf Seite 19 Kapitel 6.6.1 Escape Sequenzen diese Zeichen vor.
Wenn nein, wie wäre der korrekte Curl-Aufruf?
Vielen Dank schonmal,
Gruß
Marc
Edit: Die Frage lautet also eigentlich wie ich nachfolgende Zeile korrekt "encapsule":
Code: Alles auswählen
[{"station_id":"131415a","dt":1606132730,"temperature":11.1}]