ich habe das jetzt so gelöst:
var flux, hausverbrauch, bezug;
// Beschreibe diese Funktion …
async function query_influx(flux) {
var ergebnis;
sendTo('influxdb.0', 'query', flux, function (result) {
if (result.error) {
console.error(result.error);
} else {
//show result
//console.log('Rows: ' + JSON.stringify(result));
ergebnis = JSON.stringify(result);
}
});
await wait(1000);
return ergebnis;
}
on({ id: 'mqtt.0.solaranzeige.sh10rt.hausverbrauch' /* solaranzeige/sh10rt/hausverbrauch */, change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
hausverbrauch = await query_influx(['from(bucket: "solaranzeige2")',' |> range(start: today(), stop: now())','|> filter(fn: (r) => r["_measurement"] == "mqtt.0.solaranzeige.sh10rt.hausverbrauch")','|> filter(fn: (r) => r["_field"] == "value")','|> sum()',''].join(''));
hausverbrauch = parseFloat(getAttr((() => { try { return JSON.parse(hausverbrauch); } catch (e) { return {}; }})(), 'result.0.0._value'));
bezug = await query_influx(['from(bucket: "solaranzeige2")',' |> range(start: today(), stop: now())','|> filter(fn: (r) => r["_measurement"] == "mqtt.0.solaranzeige.sh10rt.bezug")','|> filter(fn: (r) => r["_field"] == "value")','|> sum()',''].join(''));
bezug = parseFloat(getAttr((() => { try { return JSON.parse(bezug); } catch (e) { return {}; }})(), 'result.0.0._value'));
setState('0_userdata.0.Solar.autarkiegrad_heute' /* autarkiegrad_heute */, ((1 - bezug / hausverbrauch) * 100), true);
});
Ich hoffe an Hand der Bilder ist klar was wo hin gehört.
Vielleicht hilft es ja jemandem.
Einen Herzlichen Dank an ALLE, die mir Hinweise zur Lösungsfindung gegeben haben.