NEWS
[gelöst]Hilfe bei Javascript
-
Ich bin mit javascript noch recht am Anfang. Trotzdem hab ich es mal ausprobiert und natürlich krieg ich jetzt Fehlermeldungen. Könnte sich jemand mal das script anschauen und mir zeigen wie es richtig ist?
Also das script den Wert des Datenpunktes "mqtt.0.ESP_Windsensor_3.Windsensor.Count" auslesen. Das sind meine Impulse vom Anemometer. Bei 1 Impuls pro Sekunde ist die Windgeschwindigkeit 2,4 kmh laut dem Datenblatt des Anemometers. Nun soll das script mir das umrechnen und soll mir in den Datenpunkt "0_userdata.0.Wetterstation.Windgeschwindigkeit_km/h" den Wert in km/h und in den Datenpunkt " 0_userdata.0.Wetterstation.WIndgeschwindigkeit_m/sec" den wert in m/sec schreiben.
So schaut jetzt mei script dazu aus:// Auslesen des Datenpunkts mit den Impulsen var pulseCount = getState("mqtt.0.ESP_Windsensor_3.Windsensor.Count").value; // Umrechnung von Impulsen in km/h und m/s var windgeschwindigkeit_kmh = pulseCount * 2.4; var windgeschwindigkeit_ms = windgeschwindigkeit_kmh / 3.6; // Debug-Ausgabe der Werte console.log("mqtt.0.ESP_Windsensor_3.Windsensor.Count: " + pulseCount); console.log("Windgeschwindigkeit (km/h): " + windgeschwindigkeit_kmh.toFixed(2)); console.log("Windgeschwindigkeit (m/s): " + windgeschwindigkeit_ms.toFixed(2)); // Schreiben der Werte in die Datenpunkte setObjekt("0_userdata.0.Wetterstation.Windgeschwindigkeit_km/h", windgeschwindigkeit_kmh.toFixed(2)); setObjekt("0_userdata.0.Wetterstation.WIndgeschwindigkeit_m/sec", windgeschwindigkeit_ms.toFixed(2));
und das sind die Fehlermeldungen.
14:22:31.562 error javascript.0 (1122) script.js.Test.Windsensor_Blockly: ReferenceError: setObjekt is not defined 14:22:31.562 error javascript.0 (1122) at Windsensor (script.js.Test.Windsensor_Blockly:16:5) 14:22:31.562 error javascript.0 (1122) at Object.<anonymous> (script.js.Test.Windsensor_Blockly:24:9)
MOD-EDIT: Code in code-tags gesetzt!
Vielen dank im Voraus
-
@fritzk sagte in Hilfe bei Javascript:
So schaut jetzt mei script dazu aus:
ist das alles?
@fritzk sagte in Hilfe bei Javascript:
16:5
Zeile 16 existiert laut deinem Ausschnitt nicht.
und
:24:9
Zeile 24 schon gar nicht.
hast du globale Skripte?
@fritzk sagte in Hilfe bei Javascript:
Windsensor_Blockly
ist das ein Blockly, dann bitte zeigen!
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1
-
-
@jey-cee sagte: Gibt es nicht, so ist das richtig: setObject
Nein, setState():
const idSensor = 'mqtt.0.ESP_Windsensor_3.Windsensor.Count'; const idKmh = '0_userdata.0.Wetterstation.Windgeschwindigkeit_km/h'; const idMs = '0_userdata.0.Wetterstation.WIndgeschwindigkeit_m/sec'; on(idSensor, function(dp) { // Umrechnung von Impulsen in km/h und m/s var windgeschwindigkeit_kmh = 2400 * (dp.state.val - dp.oldState.val) / (dp.state.lc - dp.oldState.lc); var windgeschwindigkeit_ms = windgeschwindigkeit_kmh / 3.6; // Debug-Ausgabe der Werte console.log("mqtt.0.ESP_Windsensor_3.Windsensor.Count: " + dp.state.val); console.log("Windgeschwindigkeit (km/h): " + windgeschwindigkeit_kmh.toFixed(2)); console.log("Windgeschwindigkeit (m/s): " + windgeschwindigkeit_ms.toFixed(2)); // Schreiben der Werte in die Datenpunkte setState(idKmh, Math.round(windgeschwindigkeit_kmh * 100) / 100, true); setState(idMs, Math.round(windgeschwindigkeit_ms * 100) / 100, true); });
-
In Blockly hab ich nur ein Trigger auf Änderung des Datenpunktes "mqtt.0.ESP_Windsensor_3.Windsensor.Count". dann startet das Javascript`
<block xmlns="https://developers.google.com/blockly/xml" type="procedures_defcustomnoreturn" id="}b-6^b99mjJORF[!qr~K" x="313" y="163"> <mutation statements="false"></mutation> <field name="NAME">Windsensor</field> <field name="SCRIPT">Ly8gQXVzbGVzZW4gZGVzIERhdGVucHVua3RzIG1pdCBkZW4gSW1wdWxzZW4NCnZhciBwdWxzZUNvdW50ID0gZ2V0U3RhdGUoIm1xdHQuMC5FU1BfV2luZHNlbnNvcl8zLldpbmRzZW5zb3IuQ291bnQiKS52YWx1ZTsNCg0KLy8gVW1yZWNobnVuZyB2b24gSW1wdWxzZW4gaW4ga20vaCB1bmQgbS9zDQp2YXIgd2luZGdlc2Nod2luZGlna2VpdF9rbWggPSBwdWxzZUNvdW50ICogMi40Ow0KdmFyIHdpbmRnZXNjaHdpbmRpZ2tlaXRfbXMgPSB3aW5kZ2VzY2h3aW5kaWdrZWl0X2ttaCAvIDMuNjsNCg0KLy8gRGVidWctQXVzZ2FiZSBkZXIgV2VydGUNCmNvbnNvbGUubG9nKCJtcXR0LjAuRVNQX1dpbmRzZW5zb3JfMy5XaW5kc2Vuc29yLkNvdW50OiAiICsgcHVsc2VDb3VudCk7DQpjb25zb2xlLmxvZygiV2luZGdlc2Nod2luZGlna2VpdCAoa20vaCk6ICIgKyB3aW5kZ2VzY2h3aW5kaWdrZWl0X2ttaC50b0ZpeGVkKDIpKTsNCmNvbnNvbGUubG9nKCJXaW5kZ2VzY2h3aW5kaWdrZWl0IChtL3MpOiAiICsgd2luZGdlc2Nod2luZGlna2VpdF9tcy50b0ZpeGVkKDIpKTsNCg0KLy8gU2NocmVpYmVuIGRlciBXZXJ0ZSBpbiBkaWUgRGF0ZW5wdW5rdGUNCnNldE9iamVrdCgiMF91c2VyZGF0YS4wLldldHRlcnN0YXRpb24uV2luZGdlc2Nod2luZGlna2VpdF9rbS9oIiwgd2luZGdlc2Nod2luZGlna2VpdF9rbWgudG9GaXhlZCgyKSk7DQpzZXRPYmpla3QoIjBfdXNlcmRhdGEuMC5XZXR0ZXJzdGF0aW9uLldJbmRnZXNjaHdpbmRpZ2tlaXRfbS9zZWMiLCB3aW5kZ2VzY2h3aW5kaWdrZWl0X21zLnRvRml4ZWQoMikpOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block>
und Hier nochmal die ganzen Fehler
javascript.0 2023-03-03 14:51:12.653 error at processImmediate (node:internal/timers:476:21) javascript.0 2023-03-03 14:51:12.653 error at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5916:56) javascript.0 2023-03-03 14:51:12.652 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:593:29) javascript.0 2023-03-03 14:51:12.652 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1244:38) javascript.0 2023-03-03 14:51:12.652 error at Object.<anonymous> (script.js.Test.Windsensor_Blockly:24:9) javascript.0 2023-03-03 14:51:12.652 error at Windsensor (script.js.Test.Windsensor_Blockly:16:5) javascript.0 2023-03-03 14:51:12.652 error script.js.Test.Windsensor_Blockly: ReferenceError: setObjekt is not defined javascript.0 2023-03-03 14:51:11.698 error at processImmediate (node:internal/timers:476:21) javascript.0 2023-03-03 14:51:11.698 error at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5916:56) javascript.0 2023-03-03 14:51:11.698 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:593:29) javascript.0 2023-03-03 14:51:11.697 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1244:38) javascript.0 2023-03-03 14:51:11.697 error at Object.<anonymous> (script.js.Test.Windsensor_Blockly:24:9) javascript.0 2023-03-03 14:51:11.696 error at Windsensor (script.js.Test.Windsensor_Blockly:16:5) javascript.0 2023-03-03 14:51:11.696 error script.js.Test.Windsensor_Blockly: ReferenceError: setObjekt is not defined
-
@fritzk sagte in Hilfe bei Javascript:
In Blockly hab ich nur ein Trigger auf Änderung des Datenpunktes
warum zeigst du das Blockly nicht?
Und was ist mit den anderen offenen Fragen?
-
-
Okay läuft jetzt perfekt. Merk schon ich muss noch viel lernen
So schauts jetzt aus. Hab jetzt den code von . @paul53 ....in der Javascript Funktion gepackt.
Vielen Dank für die Hilfe und Unterstüzung
-
-
Achso okay. Habs jetzt geändert und als reines Javascript laufen.
Danke