NEWS
[bug] widget jqui-input: Variable mit Typ "number" ?
-
Wurde als issue 748 in GitHub geöffnet:
https://github.com/ioBroker/ioBroker.vis/issues/748
Hallo zusammen,
ich habe eigentlich eine einfache Aufgabe: Ich will eine IOB-Variable mit einer max. 3 stelligen Zahl füllen (0-360).
Aus verschiedenen Gründen muß die IOB-Variable vom Typ number und NICHT vom Typ string sein.
Ich nehme dafür das Widget "jqui-input" her. das funktioniert recht gut, aber im log steht jedesmal folgende Fehlermeldung:
web.0 2023-07-21 13:34:49.938 info State value to set for "mqtt.0.rot_tarDsL" has to be type "number" but received type "string"
Das Ausschalten von "Als String" in der Wdget Konfiguration bringt auch nix.
Hat irgendjemand eine Idee, wie ich die Warning wegbringe?
Gruß,
WillyIoBrok
-
Ich vermute der DP ist anders angelegt.
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
has to be type "number" but received type "string"
- ändere den DP oder schreibe als string
Wer hat denn den DP angelegt ?
Ein mqtt client oder du selber ? -
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
das Widget "jqui-input" her.
zeigen!
was trägst du ein?wie?
ich trage Zahlen per vis ein und die kommen auch als Zahlen an.
-
@homoran sagte in widget jqui-input: Variable mit Typ "number" ?:
ich trage Zahlen per vis ein und die kommen auch als Zahlen an.
Ich vermute das macht er auch.
Aber der DP ist wohl als string konfiguriert. Deshalb ja auch die Info.Und dies soll er uns halt mal zeigen.
-
@bahnuhr sagte in widget jqui-input: Variable mit Typ "number" ?:
DP ist wohl als string konfiguriert.
nein!
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
has to be type "number" but received type "string"
-
OK. danke für die Kommentare. Der DP ist von mir manuell konfiguriert.
Geschrieben wird in diesen DP nur manuell per vis (kein mqtt-client!) :
-
einerseits von mehreren Widgets "jqui - Button State" und zwar mit "number"-typ Zahlen. Da gibt's keine warning, alles passt zusammen.
-
andererseits von dem Widget "jqui-input". dieses widget liefert die Zahlenwerte wohl immer mit Zahlen vom Typ "string" ab, obwohl ich "Als String" ausgeschaltet/abgewählt habe (das ist m.M. nach ein Problem in dem Widget).
Das gibt die Warning, da der DP ja als "number" definiert ist.
Wenn ich den DP als string umkonfigurieren würde, dann ist das auch keine Lösung, denn dann gibt's warnings beim Beschreiben mit den "jqui - Button State" widgets. ( die sich noch übler lesen ... so von wegen "jetzt funktionierts zwar, aber in Zukunft gibt's möglicherweise Ärger").
Ich hänge auch nicht unbedingt an dem widget "jqui - input". Mir würde auch eine andere Lösung helfen, mit der ich über einen Knopf eine 3 stellige Zahl von 0 ... 360 eingeben könnte.
Weiterverarbeitet werden die Daten per Javascript (zugegeben, ich kann kein javascript!).
//============================================================================= // DIRSPLP_2_DIR.js 20.07.2023 // Javascript to handle SP/LP direction setting //----------------------------------------------------------------------------- /** * @param {string | number | boolean | Record<string, any>} tarDir */ function update_tarDir(tarDir) { var tarDirl = 0; tarDirl = tarDir; // log (tarDirl); if (getState("mqtt.0.rot_LP").val) { // log ("LP"); tarDirl = tarDirl + 180; // log (tarDirl); tarDirl = tarDirl % 360; } else { // log ("SP"); } // log (tarDirl); setState("mqtt.0.rot_tarDir", tarDirl ); } //----------------------------------------------------------------------------- /** * @param {number} curDir */ function update_curDirL(curDir) { setState("mqtt.0.rot_curDirL", ((curDir+180)%360) ); } //============================================================================= // Start of the Script: // Trigger on change of the target direction SP/LP on("mqtt.0.rot_tarDsL", function(dp) { update_tarDir(parseInt(getState("mqtt.0.rot_tarDsL").val)); }); // Trigger on change of the target direction SP/LP on("mqtt.0.rot_curDir", function(dp) { update_curDirL(getState("mqtt.0.rot_curDir").val); });
Das wesentliche ist die Formel "y = (x+180)%360", die natürlich auf einen string angewendet total falsche Ergebnisse liefert, aber beim typ number einwandfrei funktioniert. Das konnte ich mit "parseInt( )" beheben, so daß nur die o.g. warning als problem übrig bleibt.
Hoffe, ich konnte die offenen Fragen klären.
WillyIobrok
-
-
Zusatzinfo - so schauts in der vis-Oberfläche aus:
der Knopf mit der "285" ist die Zahleneingabe mit dem jqui-input widget.
die leicht durchscheinenden hellgrauen Rechtecke über der Landkarte sind die jqui-Button State widgets.Willyiobrok
-
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
Geschrieben wird in diesen DP nur manuell per vis (kein mqtt-client!) :
einerseits von mehreren Widgets "jqui - Button State"
und wieso glaubst du dass es am INPUT Widget liegt?
-
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
Wenn ich den DP als string umkonfigurieren würde,
natürlich!
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
dann gibt's warnings beim Beschreiben mit den "jqui - Button State" widgets.
aber eine andere, oder?
was liefert denn der state? ist der nicht bool? -
und wieso glaubst du dass es am INPUT Widget liegt?
weil diese warning in dem Moment in's log(Protokoll) geschrieben wird, in dem ich die Zahleneingabe mit diesem widget abgeschlossen habe.
-
@willyiobrok dann stimmt was anderes nicht.
ich schreibe Zahlen über dieses Widget in einen DP vom Typ number und da kommen auch Zahlen an.Deswegen hatte ich gefragt, was und wie du es da eingibst.
-
@homoran said in widget jqui-input: Variable mit Typ "number" ?:
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
Wenn ich den DP als string umkonfigurieren würde,
natürlich!
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
dann gibt's warnings beim Beschreiben mit den "jqui - Button State" widgets.
aber eine andere, oder?
ja, ... da sind die Ausdrücke "string" und "number" umgedreht ;-):
admin.0 2023-07-21 13:04:48.264 warn This object will not be created in future versions. Please report this to the developer. admin.0 2023-07-21 13:04:48.258 warn Object mqtt.0.rot_tarDsL is invalid: Default value has to be type "string" but received type "number"
was liefert denn der state? ist der nicht bool?
In diesem Fall habe ich die Zahl 50 reinkonfiguriert - das wird geliefert vom jqui button state!
-
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
In diesem Fall habe ich die Zahl 50 reinkonfiguriert - das wird geliefert vom jqui button state!
was ist denn das?
bitte keine Ausschnitte ohne Zusammenhang?welches Widget meinst du mit state?
-
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
, ... da sind die Ausdrücke "string" und "number" umgedreht ;-):
nein!!!
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
Object mqtt.0.rot_tarDsL is invalid: Default value has to be type "string"
-
@homoran said in widget jqui-input: Variable mit Typ "number" ?:
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
In diesem Fall habe ich die Zahl 50 reinkonfiguriert - das wird geliefert vom jqui button state!
was ist denn das?
bitte keine Ausschnitte ohne Zusammenhang?welches Widget meinst du mit state?
OK, dann gibt's jetzt den ganzen Bildschirm auf Deine Frage, "was liefert denn der state? ist der nicht bool?"
Jeder dieser vielen Knöpfe liefert mir eine Zahl ... z.B. der markierte den Wert"50"
Anmerkung:
Das widget heisst halt "jqui-Button State" das kommt nicht von mir.
aber geliefert wird in .val der reinkonfigurierte Wert. -
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
dann gibt's jetzt den ganzen Bildschirm
gut !
man kann aber auch das Fenster schmaler machen.muss mir mal das Widget nöher ansehen. Das Widget macht ja aber keinen "Ärger", oder?
hast du das Input widget ohne Script o.ä. direkt mit dem angemeckerten DP verknüpft?
oder wird ein anderer DP als der verknüpfte angemeckert?verknüpf das Widget mal mit einrm anderen DP vom Typ Number.
Gibt's dann immer noch Mecker? -
@homoran sagte in widget jqui-input: Variable mit Typ "number" ?:
was trägst du ein?
wie?hast du diese Frage eigentlich je beantwortet?
ich hatte da eine Vermutung!
da nichts kam hab ich mir mal deinen Screenshot näher angesehenJetzt will ich erst recht eine Antwort auf das wie!
-
@homoran said in widget jqui-input: Variable mit Typ "number" ?:
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
dann gibt's jetzt den ganzen Bildschirm
gut !
man kann aber auch das Fenster schmaler machen.muss mir mal das Widget nöher ansehen. Das Widget macht ja aber keinen "Ärger", oder?
Nein, das Widget macht keinen Ärger. es nimmt die Eingaben von der Tastatur brav an und wenn ich Enter drücke wird der DP geschrieben.
Halt als string und nicht als number und es gibt die Warning.
Und sofern ich keine Mathematik machen möchte kann ich mit dem String gut weiterarbeiten (anzeigen, in andere DPs übernehmen und die HW ansteuern).Eingabe wie ?
Ich gebe den Wert auf der Tastatur des Amazon Fire-HD ein (1..3 Zahlen) und schliesse die Eingabe mit Enter (aka "Return") ab.
Das ganze läuft im "Fully Kiosk Browser"
War das die Info die du haben wolltest?hast du das Input widget ohne Script o.ä. direkt mit dem angemeckerten DP verknüpft?
oder wird ein anderer DP als der verknüpfte angemeckert?verknüpf das Widget mal mit einrm anderen DP vom Typ Number.
Gibt's dann immer noch Mecker?werde ich machen!
-
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
es nimmt die Eingaben von der Tastatur brav an und wenn ich Enter drücke wird der DP geschrieben.
das State Widget?
-
@willyiobrok sagte in widget jqui-input: Variable mit Typ "number" ?:
War das die Info die du haben wolltest?
ja!
Also kein copy & paste?
und da ist auch kein Leerzeichen davor?