NEWS
[gelöst] Zugriff auf json-Wert eines Objektes
-
Hallo, ich beschäftige mich ganz neu mit ioBroker,
da ich meine Ecoflow Balkonsolaranlage mit dem Energieverbrauch meiner Wohnung synchronisieren möchte.Dafür gibt es ja sogar ein fertiges Script. Da ich aber noch ganz am Anfang stehe, überfordert mich das noch.
Auch die verschiedenen Tutorials sind so gefüllt mit Infos, dass ich die Übersicht verliere.Daher habe ich am Wochenende versucht, nur die grundlegenen 2 Werte, die ich benötige, zu bearbeiten,
nämlich die Energieabgabe aus dem Ecoflow ("permanentWatts") und den Energieverbrauch aus einem Shelly ("Current" und "Voltage")Es ist mir gelungen diesen EcoFlow-Adapter zu installieren:
iobroker.ecoflow-mqttDie Stromabgabe kann ich einfach mit JS einstellen, hier im Beispiel wird der Wert auf 50 Watt gestellt:
setState("ecoflow-mqtt.0.HW51xxxxxx.inverter_heartbeat.permanentWatts", 50);
Leider konnte ich meine Shellys nicht mit dem Shelly-Adapter verbinden.
"Verbunden mit Gerät oder Dienst" bleibt immer Rot, obwohl Verbunden mit Host und Lebenszeichen grün anzeigen.Über MQTT konnte ich aber eine Verbindung herstellen. Es wird ein ausführlicher Baum an Variablen angezeigt, genau wie beim Abrufen der Daten über einen Http Request http://192.168.xxx.xxx/rpc/Shelly.GetStatus.
Wie kann ich jetzt aber "Current" und "Voltage" aus switch.0 in einem Java Script abrufen?
Unten habe ich einen Screenshot der Objekte angefügt.Vielen Dank für eure Hilfe
Ralf
-
@ralf-8 sagte: "Current" und "Voltage" aus switch.0 in einem Java Script abrufen?
Ist nicht "apower" besser geeignet? Andernfalls müsste noch der Power Factor (pf) berücksichtigt werden.
const idJSON = 'mqtt.0...'; const idPower = '0_userdata.0...'; on(idJSON, function(dp) { const obj = JSON.parse(dp.state.val); setState(idPower, obj.apower, true); });
-
@paul53 sagte in Zugriff auf json-Wert eines Objektes:
obj.apower
Vielen Dank. Den Wert apower habe ich übersehen, ich dachte, ich müsste Current und Voltage selbst multiplizieren.
Mir war auch überhaupt nicht klar war, wie ich die Werte im JSON abfragen kann.
Der erste Test hat so funktioniert, das ist mal ein guter Anfang:
const idJSON = 'mqtt.0.shellyplus2pm-MACADRESSE.status.switch:0'; on(idJSON, function(dp) { const obj = JSON.parse(dp.state.val); console.log(obj.apower) });
Jetzt muss ich nur noch verstehen, wie oft eine Änderung zurückgemeldet wird,
da es sicher nicht gut ist, zu schnell immer wieder die Einstellung des Ecoflow-Wechselrichters zu ändern.
Vielleicht könnte ich eine Mindest-Zeit und für apower eine Mindest-Differenz vorgeben bevor die Einstellung geändert wird?