NEWS
Parser Wert auslesen aber wie?
-
Wie geil ist das denn!!!!
Vielen vielen Dank für deine Zeit und deine Mühe.
Die Lösung könnte ich nochmal in dem Elmo Beitrag bekanntgeben.
Super endlich funktioniert es.
-
@g-hawk Na ja - erst mussten wir ja mal dem Problem auf die Spur kommen.
Wenn Du nicht zufälligerweise
Und ich muss im Parser ankreuzen " Verwenden sie einen unsicheren HTTP Parser
das in diesem Posting erwähnt hättest, hätte ich ja nie nach einer Lösung gesucht.
Du siehst jede Information ist wertvoll.
Wenn Du das Blockly noch flexibler machen willst - dann rufst du die Funktion halt mit der URL auf - dann kann man das universeller nutzen. Im Moment ist die URL ja fest codiert in der Funktion.
-
@mickym
Ich habe es jetzt so gelöst: -
@g-hawk Ja für Dich passt das - aber vielleicht haben ja andere eine andere URL um das nicht in der Funktion anpassen zu müssen - könnte man die URL auch im Blockly mitgeben:
und wenn das hinhaut - dann kann man in der Funktion die auskommentierte URL löschen.
Also die Zeile 3:
-
@mickym
Hallo.
Ich habe heute ein Update des Java Adapters gemacht.
Leider funktioniert das Script jetzt nicht mehr.
In den Update Informationen stand auch ,dass man irgendwas ändern muss, wenn man Jsonata Blöcke verwendet.Kann da jemand helfen?
-
@g-hawk Ich hab irgendwo mal gelesen, dass man das Script nochmal neu speicher muss.
-
@g-hawk sagte in Parser Wert auslesen aber wie?:
Ich habe heute ein Update des Java Adapters gemacht.
zeig mal auf welche Version bitte
-
7.0.3
2023-06-21 21:38:00.392 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-21 21:38:00.392 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-21 21:38:00.392 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-21 21:38:00.392 warn at Object.<anonymous> (script.js_.Strom.Gesamtstrom.Elmo_auslesen:19:3) javascript.0 2023-06-21 21:38:00.392 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 2023-06-21 21:38:00.391 warn You are assigning a object to the state "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Stromverbrauch_aktuell" which expects a number. Please fix your code to use a number or change the state type to object. This warning might become an error in future versions. javascript.0 2023-06-21 21:38:00.389 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-21 21:38:00.389 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-21 21:38:00.389 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-21 21:38:00.389 warn at Object.<anonymous> (script.js_.Strom.Gesamtstrom.Elmo_auslesen:18:3) javascript.0 2023-06-21 21:38:00.389 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 2023-06-21 21:38:00.388 warn You are assigning a object to the state "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Einspeisezaehlerstand_aktuell" which expects a number. Please fix your code to use a number or change the state type to object. This warning might become an error in future versions. javascript.0 2023-06-21 21:38:00.386 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-21 21:38:00.386 warn at Object.<anonymous> (script.js_.Strom.Gesamtstrom.Elmo_auslesen:17:3) javascript.0 2023-06-21 21:38:00.386 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 2023-06-21 21:38:00.384 warn You are assigning a object to the state "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Hauptzaehlerstand_aktuell" which expects a number. Please fix your code to use a number or change the state type to object. This warning might become an error in future versions.
Das steht im Log
-
@g-hawk sagte in Parser Wert auslesen aber wie?:
You are assigning a object to the state "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Hauptzaehlerstand_aktuell" which expects a number. Please fix your code to use a number or change the state
da hast du einen falschen Datentyp
-
@g-hawk sagte in Parser Wert auslesen aber wie?:
7.0.3
wenn das ein update von 6.x war dann gabs da auch einen Hinweis auf "breaking changes" welche jsonata betreffen.
Weiss aber nicht mehr was das war, musste suchen,Und in Deinem LOG steht genau drin was im Skript nicht stimmt:
@g-hawk sagte in Parser Wert auslesen aber wie?:
2023-06-21 21:38:00.391 warn You are assigning a object to the state "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Stromverbrauch_aktuell" which expects a number. Please fix your code to use a number or change the state type to object. This warning might become an error in future versions.
und @Homoran war wieder schneller
-
@djmarc75 sagte in Parser Wert auslesen aber wie?:
wenn das ein update von 6.x war dann gabs da auch einen Hinweis auf "breaking changes" welche jsonata betreffen.
Weiss aber nicht mehr was das war, musste suchen,Wie gesagt das Blockly nochmal neu speichern - JSONATA wird dann asynchron verarbeitet.
-
@mickym
Ok ich teste -
@g-hawk sagte in Parser Wert auslesen aber wie?:
@mickym
Ok ich testeHabe gerade auf meinem Testsystem den JS Adapter aktualisiert - da solltest Du auch diese Meldung bekommen haben:
-
@mickym
Das habe ich tatsächlich gelesen aber dass das so einfach gemeint war hätte ich jetzt nicht gedacht. Aber das Problem mit dem Object und number besteht weiterhin meine Datenpunkte sind alle number.
Dann muss ja irgendwas im Skript nicht stimmen aufgrund dieser Fehlermeldung.
Was müssen wir denn da ändern? -
@g-hawk sagte in Parser Wert auslesen aber wie?:
@mickym
Das habe ich tatsächlich gelesen aber dass das so einfach gemeint war hätte ich jetzt nicht gedacht. Aber das Problem mit dem Object und number besteht weiterhin meine Datenpunkte sind alle number.
Dann muss ja irgendwas im Skript nicht stimmen aufgrund dieser Fehlermeldung.
Was müssen wir denn da ändern?Das hat aber mit JSONATA nichts zu tun - stell einfach in dem Datenpunkt der angemeckert wird den Datentyp auf number um.
-
@g-hawk sagte in Parser Wert auslesen aber wie?:
@mickym
Das habe ich tatsächlich gelesen aber dass das so einfach gemeint war hätte ich jetzt nicht gedacht. Aber das Problem mit dem Object und number besteht weiterhin meine Datenpunkte sind alle number.
Dann muss ja irgendwas im Skript nicht stimmen aufgrund dieser Fehlermeldung.
Was müssen wir denn da ändern?Wenn schon Number drin steht - dann scheint es nicht korrekt aufgelöst zu werden, dann schau halt nochmal nach was es ergibt.
Ist es immer noch das
{"meterId":"1KFM00000754396","deviceId":"EBSD14250567526","msgType":"EMETER_OBIS_V2","measurements":[{"timestamp":"2022-12-03T13:25:53Z","values":{"1-0:96.90.21":"7E2005D2","1-0:0.2.00":"312E3033","1-0:14.7.0255":50,"1-0:81.7.26255":359,"1-0:81.7.15255":330,"1-0:81.7.4255":337,"1-0:81.7.2255":238,"1-0:81.7.1255":118,"1-0:71.7.0255":10.119999885559082,"1-0:51.7.0255":1.7100000381469727,"1-0:31.7.0255":0.89999997615814209,"1-0:72.7.0255":235.89999389648438,"1-0:52.7.0255":234.69999694824219,"1-0:32.7.0255":237,"1-0:16.7.0255":2818,"1-0:2.8.0255":0,"1-0:1.8.0255":9071.03125,"1-0:96.1.0255":"0A014B464D0000006E24","1-0:96.50.1*1":"4B464D"}}]}
Und Du brauchst das hier?
1-0:16.7.0*255 -
@mickym
Die stehen alle auf Zahl.Sag die Fehlermeldung nicht genau das Gegenteil?
Also dass ich auf Objekt umstellen soll oder das Skript ändern soll?v6.3.5 0 99+ Log-Größe: 284.3 KB 1 Zeit debug Nachricht javascript.0 2023-06-25 11:26:01.194 info State value to set for "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Stromverbrauch_aktuell" has to be type "number" but received type "string" javascript.0 2023-06-25 11:26:01.193 info State value to set for "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Einspeisezaehlerstand_aktuell" has to be type "number" but received type "string" javascript.0 2023-06-25 11:26:01.192 info State value to set for "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Hauptzaehlerstand_aktuell" has to be type "number" but received type "string" javascript.0 2023-06-25 11:26:01.127 info script.js_.Strom.Gesamtstrom.Elmo_auslesen: {} javascript.0 2023-06-25 11:26:01.126 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-25 11:26:01.125 warn at Object.<anonymous> (script.js_.Strom.Gesamtstrom.Elmo_auslesen:19:3) javascript.0 2023-06-25 11:26:01.125 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 2023-06-25 11:26:01.124 warn You are assigning a object to the state "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Stromverbrauch_aktuell" which expects a number. Please fix your code to use a number or change the state type to object. This warning might become an error in future versions. javascript.0 2023-06-25 11:26:01.120 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-25 11:26:01.120 warn at Object.<anonymous> (script.js_.Strom.Gesamtstrom.Elmo_auslesen:18:3) javascript.0 2023-06-25 11:26:01.120 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 2023-06-25 11:26:01.119 warn You are assigning a object to the state "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Einspeisezaehlerstand_aktuell" which expects a number. Please fix your code to use a number or change the state type to object. This warning might become an error in future versions. javascript.0 2023-06-25 11:26:01.117 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-25 11:26:01.116 warn at Object.<anonymous> (script.js_.Strom.Gesamtstrom.Elmo_auslesen:17:3) javascript.0 2023-06-25 11:26:01.116 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 2023-06-25 11:26:01.112 warn You are assigning a object to the state "0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Hauptzaehlerstand_aktuell" which expects a number. Please fix your code to use a number or change the state type to object. This warning might become an error in future versions.
-
@g-hawk Ja aber Du willst eine Zahl haben - es scheint aber ein Objekt anzukommen, also wird die Zahl nicht richtig extrahiert.
-
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="HKZ8QJwOkjzcY{)478uh">data</variable> </variables> <block type="procedures_defcustomreturn" id=".0+pfi#8i#U#jm$iU4:(" x="838" y="-138"> <mutation statements="false"></mutation> <field name="NAME">EWE_Elmo</field> <field name="SCRIPT">Y29uc3QgYXhpb3MgPSByZXF1aXJlKCdheGlvcycpOw0KIA0KY29uc3QgdXJsID0gJ2h0dHA6Ly8xOTIuMTY4LjEwLjIxMi9kYXRhJzsNCiANCnJldHVybiBheGlvcy5nZXQodXJsLCB7IGluc2VjdXJlSFRUUFBhcnNlcjogdHJ1ZSB9KS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuZGF0YSk7DQo=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="schedule" id="PZX=m6gsch].ER3b]?)l" x="63" y="-88"> <field name="SCHEDULE">*/10 * * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="(^z7u:OWv3wK-3WwfK0$"> <field name="VAR" id="HKZ8QJwOkjzcY{)478uh">data</field> <value name="VALUE"> <block type="procedures_callcustomreturn" id="}DioNbC)Da-GiVrMZiBd"> <mutation name="EWE_Elmo"></mutation> </block> </value> <next> <block type="control" id="DL7OU@`NdOckqmFyr~K4"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Hauptzaehlerstand_aktuell</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_jsonata" id="Fn3{d1`bQT(R#,.DSWI_"> <value name="EXPRESSION"> <shadow type="text" id="K~.FXx{(u4hCr@*VlT0f"> <field name="TEXT">$.measurements[0].values."1-0:1.8.0*255"</field> </shadow> </value> <value name="TARGET"> <block type="variables_get" id="DgVS.JaXD~{6lDO?gAsE"> <field name="VAR" id="HKZ8QJwOkjzcY{)478uh">data</field> </block> </value> </block> </value> <next> <block type="control" id="?=z|HV#-:d`Q|SH[:_xq"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Einspeisezaehlerstand_aktuell</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_jsonata" id="nO49a*}C;,c0Z~suk6mt"> <value name="EXPRESSION"> <shadow type="text" id="2b0xNcCby$Sa[%U=i*w{"> <field name="TEXT">$.measurements[0].values."1-0:2.8.0*255"</field> </shadow> </value> <value name="TARGET"> <block type="variables_get" id="/8bt$.wh.$qV~_=JgRQt"> <field name="VAR" id="HKZ8QJwOkjzcY{)478uh">data</field> </block> </value> </block> </value> <next> <block type="control" id="8OCZ#aLl}`qx=%m$!ihT"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Geraetesteuerung.Strom.Stromzähler_untere_Wohnung.Elmo_EWE.Stromverbrauch_aktuell</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_jsonata" id="ks,c^F+c6K)B,/E1qn~g"> <value name="EXPRESSION"> <shadow type="text" id="Oz+/([mca!_Cfa)wu8IE"> <field name="TEXT">$.measurements[0].values."1-0:16.7.0*255"</field> </shadow> </value> <value name="TARGET"> <block type="variables_get" id="OeFO{7Y*E*=zJCQm{cv{"> <field name="VAR" id="HKZ8QJwOkjzcY{)478uh">data</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
@g-hawk Das ist alles gut und schön - aber nachdem ich das Gerät nicht habe nutzt mir Dein Blockly nicht viel. Ich kann data auf die Daten aus dem 1. Post setzen.
So also das geht - Du musst wie gesagt halt mit debug prüfen, ob eine Zahl rauskommt. Ich befürchte, dass Deine Quelle nicht orderntlich liefert - hat aber nichts mit JSONATA oder dem Script zu tun das funktioniert wie Du siehst.
Ich glaube eher, dass an dem Abruf was faul ist.