NEWS
Parser Wert auslesen aber wie?
-
@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.
-
In dem JSON gibt es kein * vor der 255 sondern eine 0
"1-0:16.7.0255":2818
Oder sehe ich das falsch. Damit passt das Blockly nicht
-
@tt-tom Ja das habe ich eingefügt - das Problem ist, dass die Daten nicht in CodeTags vorliegen und damit werden sie verfälscht. Deswegen habe ich es eingefügt. Wenn man Daten so postet - dann interpretiert der Browser das. Auf meinem Screenshot siehst ja - dass ich in der Quelle den Stern eingefügt und mit grün markiert habe.
-
@mickym
Wenn ich "192.168.10.212/data" im Browser eingebe kommt:{"meterId":"1KFM0000028196","deviceId":"EBSD1425009486","msgType":"EMETER_OBIS_V2","measurements":[{"timestamp":"2023-06-25T10:00:33Z","values":{"1-0:96.90.21":"7E2005D2","1-0:0.2.00":"312E3033","1-0:14.7.0255":49.799999237060547,"1-0:81.7.26255":46,"1-0:81.7.15255":1,"1-0:81.7.4255":186,"1-0:81.7.2255":239,"1-0:81.7.1255":118,"1-0:71.7.0255":1.809999942779541,"1-0:51.7.0255":2.880000114440918,"1-0:31.7.0255":2.1400001049041748,"1-0:72.7.0255":235.60000610351562,"1-0:52.7.0255":236.30000305175781,"1-0:32.7.0255":237.39999389648438,"1-0:16.7.0255":393,"1-0:2.8.0255":68.314002990722656,"1-0:1.8.0255":11108.017578125,"1-0:96.1.0255":"0A014B464D0000006E24","1-0:96.50.1*1":"4B464D"}}]}
-
@g-hawk sagte in Parser Wert auslesen aber wie?:
@mickym
Wenn ich "192.168.10.212/data" im Browser eingebe kommt:{"meterId":"1KFM0000028196","deviceId":"EBSD1425009486","msgType":"EMETER_OBIS_V2","measurements":[{"timestamp":"2023-06-25T10:00:33Z","values":{"1-0:96.90.21":"7E2005D2","1-0:0.2.00":"312E3033","1-0:14.7.0255":49.799999237060547,"1-0:81.7.26255":46,"1-0:81.7.15255":1,"1-0:81.7.4255":186,"1-0:81.7.2255":239,"1-0:81.7.1255":118,"1-0:71.7.0255":1.809999942779541,"1-0:51.7.0255":2.880000114440918,"1-0:31.7.0255":2.1400001049041748,"1-0:72.7.0255":235.60000610351562,"1-0:52.7.0255":236.30000305175781,"1-0:32.7.0255":237.39999389648438,"1-0:16.7.0255":393,"1-0:2.8.0255":68.314002990722656,"1-0:1.8.0255":11108.017578125,"1-0:96.1.0255":"0A014B464D0000006E24","1-0:96.50.1*1":"4B464D"}}]}
Nochmal - wenn Du Daten aus der Zwischenablage kopierst und hier einstellst, dann bitte in CODE-TAGS:
Sonst kann keiner damit was anfangen. Du siehst doch im Browser dass die ganzen Sternchen weg sind!!!!
-
@mickym
Sorry{"meterId":"1KFM0000028196","deviceId":"EBSD1425009486","msgType":"EMETER_OBIS_V2","measurements":[{"timestamp":"2023-06-25T10:00:33Z","values":{"1-0:96.90.2*1":"7E2005D2","1-0:0.2.0*0":"312E3033","1-0:14.7.0*255":49.799999237060547,"1-0:81.7.26*255":46,"1-0:81.7.15*255":1,"1-0:81.7.4*255":186,"1-0:81.7.2*255":239,"1-0:81.7.1*255":118,"1-0:71.7.0*255":1.809999942779541,"1-0:51.7.0*255":2.880000114440918,"1-0:31.7.0*255":2.1400001049041748,"1-0:72.7.0*255":235.60000610351562,"1-0:52.7.0*255":236.30000305175781,"1-0:32.7.0*255":237.39999389648438,"1-0:16.7.0*255":393,"1-0:2.8.0*255":68.314002990722656,"1-0:1.8.0*255":11108.017578125,"1-0:96.1.0*255":"0A014B464D0000006E24","1-0:96.50.1*1":"4B464D"}}]}
-
OK, welche Sternchen aber was sagt mir das, dass die Sternchen weg sind?
Du hattest mir ja damals geholfen mit diesem Skript an die Daten zu kommen, aber ich habe von Java leider keine Ahnung.
Vor dem Update hat alles wunderbar funktioniert.Also was muss ich ändern?
-
@g-hawk Ja so mit den CodeTags funktioniert das wunderbar und bei mir funktioniert es nun - Also Du machst am Besten überall Debugs vorne dran - damit Du sehen kannst was passiert - das JSONATA und die Syntax passt.
Schau mal ich habe Deine Blöcke genommen und nur ein Debug davor gemacht.
Prüfe also als erstes ob in Data ein Objekt steht - wie im Screenshot und dann sollte bei jeder JSONATA Anweisung eine Zahl rauskommen.
Füge einfach die Debug Blöcke ein.
-
-
@g-hawk sagte in Parser Wert auslesen aber wie?:
OK, welche Sternchen aber was sagt mir das, dass die Sternchen weg sind?
Du hattest mir ja damals geholfen mit diesem Skript an die Daten zu kommen, aber ich habe von Java leider keine Ahnung.
Vor dem Update hat alles wunderbar funktioniert.Also was muss ich ändern?
Nein im CodeTag sind ja die Sternchen drinnen und das ist gut
Schau mal
"values":{"1-0:96.90.21":"7E2005D2","1-0:0.2.00":"312E3033","1-0:14.7.0255":49.799999237060547,"1-0:81.7.26255":46,"1-}}]}
"values":{"1-0:96.90.2*1":"7E2005D2","1-0:0.2.0*0":"312E3033","1-0:14.7.0*255":49.799999237060547,"1-0:81.7.26*255":46,"1-}}]}
fällt Dir nicht auf, dass zwischen der 2*1 - oben das Sternchen nicht angezeigt wird, wenn Du das nicht in Code Tags postest?
-
@g-hawk sagte in Parser Wert auslesen aber wie?:
Na wunderbar - dann kommen doch überall Zahlen raus. Dann überprüfe ob nochmals die Datenpunkte, in die Du schreibst. Im Übrigen würde ich hier auch nicht steuere, sondern aktualisiere nehmen, wenn Du in 0_userdata.0.xxx schreibst.
Ok ich sehe - da kommt wohl ein String raus - keine Ahnung:
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"
Dann probiere nochmal wie folgt zu konvertieren und nimm aktualisiere.
-
Ich habe auf aktualisiere geändert.
Was macht das denn genau?Log sieht jetzt so aus:
javascript.0 2023-06-25 12:45:02.023 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 12:45:02.022 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 12:45:02.020 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 12:45:01.984 info script.js_.Strom.Gesamtstrom.Elmo_auslesen: {} javascript.0 2023-06-25 12:45:01.983 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-25 12:45:01.983 warn at Object.<anonymous> (script.js_.Strom.Gesamtstrom.Elmo_auslesen:19:3) javascript.0 2023-06-25 12:45:01.982 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 2023-06-25 12:45:01.981 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 12:45:01.979 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-25 12:45:01.979 warn at Object.<anonymous> (script.js_.Strom.Gesamtstrom.Elmo_auslesen:18:3) javascript.0 2023-06-25 12:45:01.979 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 2023-06-25 12:45:01.977 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 12:45:01.976 warn at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2023-06-25 12:45:01.975 warn at Object.<anonymous> (script.js_.Strom.Gesamtstrom.Elmo_auslesen:17:3) javascript.0 2023-06-25 12:45:01.975 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 2023-06-25 12:45:01.973 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.
-
@mickym sagte in Parser Wert auslesen aber wie?:
dann kommen doch überall Zahlen raus.
wo siehst du das?
die Ziffern können doch string sein
edit:
auf dein edit hab ich gewartet