Hi @paul53
danke Dir für das Feedback. Dann kann ich das nicht so bauen wie ich es mir vorgestellt habe.
Das Substr kürzt mir den eigentlichen Response des curl ein, da hier auch noch der Header mit zurückgegeben wird. Daher schneide ich den Teil bis der ersten { - also dem Begin des JSONs - ab.
Ich habe es in der Zwischenzeit als Workarround so umgebaut, das ich mit einem 60s Trigger die Kamera auslese und dann mit dem Callback in einen State abspeichere. Wenn ich die Werte brauche, kann ich diese als JSON aus dem State lesen und den gewünschten Parameter extrahieren...
/* =============================================================================
> Ließt alle Parameter einer Kamera aus und gibt sie als JSON zurück
==============================================================================*/
on({id: 'VIS.82.Ticker_60s', change: "ne"}, function (f) {
console.log("Read UniFi Video Cam's");
// Kamera Flur auslesen
var fCameraID = myVideoCamFlur;
var fCommand = "curl -i --url 'https://" + myVideoServer + "/api/2.0/camera/" + fCameraID + "/?apiKey=" + myVideoAPIKey + "' --header 'Content-Type: application/json' --header 'Accept: application/json' --insecure -X GET";
exec(fCommand, function(err, response, errmsg) {
if(err) {
console.log("Fehler in der Abfrage: " + errmsg);
} else {
setState('VIS.82.UniFi-Video.Flur.ParameterSet', response.substr(response.search("{"),response.length-response.search("{")));
}
});
// Kamera Garten auslesen
fCameraID = myVideoCamGarten;
fCommand = "curl -i --url 'https://" + myVideoServer + "/api/2.0/camera/" + fCameraID + "/?apiKey=" + myVideoAPIKey + "' --header 'Content-Type: application/json' --header 'Accept: application/json' --insecure -X GET";
exec(fCommand, function(err, response, errmsg) {
if(err) {
console.log("Fehler in der Abfrage: " + errmsg);
} else {
setState('VIS.82.UniFi-Video.Garten.ParameterSet', response.substr(response.search("{"),response.length-response.search("{")));
}
});
});
Auslesen kann ich dann zum Beispiel ob die Kamera gerade mit Bewegungserkennung aufnimmt mit:
JSON.parse(getState('VIS.82.UniFi-Video.Flur.ParameterSet').val).data[0].recordingSettings.motionRecordEnabled;