Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst]Hilfe bei Javascript

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]Hilfe bei Javascript

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Fritzk last edited by Fritzk

      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

      Homoran Jey Cee 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Fritzk last edited by Homoran

        @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

        1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer @Fritzk last edited by

          @fritzk sagte in Hilfe bei Javascript:

          setObjekt

          Gibt es nicht, so ist das richtig: setObject

          paul53 1 Reply Last reply Reply Quote 1
          • paul53
            paul53 @Jey Cee last edited by

            @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);
            });
            
            1 Reply Last reply Reply Quote 1
            • F
              Fritzk last edited by Fritzk

              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
              
              Homoran haus-automatisierung 2 Replies Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Fritzk last edited by Homoran

                @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?

                1 Reply Last reply Reply Quote 0
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @Fritzk last edited by

                  @fritzk Du musst das schon im Code der JS-Funktion Windsensor anpassen... @paul53 hat doch oben schon die Lösung genannt

                  1 Reply Last reply Reply Quote 0
                  • F
                    Fritzk last edited by

                    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.
                    wind2.jpg Wind1.jpg

                    Vielen Dank für die Hilfe und Unterstüzung

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Fritzk last edited by

                      @fritzk sagte: So schauts jetzt aus. Hab jetzt den code von . @paul53 ....in der Javascript Funktion gepackt.

                      Das ist falsch: Der gezeigte Code ist das komplette Javascript inkl. Trigger. Also ohne Blockly!

                      1 Reply Last reply Reply Quote 0
                      • F
                        Fritzk last edited by

                        Achso okay. Habs jetzt geändert und als reines Javascript laufen.

                        Danke

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        457
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        5
                        10
                        461
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo