NEWS
Rechnen in der Visualisierung
-
Hallo und frohes neues Jahr Zusammen,
ich habe ein kleines Problem, bei welchem ich mal Eure Hilfe bräuchte.
In meiner Visualisierung bekomme ich über einen FRITZ!DECT die Leistung meiner Mini-PV-Anlage angezeigt, über einen IR-Lesekopf bekomme ich den aktuellen Strombezug (oder im ungünstigsten Fall auch die Einspeisung, dann als Negativ-Wert) angezeigt.
Ich möchte nun aus den Werten der PV-Anlage (Wert1) und dem Strombezugswert (Wert2) mir in der Visualisierung einen errechneten Wert (Wert3) anzeigen lassen, welcher mir den momentanen Deckungsanteil der PV-Anlage am Strombedarf anzeiget (Strombedarf = PV-Ertrag + Strombezug).
Rechnerisch sähe es also wie folgt aus:
Anzeige in % = Wert1 / (Wert1+Wert2) *100
Aber wie kann ich in der Visualisierung Berechnungen durchführen? In einem html-Widget kann ich die Werte übernehmen - mir ist auch bekannt, dass es sich in dem Moment der Übernahme erst einmal um einen Text-String handelt und nicht um einen numerischen Wert. Versuche ich das mit parseInt in eine Zahl umzuwandeln bekomme ich nur noch ein "undefined" angezeigt.... und Berechnungen bekomme ich irgendwie überhaupt nicht hin.
Danke vielmals für Eure Hilfe.
Gruß
Markus -
Hallo und frohes neues Jahr Zusammen,
ich habe ein kleines Problem, bei welchem ich mal Eure Hilfe bräuchte.
In meiner Visualisierung bekomme ich über einen FRITZ!DECT die Leistung meiner Mini-PV-Anlage angezeigt, über einen IR-Lesekopf bekomme ich den aktuellen Strombezug (oder im ungünstigsten Fall auch die Einspeisung, dann als Negativ-Wert) angezeigt.
Ich möchte nun aus den Werten der PV-Anlage (Wert1) und dem Strombezugswert (Wert2) mir in der Visualisierung einen errechneten Wert (Wert3) anzeigen lassen, welcher mir den momentanen Deckungsanteil der PV-Anlage am Strombedarf anzeiget (Strombedarf = PV-Ertrag + Strombezug).
Rechnerisch sähe es also wie folgt aus:
Anzeige in % = Wert1 / (Wert1+Wert2) *100
Aber wie kann ich in der Visualisierung Berechnungen durchführen? In einem html-Widget kann ich die Werte übernehmen - mir ist auch bekannt, dass es sich in dem Moment der Übernahme erst einmal um einen Text-String handelt und nicht um einen numerischen Wert. Versuche ich das mit parseInt in eine Zahl umzuwandeln bekomme ich nur noch ein "undefined" angezeigt.... und Berechnungen bekomme ich irgendwie überhaupt nicht hin.
Danke vielmals für Eure Hilfe.
Gruß
Markus@mathopa1973 Du hast also 2 Datenpunkte mit den beiden Werten.
Ich habe dann bisher immer z.B. ein Blockly erstellt welches auf Änderungen einer der beiden Datenpunkte reagiert und das Ergebnis in einen 3. Datenpunkt geschrieben:

Und im VIS dann den Zieldatenpunkt verwenden -
@mathopa1973 Du hast also 2 Datenpunkte mit den beiden Werten.
Ich habe dann bisher immer z.B. ein Blockly erstellt welches auf Änderungen einer der beiden Datenpunkte reagiert und das Ergebnis in einen 3. Datenpunkt geschrieben:

Und im VIS dann den Zieldatenpunkt verwenden@bananajoe Danke vielmals für den Tipp, mit Blockly bin ich in Gänze erst einmal in Berührung gekommen und habe daher da noch nicht die große Erfahrung.
Kurze Frage noch: Der Datenpunkt der im ersten Block (erzeuge Datenpunkt) steht, muss der vorher auch erstellt sein oder wird der dann automatisch erstellt?
-
@mathopa1973 Du hast also 2 Datenpunkte mit den beiden Werten.
Ich habe dann bisher immer z.B. ein Blockly erstellt welches auf Änderungen einer der beiden Datenpunkte reagiert und das Ergebnis in einen 3. Datenpunkt geschrieben:

Und im VIS dann den Zieldatenpunkt verwenden@bananajoe in welcher Rubrik finde ich den Baustein {"type","number","read":"true";"write":"true"} ?
-
@bananajoe in welcher Rubrik finde ich den Baustein {"type","number","read":"true";"write":"true"} ?
@mathopa1973 Also der Datenpunkt in welchen du schreiben willst, der muss vorher schon da sein. Den kannst du von Hand unterhalb von
0_userdate.0anlegen. Oder wie in meinem Beispiel lässt du den durch dein Skript erzeugen - so mache ich das immer damit Skripte von immer immer funktionieren weil die alle benötigten Datenpunkte für das Schreiben einfach selbst erzeugen.
Der Baustein mit dem Typ ist ein normaler Text-Baustein in dem{"type":"number","read":"true","write":"true"}steht. number für Zahl, string wäre Text usw. - was du beim "von hand" anlegen halt auch auswählen kannst.
Der wird nur einmal angelegt, wenn der schon da ist passiert einfach nichts. Wenn du den Datenpunkt löscht wird der nach einem Neustart des Skripts neu erzeugt.Bei falls Objekt habe ich auch Textbausteine gesetzt und den Pfad aus dem Objektexplorer reinkopiert. Wenn du den Textbaustein weglässt ist da ein blaues Feld welches du anklicken kannst - dann öffnet sich der Explorer und du kannst den Datenpunkt auswählen.
Wenn du das erst einmal drin hast wird es ganz leicht :-)
Wenn du die + Blöcke hast - die einmal mit der rechten Maustaste anklicken, da gibt es einen Punkt externe Eingänge, damit kannst du zwischen einer horizontalen und vertikalen Ansicht umschalten (kenne ich auch erst seit gestern)
-
@mathopa1973 Also der Datenpunkt in welchen du schreiben willst, der muss vorher schon da sein. Den kannst du von Hand unterhalb von
0_userdate.0anlegen. Oder wie in meinem Beispiel lässt du den durch dein Skript erzeugen - so mache ich das immer damit Skripte von immer immer funktionieren weil die alle benötigten Datenpunkte für das Schreiben einfach selbst erzeugen.
Der Baustein mit dem Typ ist ein normaler Text-Baustein in dem{"type":"number","read":"true","write":"true"}steht. number für Zahl, string wäre Text usw. - was du beim "von hand" anlegen halt auch auswählen kannst.
Der wird nur einmal angelegt, wenn der schon da ist passiert einfach nichts. Wenn du den Datenpunkt löscht wird der nach einem Neustart des Skripts neu erzeugt.Bei falls Objekt habe ich auch Textbausteine gesetzt und den Pfad aus dem Objektexplorer reinkopiert. Wenn du den Textbaustein weglässt ist da ein blaues Feld welches du anklicken kannst - dann öffnet sich der Explorer und du kannst den Datenpunkt auswählen.
Wenn du das erst einmal drin hast wird es ganz leicht :-)
Wenn du die + Blöcke hast - die einmal mit der rechten Maustaste anklicken, da gibt es einen Punkt externe Eingänge, damit kannst du zwischen einer horizontalen und vertikalen Ansicht umschalten (kenne ich auch erst seit gestern)
@bananajoe Danke, so wird's auch überschaubarer.
Eine hoffentlich letzte Frage: Ich beziehe mich ja einmal auf den Wert der PV-Anlage, der kann nur positiv oder 0 sein. Der aktuelle Strombezug kann jedoch, wenn der aktuelle Strombedarf kleiner als die Stromproduktion ist, auch negativ sein. Kann ich in Blockly da irgendwie noch eine Wenn-Dann-Funktion zwischen setzen? Wenn positiv dann rechne so und wenn negativ dann rechne so?
-
Hallo und frohes neues Jahr Zusammen,
ich habe ein kleines Problem, bei welchem ich mal Eure Hilfe bräuchte.
In meiner Visualisierung bekomme ich über einen FRITZ!DECT die Leistung meiner Mini-PV-Anlage angezeigt, über einen IR-Lesekopf bekomme ich den aktuellen Strombezug (oder im ungünstigsten Fall auch die Einspeisung, dann als Negativ-Wert) angezeigt.
Ich möchte nun aus den Werten der PV-Anlage (Wert1) und dem Strombezugswert (Wert2) mir in der Visualisierung einen errechneten Wert (Wert3) anzeigen lassen, welcher mir den momentanen Deckungsanteil der PV-Anlage am Strombedarf anzeiget (Strombedarf = PV-Ertrag + Strombezug).
Rechnerisch sähe es also wie folgt aus:
Anzeige in % = Wert1 / (Wert1+Wert2) *100
Aber wie kann ich in der Visualisierung Berechnungen durchführen? In einem html-Widget kann ich die Werte übernehmen - mir ist auch bekannt, dass es sich in dem Moment der Übernahme erst einmal um einen Text-String handelt und nicht um einen numerischen Wert. Versuche ich das mit parseInt in eine Zahl umzuwandeln bekomme ich nur noch ein "undefined" angezeigt.... und Berechnungen bekomme ich irgendwie überhaupt nicht hin.
Danke vielmals für Eure Hilfe.
Gruß
Markus@mathopa1973 sagte in Rechnen in der Visualisierung:
Wert1 / (Wert1+Wert2) *100
rechnen in vis direkt geht über binding.
du trägst im html widget im feld html den folgenden text ein:{dp1:0_userdata.0.wert1;dp2:0_userdata.0.wert2;dp1 / (dp1+dp2) *100}die Namen der Datenpunkte für dp1 und dp2 entsprechend anpassen.
du kannst alle standard javascript befehle verwenden. das ergebnis des ausdrucks wird dann ausgegeben.
Die Dokumentation zu binding ist hier zu finden:
https://github.com/ioBroker/ioBroker.vis#bindings-of-objects -
@bananajoe Danke, so wird's auch überschaubarer.
Eine hoffentlich letzte Frage: Ich beziehe mich ja einmal auf den Wert der PV-Anlage, der kann nur positiv oder 0 sein. Der aktuelle Strombezug kann jedoch, wenn der aktuelle Strombedarf kleiner als die Stromproduktion ist, auch negativ sein. Kann ich in Blockly da irgendwie noch eine Wenn-Dann-Funktion zwischen setzen? Wenn positiv dann rechne so und wenn negativ dann rechne so?
@mathopa1973 Jepp kannst du. Unter Logik den Falls nehmen
-
@mathopa1973 Jepp kannst du. Unter Logik den Falls nehmen
@bananajoe Danke vielmals - alle Fragen geklärt - läuft.
Habe festgestellt, dass ich eine Wenn-Dann (oder Falls)-Bedingung nicht benötige... stand da gerade mathematisch ein bisschen auf dem Schlauch. Denn...
Deckung = PV/PV+Strombezug bzw. im Falle der Einspeischung Deckung = PV/PV+(-Einspeisung)
Beispiel: 600 W Stromproduktion durch PV, der Stromzähler zeigt -200 W (Einspeisung), so ergibt sich folgende Rechnung:
Deckung in % = 600W/(600W+(-200W)) * 100 = 600W/400W * 100 = 150%
Ist bei gleicher PV-Produktion hingegen immer noch ein Strombezug von 200W dann sieht die Rechnung wie folgt aus:
Deckung in % = 600W/(600W+200W) * 100 = 600W/800W *100 = 75%
Alles also genau so wie ich es haben will... und meine Frau sieht auf Anhieb ob Sie mal eben die Spül- oder Waschmaschine noch anschmeißen soll um eine Überproduktion zu vermeiden ;)
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden