NEWS
Bindings in einem HTML Widget [gelöst]
-
Hallo, ich bin ziemlich neu im IObroker und Vis unterwegs aber vieles habe ich schon ohne Hilfe hin bekommen.
Jetzt habe ich aber ein Problem was ich nicht gelöst bekomme.
Ich möchte mehrere Werte von Datenpunkten (Shellys) zusammen rechnen Plus bekomme aber immer eine null.
Ich habe etwas als debug zusammen gestellt und raffe die Ausgabe nicht.
{value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power;value2:shelly.0.SHPLG-S#5A6DB5#1.Relay0.Power;parseFloat(value1)+parseFloat(value2)}Debug:
erster Wert: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power; value1} <br/>
erster Wert: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power; typeof(value1)} <br/>
zweiter Wert: {value2:shelly.0.SHPLG-S#5A6DB5#1.Relay0.Power; value2} <br/>
zweiter Wert: {value2:shelly.0.SHPLG-S#5A6DB5#1.Relay0.Power; typeof(value2)} <br/>
erster Wert: Umwandlung: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power;parseFloat(value1)} <br/>
zweiter Wert: Umwandlung: {value2:shelly.0.SHPLG-S#5A6DB5#1.Relay0.Power;parseFloat(value2)} <br/>
Ausgabe1: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power; value2:shelly.0.SHPLG-S#5A6DB5#1.Relay0.Power;value1} <br/>
Ausgabe2: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power; value2:shelly.0.SHPLG-S#5A6DB5#1.Relay0.Power;value2} <br/>Ausgabe:
erster Wert: 10.34
erster Wert: string
zweiter Wert: 2
zweiter Wert: string
erster Wert: Umwandlung: 10.34
zweiter Wert: Umwandlung: 2
Ausgabe1: 10.34
Ausgabe2: 0Hat jemand eine Idee?
Danke Stephan -
evtl ist das hier das problem
https://github.com/ioBroker/ioBroker.vis/issues/423
dort wird beschrieben, das im 2ten dp kein # sein darf
probier das ganze mal mit einem test-dp ohne dem zeichen
-
war durch die vielen datenpunkte verwirrt und hatte hier nur einen vermeintlichen fehler aufgeschrieben. bitte überspringen
-
@hotshot14167 said in Bindings in einem HTML Widget:
Ich möchte mehrere Werte von Datenpunkten (Shellys) zusammen rechnen Plus
Ganz offen. Selbst wenn man das mit VIS hinbekommt, finde ich den Ansatz maximal unhandlich. Besonders, wenn man das systematisch, für alle möglichen Anzeigen, machen will. Es widerspricht auch dem objektorientierten Ansatz: "Jede Methode hat nur eine Aufgabe"!
Warum nicht einen eigenen Datenpunkt darstellen, der per JavaScript berechnet wird? -
@liv-in-sky Stimmt das ist es!
erster Wert: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power; value1} <br/>
erster Wert: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power; typeof(value1)} <br/>
zweiter Wert: {value2:0_userdata.0.Textstrings.Ein-shelly-test; value2} <br/>
zweiter Wert: {value2:0_userdata.0.Textstrings.Ein-shelly-test; typeof(value2)} <br/>
erster Wert: Umwandlung: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power;parseFloat(value1)} <br/>
zweiter Wert: Umwandlung: {value2:0_userdata.0.Textstrings.Ein-shelly-test;parseFloat(value2)} <br/>
Ausgabe1: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power; value2:0_userdata.0.Textstrings.Ein-shelly-test;value1} <br/>
Ausgabe2: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power; value2:0_userdata.0.Textstrings.Ein-shelly-test;value2} <br/>
Berechnung: {value1:shelly.0.SHPLG-S#C8C9A3890BCB#1.Relay0.Power; value2:0_userdata.0.Textstrings.Ein-shelly-test;parseFloat(value1)+parseFloat(value2)} <br/>erster Wert: 10.29
erster Wert: string
zweiter Wert: 12.3
zweiter Wert: string
erster Wert: Umwandlung: 10.29
zweiter Wert: Umwandlung: 12.3
Ausgabe1: 10.29
Ausgabe2: 12.3
Berechnung: 22.59Aber wie kann ich das lösen?
-
@gombersiob sagte in Bindings in einem HTML Widget:
Warum nicht einen eigenen Datenpunkt darstellen, der per JavaScript berechnet wird
mit anderen worten - du machst dir eine html tabelle deiner werte mit einem kleinen script und nutzt das html widget zur anzeige
wenn du das nicht machen willst, müßtest du dir aliase der dp anlegen, die diese zeichen nicht haben
-
@liv-in-sky Ja ok gibt es dafür ein Beispiel wie ich das machen könnte. Mit alias möchte ich nicht arbeite.
-
letztlich muss das z.b. so aussehen:
du kannst dir deine tabelle erstellen und diese tabell als variable erstellen - dann fügst du die datenpunkte in diese tabellen variable ein - also die bindings in dem beispiel werden ersetzt - am ende des scriptes schreibst du das ganze in einen extra-dp und den nimmst du im html widget als binding wert zur anzeige
hift dir das weiter
-
@gombersiob Ja gerne ich weiß aber nicht wie. Gibt es da ein Beispiel?
-
@liv-in-sky Ja ok und wo erstelle ich die Tabelle. Sicher nicht in Vis.
-
@hotshot14167 nee- in einem javascript oder blockly im scripte tab
aber evtl lkannst du das mal versuchen -
sorry - mein fehler - mit dieser tabelle geht das nicht - braucht auch bindings
-
was nutzt du blockly oder javascript
-
@liv-in-sky bisher noch gar nichts
-
das ist nicht viel
-
dann sollten wir wohl eher einfach anfangen - das wird aber jetzt nicht mehr zeitlich möglich sein
hast du noch kein blockly in anwendung ? oder evtl den script adapter noch nie genutzt ?
-
@liv-in-sky Nein habe ich nicht aber ich bin ja auch erst 2 Wochen dabei. Ich weiß ja jetzt den Weg und werde es schon rausfinden.
-
-
@liv-in-sky So ich habe es geschafft mit einem Java Script jedoch werden die Daten nur beim Neustart des Skriptes aktualisiert. Warum?
-
@gombersiob Ja habe ich hin bekommen:
Leider werden die Daten aber nur beim Neustart aktualisierte. Warum?