NEWS
Hilfe für Javascript nicht Versteher
-
Hallo habe Problem mit einem Javascript für meine WP von Dimplex,
das script holt sich von mqtt daten in Jason ab und sollte diese für mich verständlich aufbereiten,lt Dimplex wikion({id: "mqtt.0.gateway.iothub.twin_reported_state", change: "any"}, function (obj) { ParseTwinReportedState(obj); }); CreateOrSetState('mqtt.0.input.modbus_set_state', 'modbus_set_state', '', true); on({id: "javascript.0.mqtt.0.input.modbus_set_state", change: "any"}, function (obj) { HandleModbusSetStateInput(obj); }); CreateOrSetState('mqtt.0.input.modbus_get_state', 'modbus_get_state', '', true); on({id: "javascript.0.mqtt.0.input.modbus_get_state", change: "any"}, funktion (obj) { HandleModbusGetStateInput(obj); }); function ParseTwinReportedState(obj) { try { var rootJson = JSON.parse(obj.state.val); var jsonTable = []; Object.keys(rootJson).forEach(function(outerKey) { var innerJson = rootJson[outerKey]; Object.keys(innerJson).forEach(function(innerKey) { CreateOrSetState('mqtt.0.parsed.twin_reported_state.' + outerKey + '.' + innerKey, innerKey, innerJson[innerKey]); jsonTable.push({Name: innerKey, Value: innerJson[innerKey]}); }); }); CreateOrSetState('mqtt.0.parsed.twin_reported_state_table', 'twin_reported_state_table', JSON.stringify(jsonTable)); } catch (e) {console.error("Error in ParseTwinReportedState(): " + e);} } function HandleModbusSetStateInput(obj) { try{ var inputSplit = obj.state.val.split(" "); if(inputSplit.length < 2) return; var modbusIdx = inputSplit[0]; var valArray = []; for(var i=1; i<inputSplit.length; i++){valArray.push(inputSplit[i]);} var modbusSetJSON = { name: modbusIdx, value: valArray, mqtt_msg_properties: {response_topic: "extern/iobroker/set_value_reply", correlation_data: 0} } sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/set_value/' + modbusIdx, message: JSON.stringify(modbusSetJSON)}); } catch (e) {console.error("Error in ParseModbusSetState(): " + e);} } function HandleModbusGetStateInput(obj) { try{ var modbusIdx = obj.state.val; if(modbusIdx.length < 1) return; var modbusGetJSON = { name: modbusIdx, mqtt_msg_properties: {response_topic: "extern/iobroker/get_value_reply", correlation_data: 0} } sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/get_value/' + modbusIdx, message: JSON.stringify(modbusGetJSON)}); } catch (e) {console.error("Error in ParseModbusGetState(): " + e);} } function CreateOrSetState(objectId, objectName, objectValue, onlyCreate = false){ if(!existsState(objectId)) createState(objectId, objectValue,{name: objectName, type: 'string', role: 'value'}, function () {}); else if(!onlyCreate) setState(objectId, objectValue); }
und bekomme eine Fehlermeldung welche ich leider nicht deuten kann,
Script.js.WP2024.Skrite_Haus compile failed: at script.js.Displays.Skrite_test:6
vielleicht kann mir einer der script/javascript Profis helfen ?
möchte gewisse Daten , zb Temp Brauchwasserspeicher meiner Besseren hälfte in einer einfachen Vis anzeigen lassen,
mfg
Nape
@Mikewolf -
@nape1 sagte in Hilfe für Javascript nicht Versteher:
das script holt sich von mqtt daten in Jason ab
Wo kommt dieses Script her?
Scheint schon recht alt zu sein, denn eigene DP sollten schon lange unterhalb von0_userdata.0
liegen und nicht mehr unterjavascript.0
.
Außerdem sollten Scripte keine Datenpunkte im Namespace eines Adapters anlegen. Da hat der Adapter die Hoheit - und sonst niemand.und sollte diese für mich verständlich aufbereiten
Die Daten liegen bereits als JSON vor und sollen nur "auseinandergedröselt" werden?
Das geht auch völlig ohne Script mit Aliasen. -
@codierknecht sagte in Hilfe für Javascript nicht Versteher:
Scheint schon recht alt zu sein, denn eigene DP sollten schon lange unterhalb von 0_userdata.0 liegen und nicht mehr unter javascript.0.
Das wurde so nie gesagt, allerdings
@codierknecht sagte in Hilfe für Javascript nicht Versteher:
sollten Scripte keine Datenpunkte im Namespace eines Adapters anlegen.
ist MQTT da genauso eine Ausnahme.
Für alle anderen Adapter stimmt das.
-
@nape1 fun**c**tion (obj) schreibt sich mit 'c', nicht mit 'k'
-
@homoran sagte in Hilfe für Javascript nicht Versteher:
wurde so nie gesagt
Ist aber solange ich dabei bin so ziemlich allgemeiner Konsens. Hat natürlich mit der Funktion des Scripts nix zu tun.
ist MQTT da genauso eine Ausnahme
Muss einem ja auch gesagt werden
Adlerauge @fastfoot hat ja vermutlich die Ursache entdeckt.
@nape1
Zeig doch mal das JSON und was Du daraus extrahiert haben möchtest. Vielleicht kriegen wir das ja auch ohne Script hin. -
Hallo
Ich habe das gleiche Problem das das script nicht lauft.
Habe es dann hir gelesen mit dem c.
Bekommst du mittlerweile Daten aus der WP ich bin zwar verbunden aber so wie Beschrieben mit einzelne Daten bekomme ich nichts laut Bespreibung auf der Wiki Seite.
Villeicht kannst mir helfen fals du es hinbekommen hast.mfg
Andi