NEWS
rechnen im html-Widget geht nicht mehr
-
eigentlich kommt bei bindings immer ein string an.
leider hast du nicht gezeigt, was es aktuell macht, aber damit müsste er beide strings verketten, so das beide zahlen hintereinander stehen.du müsstest mit parseInt() oder parseFloat() die Werte zunächst in Zahlen konvertieren.
-
@oliverio sagte in rechnen im html-Widget geht nicht mehr:
parseInt() oder parseFloat()
Er zeigt immer 0
parseInt und parseFloat hab ich alles schon probiert: klappt nicht.
-
dann bitte mal in einem html widget einen datenpunkt anhand folgendem schema eintragen und das ergebnis hier zeigen
{val1:0_userdata.0.test.test1;typeof val1} {val1:0_userdata.0.test.test1;val1}
-
@oliverio sagte in rechnen im html-Widget geht nicht mehr:
{val1:0_userdata.0.test.test1;typeof val1} {val1:0_userdata.0.test.test1;val1}
Dieses:
{v1:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Haus_Verbrauch_aufgelaufen;typeof v1} {v1:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Haus_Verbrauch_aufgelaufen;v1} {v2:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Leistung_alt_aufgelaufen;typeof v2} {v2:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Leistung_alt_aufgelaufen;v2}
liefert dies:
Nur rechnen geht nicht.
-
Und dies:
{v1:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Haus_Verbrauch_aufgelaufen;v2:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Leistung_alt_aufgelaufen;parseInt(v1)+parseInt(v2)}
liefert:
-
Jetzt kommst ganz dicke.
Habe mal das ganze probiert in userdata.
Da funktioniert es !!!Warum geht das nicht mehr mit Variablen/DP in javascript.0.
Könnt ihr dies mal nachstellen.
Ist das ein bewusster bug in javascript.0 ? -
So, unter javascript.0 geht es auch.
Aber nicht mit meinen o.g. DP.
Offensichtlich stören die Umlaute !!!Kann das jemand bestätigen.
Hatte eigentlich mit den Umlauten bisher keine Probleme.
Nur halt jetzt. -
also normal funktioniert es
mit umlaut funktioniert es nicht
gibts auch schon ein issue
https://github.com/ioBroker/ioBroker.vis/issues/423 -
@oliverio sagte in rechnen im html-Widget geht nicht mehr:
gibts auch schon ein issue
Und dieses ist schon fast 2 Jahre alt.
Folglich wird sich da nix mehr tun.
Schade -
@bahnuhr vis1 wird nicht mehr gepflegt - soweit ich weiß
-
ich glaube, ich hatte auch mal das problem, das die dp nur unter userdata funktionierten - irgendwas war da - ist zu lange her
-
Hast du auch schon vis2 drauf ?
Läuft das jetzt zufriedenstellend ? -
@bahnuhr nee - da brauch ich wohl urlaub - um mich da einzuarbeiten - auch die inventwo widgets funktionieren noch nicht richtig - die brauch ich
was ich im mometn in der vis1 brauche läuft - große änderungen mach ich da im moment nichtvielleicht nächstes jahr
-
@liv-in-sky
sehe ich ähnlich.
Hatte mal am Anfang von vis2 diese drauf.
War aber schnell wieder deinstalliert (es klappte zu wenig).Und seitdem bleib ich erst einmal bei vis 1
-
genau so bei mir - zusätzlich hatte die vis2 dann den fehler meine daten unter iobroker folder auf über 1 GB zu erhöhen - da war wohl ein fehler - also wieder deinstalliert
-
@liv-in-sky sagte in rechnen im html-Widget geht nicht mehr:
ich glaube, ich hatte auch mal das problem, das die dp nur unter userdata funktionierten - irgendwas war da - ist zu lange her
da war was!
war das mit dem maps-widget mit eigenen Koordinaten?
das ging aber nur in js, nicht in userdata, glaube ich...
...zu lange her -
@homoran ja genau - du hast recht - es war mit dem maps widget - respect - brain-leistung
-
Ich habe einen fix für das umlaut/raute-Zeichen Problem für vis
welches aber man zuvor erst mal noch testen sollte, da man für den test manuell in den vis dateien eine zeile ändern mussverwendet habe ich vis version 1.4.16
die folgenden Anweisungen gelten nur für diese versiongeändert werden muss die Datei:
/op/iobroker/node_modules/iobroker.vis/www/js/visUtils.jsin Zeile 107 sollte genau so aussehen:
if (parts[u].trim().match(/^[\w_]+:\s?[-.\w_]+$/)) {//parts[u].includes(':') && !parts[u].includes('::')) {
diese muss gegen die folgende Zeile ersetzt werden
if (parts[u].trim().match(/^[\d\w_]+:\s?[._\-\/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+$/u)) {//parts[u].indexOf(':') !== -1 && parts[u].indexOf('::') === -1) {
Dann ist vis auch in der Lage bindings mit Datenpunkten zu erkennen, welche auch die Zeichen #öäüÖÄÜ enthalten. Die ergänzten Zeichen sind der einzige Unterschied zwischen den beiden Zeilen. Dadurch wird das regex erweitert, so das er auch diese Zeichen noch akzeptiert, die er vorher nicht akzeptiert hat.
Da vis nicht immer so optimal programmiert wurde und grundlegendere reengineerings auch nicht mehr gemacht werden, sollte man soche Änderungen ausführlich auf Seiteneffekte untersuchen, die so nicht absehbar sind.
Daher, wer eine iobroker Testinstanz hat, kann das mal mit einer umfangreicheren Visualisierung mal testen.
Wer die bisherige Zeile nur mit // am Anfang auskommentiert und die neue Zeile einfach nur darunter kopiert, kann auch den ursprünglichen Zustand wieder herstellen, ohne den vis adapter neu zu installieren.Wenn die Änderung vorgenommen wurde,
muss man zwingend noch den folgenden Befehl auf der Konsole ausführen:iobroker upload all
Ich bin gespannt auf die Ergebnisse.
Wenn das erfolgreich verläuft, würde ich auch ein PR einreichen.
Leider ist, wegen vis-2 der vis-Adapter nicht mehr in dem Zustand, das man da einen PR einreichen kann. Aber das klären wir dannach.Nachtrag: Das Regex wurde nochmal angepasst um alle gültigen Zeichen für einen Datenpunkt mit einzuschließen
-
@oliverio
Hallo,du schreibst die Zeile 107 sieht so aus:
if (parts[u].trim().match(/^[\w_]+:\s?[-.\w_]+$/)) {//parts[u].includes(':') && !parts[u].includes('::')) {
Habe auch 1.4.16.
Bei mir sieht die 107 aber so aus:if (parts[u].trim().match(/^[\d\w_]+:\s?[-.\d\w_]+$/)) {//parts[u].indexOf(':') !== -1 && parts[u].indexOf('::') === -1) {
Kann ich trotzdem deine Zeile nehmen ?
-
@oliverio
so ausprobiert.
Habe den neue Zeile eingefügt und upload gemacht.
Dann im html Widget:{v1:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Haus_Verbrauch_aufgelaufen;parseInt(v1)}<br> {v2:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Meter_bezogen_aufgelaufen;parseInt(v2)}<br> {v1:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Haus_Verbrauch_aufgelaufen;v2:javascript.0.Geräte.Photovoltaik.Auswertung.Monat.Meter_bezogen_aufgelaufen;parseInt(v1)+parseInt(v2)}
Als Ergebnis kommt wieder 0 bei der Berechnung:
Fazit:
Bei hat es noch nicht geklappt !