Hallo, ich stand vor der gleichen Herausvorderung!
Direkt aus dem H&T auslesen geht schon mal nicht, weil der nämlich meistens pennt.
Wenn er nicht pennt, dann kann er allerdings Webhooks / Actions auslösen.
Allerdings sind diese offensichtlich eingeschränkt, denn der Versuch Werte direkt an anderes shellies zu übergeben, scheitert an "Ungültige Aktion".
http://[shellyIP]/rpc/Script.Eval?id=1&code='setTemperature(${ev.tC})'
http://[shellyIP]/rpc/KVS.Set?key="eventTemperatureSalon"&value=${ev.tC}'
werden also gnadenlos abgelehnt. WARUM EIGENTLICH?
Next Stop: Cloud!
Also gut, dann also den Wert aus der Cloud auslesen. Grundsätzlich ist das hier dokumentiert:
https://shelly-api-docs.shelly.cloud/cloud-control-api/communication
Nur dummerweise falsch!
Denn anders als in der Seite beschrieben (Object temperature / humidity) funktioniert nur
let url = 'https://[myServer]/device/status?&id=[myDeviceID]&auth_key=[myAuthKey]';
Shelly.call('HTTP.GET',
{url: url},
function (result, error_code, error_msg, userdata) {
if (error_code != 0) {
log('Error while getting value from the cloud: ' + error_msg);
} else {
log(result.code);
let oResponseBody = JSON.parse(result.body);
log(oResponseBody.isok);
let oTemperature = oResponseBody.data.device_status['temperature:0'],
let oHumidity = oResponseBody.data.device_status['humidity:0'];
log('Temperature: ' + oTemperature.tC + ' Humidity: ' + oHumidity.rh);
};
}
);
Ist übrigens auch mit POST möglich.
let url = 'https://[myServer]/device/status';
let body = JSON.stringify({id: [myDeviceID], auth_key: [myAuthKey]});
Shelly.call('HTTP.POST',
{url: url, body: body},
function (response) {
let oResponseBody = JSON.parse(response.body);
log(oResponseBody.isok);
let oTemperature = oResponseBody.data.device_status['temperature:0'];
let oHumidity = oResponseBody.data.device_status['humidity:0'];
log('Temperature: ' + oTemperature.tC + ' Humidity: ' + oHumidity.rh);
}
);
Vielleicht hilfts ja! Auf das euer Smarthome allzeit gut temperiert ist!