@conector777 Falls Du noch nicht weiter bist, hätte ich noch ein paar Tipps. Ich war jetzt erfolgreich beim Zugriff auf die Influxdb in der Enpal Box.
Als erstes habe ich den Influxdb Adapter installiert und für den Zugriff auf Enpal konfiguriert. Alle notwendigen Parameter findet man auf der Webseite Seiner Enpal Box.
Als nächstes habe ich ein Javascript mit Blockly gebastelt, um gezielt einzelne Werte zu holen und diese als Iobroker Objekt abzulegen(userdata.0). Dieses Script läuft z.B. alle 3 Minuten und schreibt immer den aktuellen Wert ins Objekt.
var result, test1, test2;
schedule("*/3 * * * *", async () => {
result = 'Anfang';
sendTo('influxdb.0', 'query', 'from(bucket: "solar") |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Energy.Battery.Charge.Level")', async (result) => {
test1 = (await jsonataExpression(result,'*[0]._value '));
});
setStateDelayed('0_userdata.0.Enpal.BatteryLevel', Math.round(test1 * 100) / 100, true, parseInt(((0) || '').toString(), 10), false);
result = !''.length;
sendTo('influxdb.0', 'query', 'from(bucket: "solar") |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Power.Consumption.Total")', async (result) => {
test2 = (await jsonataExpression(result,'*[0]._value '));
});
console.info("influxdb.0: " + "");
setStateDelayed('0_userdata.0.Enpal.PowerConsumptionTotal', test2, true, parseInt(((0) || '').toString(), 10), false);
});
Um jetzt noch eine anständige Historie zu erhalten, habe ich ein zweites Script gemacht, welches einen Trigger auf Wertänderung des Objekts setzt und bei Änderung das Ganze in eine beliebige Historien Anwendung übernimmt. In meinem Fall eine CCU.
on({ id: [].concat(['0_userdata.0.Enpal.BatteryLevel']), change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
setStateDelayed('hm-rega.0.13211', getState('0_userdata.0.Enpal.BatteryLevel').val, false, parseInt(((0) || '').toString(), 10), false);
});
Happy Coding.