NEWS
Datenpunkte sollen bei Ereignis geändert werden
-
Hallo Zusammen,
ich habe einen Solaredge Wechselrichter. Ich habe für meine VIS diesbezüglich 3 Datenpunkte angelegt. Diese sollen bei Änderung der Werte im Solardedge Verzeichnis aktualisiert werden. Leider ändern sich zwar die Solaredge Werte, aber meine Datenpunkte werden nicht geschrieben.
Ich finde den Fehler nicht.
on({ id: [].concat(['solaredge.1.2881352.currentPower']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; setState('0_userdata.0.Solaredge.Aktuelle_Produktion' /* Aktuelle Produktion */, (getObject('solaredge.0.2881352.currentPower') / 1000), true); }); on({ id: [].concat(['solaredge.1.2881352.lastDayData']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; setState('0_userdata.0.Solaredge.Tagesproduktion' /* Tagesproduktion */, (getObject('solaredge.0.2881352.lastDayData') / 1000), true); }); on({ id: [].concat(['solaredge.1.2881352.lastMonthData']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; setState('0_userdata.0.Solaredge.Produktion_Monat' /* Produktion Monat */, (getObject('solaredge.0.2881352.lastMonthData') / 1000), true); });
-
@jones88
Sowas geht viel einfacher mit einem Alias.
Du legst Dir im Baum 3 Aliase an, lässt die auf die entsprechenden DP gucken und trägst als Konvertierungsfunktion (lesend) ein:val / 1000
Nur der Vollständigkeit halber: Du musst den Wert lesen -- nicht das Objekt!
on({ id: 'solaredge.1.2881352.lastMonthData', change: 'ne' }, async (obj) => { setState('0_userdata.0.Solaredge.Produktion_Monat', getState('solaredge.0.2881352.lastMonthData').val / 1000), true); });
-
Okay das mit dem Alias Manager muss ich mir anschauen. Habe ich bislang nicht gemacht.
Aber nochmal zu meinem Beispiel, wie müsste ich denn meine Zeile ändern um den Wert zu lesen und nicht das Objekt? Könntest du mir das kurz erklären oder meinen Code beispielhaft editieren?
-
@jones88 sagte in Datenpunkte sollen bei Ereignis geändert werden:
das mit dem Alias Manager
Nix "Alias Manager". Direkt im Baum
@jones88 sagte in Datenpunkte sollen bei Ereignis geändert werden:
Aber nochmal zu meinem Beispiel, wie müsste ich denn meine Zeile ändern um den Wert zu lesen und nicht das Objekt? Könntest du mir das kurz erklären oder meinen Code beispielhaft editieren?
Habe ich doch bereits - siehe mein Beispiel.
-
Sorry, bin unterwegs. Jetzt habe ich deine Änderung gesehen. Alles klar, vielen Dank.
Werde das heute Abend umsetzen.Das Thema mit den Alias muss ich mir ebenso heute Abend anschauen. Verstehe aktuell nicht wie ich einen Datenpunkt auf einen anderen schauen lassen kann. Du meinst per Java-Script oder wie?
-
@jones88 sagte in Datenpunkte sollen bei Ereignis geändert werden:
Verstehe aktuell nicht wie ich einen Datenpunkt auf einen anderen schauen lassen kann. Du meinst per Java-Script oder wie?
Nein. Kein Script.
Du hast ja benutzerdefinierte DP in0_userdata.0
angelegt, in die Du per Script Werte aus anderen DP schreiben willst.
Das brauchst Du nicht.
Statt der eigenen DP in0_userdata.0
legst Du welche inalias.0
an und trägst bei denen die Konvertierungsfunktion ein. Die sind also quasi der Ersatz für Deine per Script aktualisierten DP. In der Vis nimmst Du dann die Alias-DP.