NEWS
simpleApi weiß nicht mehr welchen Typ er will
-
Aha, in den Systemeinstellungen steht FloaterTeiler "," statt "."
Da hat das Update wohl was verstellt
@klassisch sagte in simpleApi weiß nicht mehr welchen Typ er will:
Systemeinstellungen steht FloaterTeiler "," statt "."
wo steht das ?
welche Systemeinstellungen ? -
@klassisch sagte in simpleApi weiß nicht mehr welchen Typ er will:
Systemeinstellungen steht FloaterTeiler "," statt "."
wo steht das ?
welche Systemeinstellungen ? -
@klassisch nimm mal das folgende Skript pass die ID an und beobachte die Ausgaben wenn dein ESP Daten schickt.
on({id: '0_userdata.0.example_state'}, (obj) => { log( `${typeof( obj.state.val )}, value: ${obj.state.val}` ); })@klassisch sagte in simpleApi weiß nicht mehr welchen Typ er will:
Aha, in den Systemeinstellungen steht FloaterTeiler "," statt "."
Das ist reine Kosmetik, intern wird immer noch mit "." gearbeitet.
-
Habe jetzt den Datentyp wieder auf Number umgestellt, erhalte aber Fehler
State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "number" but received type "string" -
@paul53 Das hätte ich auch erwartet.
Schauen wir uns ein anderes Beispiel an:
State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "number" but received type "string"Das Objekt hat Typ number
{ "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1588573013258, "common": { "name": "H-abs", "role": "", "type": "number", "desc": "Manuell erzeugt", "unit": "g/m^3", "read": true, "write": true, "def": false,Der ESP sendet 6.20
Jetzt ändere ich manuell in string
"name": "H-abs", "role": "", "type": "string", "desc": "Manuell erzeugt", "unit": "g/m^3", "read": true, "write": true,und ich erhalte:
State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "string" but received type "number.Jetzt gebe ich vom Browser aus ein:
...:8087/set/0_userdata.0.heating.Werkstatt.H-abs?value=6.30und erhalte im Browser die Antwort
id "0_userdata.0.heating.Werkstatt.H-abs" value 6.3 val 6.3und im iobroker log
State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "string" but received type "numberUnd in den Objekten sehe ich 6,3
Wo kommt jetzt das Komma her? Ich arbeite seit Jahr und Tag mit Punkt.
@klassisch sagte in simpleApi weiß nicht mehr welchen Typ er will:
Jetzt gebe ich vom Browser aus ein:
...:8087/set/0_userdata.0.heating.Werkstatt.H-abs?value=6.30Wenn du folgendes eingibst erhälst du einen String statt einer Number:
...:8087/set/0_userdata.0.heating.Werkstatt.H-abs?value="6.30"Nochmal es macht einen Unterschied wie der ESP die Daten sendet, bedeutet es zählt was der Sendet und damit auch wie er intern mit den Werten umgeht.
-
@klassisch nimm mal das folgende Skript pass die ID an und beobachte die Ausgaben wenn dein ESP Daten schickt.
on({id: '0_userdata.0.example_state'}, (obj) => { log( `${typeof( obj.state.val )}, value: ${obj.state.val}` ); })@klassisch sagte in simpleApi weiß nicht mehr welchen Typ er will:
Aha, in den Systemeinstellungen steht FloaterTeiler "," statt "."
Das ist reine Kosmetik, intern wird immer noch mit "." gearbeitet.
@jey-cee sagte in simpleApi weiß nicht mehr welchen Typ er will:
on({id: '0_userdata.0.example_state'},
Vielen Dank, daß Du Dich der Sache annimmst
Ich füttere simpleApi über Browser mit 6.15 und erhalte im log (unten nach oben)
simple-api.0 2021-12-26 11:22:48.501 info State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "number" but received type "string" javascript.0 2021-12-26 11:22:42.388 info script.js.tests.testSimpleApiTypeconfusion: number, value: 6.15Kurz drauf kommt der ESP und liefert ein:
javascript.0 2021-12-26 11:23:48.512 info script.js.tests.testSimpleApiTypeconfusion: string, value: 6.20 simple-api.0 2021-12-26 11:23:48.507 info State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "number" but received type "string" simple-api.0 2021-12-26 11:23:48.506 info State value to set for "0_userdata.0.heating.Werkstatt.H-rel" has to be type "number" but received type "string"Objekt noch immer number
"name": "H-abs", "role": "", "type": "number", "desc": "Manuell erzeugt", "unit": "g/m^3", "read": true, "write": true, -
@jey-cee sagte in simpleApi weiß nicht mehr welchen Typ er will:
on({id: '0_userdata.0.example_state'},
Vielen Dank, daß Du Dich der Sache annimmst
Ich füttere simpleApi über Browser mit 6.15 und erhalte im log (unten nach oben)
simple-api.0 2021-12-26 11:22:48.501 info State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "number" but received type "string" javascript.0 2021-12-26 11:22:42.388 info script.js.tests.testSimpleApiTypeconfusion: number, value: 6.15Kurz drauf kommt der ESP und liefert ein:
javascript.0 2021-12-26 11:23:48.512 info script.js.tests.testSimpleApiTypeconfusion: string, value: 6.20 simple-api.0 2021-12-26 11:23:48.507 info State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "number" but received type "string" simple-api.0 2021-12-26 11:23:48.506 info State value to set for "0_userdata.0.heating.Werkstatt.H-rel" has to be type "number" but received type "string"Objekt noch immer number
"name": "H-abs", "role": "", "type": "number", "desc": "Manuell erzeugt", "unit": "g/m^3", "read": true, "write": true,@klassisch sagte: script.js.tests.testSimpleApiTypeconfusion: string, value: 6.20
Zahlen haben keine 0 hinten. Vielleicht wird es deshalb als String erkannt ?
EDIT: Wenn ich im Browser eine 0 anhänge, wird es trotzdem in Zahl gewandelt:

Es muss also an der Formatierung im ESP liegen, dass es als String erkannt wird.
-
@klassisch sagte: script.js.tests.testSimpleApiTypeconfusion: string, value: 6.20
Zahlen haben keine 0 hinten. Vielleicht wird es deshalb als String erkannt ?
EDIT: Wenn ich im Browser eine 0 anhänge, wird es trotzdem in Zahl gewandelt:

Es muss also an der Formatierung im ESP liegen, dass es als String erkannt wird.
@paul53 Das scheint es nicht zu sein. Wenn ich per Browser 6.15 sende hatte ich das gleiche Problem
Hatte aber auch ein großes Win Update.
Und jetzt habe ich im Win wieder den Punkt und das Datumsformat yyyy-mm-dd eingsetellt, was anscheinend auch im Win vrstellt war.Jetzt habe ich folgende Situation:
6.10 und 6.15 nacheinander über Browser eingegeben
Danach kam die 6.20 vom ESPjavascript.0 2021-12-26 11:42:48.571 info script.js.tests.testSimpleApiTypeconfusion: string, value: 6.20 simple-api.0 2021-12-26 11:42:48.568 info State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "number" but received type "string" javascript.0 2021-12-26 11:42:31.848 info script.js.tests.testSimpleApiTypeconfusion: number, value: 6.15 javascript.0 2021-12-26 11:42:26.438 info script.js.tests.testSimpleApiTypeconfusion: number, value: 6.1Die 6.1 und die 6.15 vom Browser werden nicht mehr angemeckert. die 6.20 vom ESP schon.
Was macht der Browser anders?
Ich teste mal Chrome statt FF
Gleiches Ergebnis auf 6.3:javascript.0 2021-12-26 11:47:04.677 info script.js.tests.testSimpleApiTypeconfusion: number, value: 6.3 -
@jey-cee sagte in simpleApi weiß nicht mehr welchen Typ er will:
on({id: '0_userdata.0.example_state'},
Vielen Dank, daß Du Dich der Sache annimmst
Ich füttere simpleApi über Browser mit 6.15 und erhalte im log (unten nach oben)
simple-api.0 2021-12-26 11:22:48.501 info State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "number" but received type "string" javascript.0 2021-12-26 11:22:42.388 info script.js.tests.testSimpleApiTypeconfusion: number, value: 6.15Kurz drauf kommt der ESP und liefert ein:
javascript.0 2021-12-26 11:23:48.512 info script.js.tests.testSimpleApiTypeconfusion: string, value: 6.20 simple-api.0 2021-12-26 11:23:48.507 info State value to set for "0_userdata.0.heating.Werkstatt.H-abs" has to be type "number" but received type "string" simple-api.0 2021-12-26 11:23:48.506 info State value to set for "0_userdata.0.heating.Werkstatt.H-rel" has to be type "number" but received type "string"Objekt noch immer number
"name": "H-abs", "role": "", "type": "number", "desc": "Manuell erzeugt", "unit": "g/m^3", "read": true, "write": true, -
@klassisch also der Wert vom ESP kommt als String im ioBroker an, das hatte ich ja schon vermutet.
Es liegt also definitv am ESP der die Zahl als String sendet. Was läuft den auf deinem ESP für eine Firmware?
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
