Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Function Syntax Fehler

    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

    Function Syntax Fehler

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

      Hi Leute,
      ich habe bisher sehr wenig mit dem Javascript Adapter gearbeitet, habe nun allerdings einen Fall wo ich ihn benötige.
      Ich habe folgendes Script geschrieben, das auf Änderungen eines Datenpunktes reagieren soll und den ausgelesenen Wert nutzt, um entweder den einen - oder den anderen Button via Puppeteer zu klicken.

      Leider hab ich direkt bei folgendem Code schon einen Syntax Error:

      function() {
      }
      

      Hier der vollständige Code:

      const puppeteer = require('puppeteer');
      var object = '0_userdata.0.EigeneDatenpunkte.Ladeschalter';
      const host = '192.168.178.60';
      var menu = '';
      var button = '';
      var url = '/';
      
      on({id: object, change: 'ne'}, function()
      {
        console.log('Starting Browser...');
        console.log('URL: ');
        console.log(host+url);
        console.log('Menu element: ');
        console.log(menu);
        button= String(getState(object).val);
        console.log('Button element: ');
        console.log(button);
        (async () => {
          const browser = await puppeteer.launch({args:['--no-sandbox'],executablePath: '/usr/bin/chromium-browser'});
          const page = await browser.newPage();
          await page.goto(host+url);
          await page.waitForNavigation();
          await page.click('[name=menu]');
          await page.waitForNavigation();
          await page.click('[name=button]');
          await page.waitForNavigation();
          console.log('OK...closing Browser');
          await browser.close();
        })();  
      }
      

      Kann mir jemand sagen, wo ich hier auf dem Schlauch stehe?
      Vielen Dank schon mal!

      Aionly

      T Codierknecht 2 Replies Last reply Reply Quote 0
      • T
        ticaki Developer @Aionly last edited by ticaki

        Das hier ist dichter am funktionieren:

        kopiere aber die eingangsvariablen noch drüber.

        on({ id: object,change: 'ne' },async function() {
            log('Starting Browser...');
            log('URL: ');
            log(host+url);
            log('Menu element: ');
            log(menu);
            button=String(getState(object).val);
            log('Button element: ');
            log(button);
        
            const browser = await puppeteer.launch({ args: ['--no-sandbox'],executablePath: '/usr/bin/chromium-browser' });
            const page = await browser.newPage();
            await page.goto(host+url);
            await page.waitForNavigation();
            await page.click('[name=menu]');
            await page.waitForNavigation();
            await page.click('[name=button]');
            await page.waitForNavigation();
            log('OK...closing Browser');
            await browser.close();
        });
        
        1 Reply Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @Aionly last edited by

          @aionly
          Versuch's mal damit (ungetestet)

          on({ id: object, change: 'ne' }, async (obj) => {
              button = obj.val;
              console.log('Starting Browser...');
              console.log('URL: ');
              console.log(host+url);
              console.log('Menu element: ');
              console.log(menu);
              console.log('Button element: ');
              console.log(button);
              const browser = await puppeteer.launch({args:['--no-sandbox'],executablePath: '/usr/bin/chromium-browser'});
              const page = await browser.newPage();
              await page.goto(host+url);
              await page.waitForNavigation();
              await page.click('[name=menu]');
              await page.waitForNavigation();
              await page.click('[name=button]');
              await page.waitForNavigation();
              console.log('OK...closing Browser');
              await browser.close();
          });
          
          T 1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer @Codierknecht last edited by

            @codierknecht
            oh hab ich übersehen, ist object nicht ein reserviertes Wort das man nicht für Variablen nutzen kann?

            Codierknecht 1 Reply Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @ticaki last edited by

              @ticaki sagte in Function Syntax Fehler:

              @codierknecht
              oh hab ich übersehen, ist object nicht ein reserviertes Wort das man nicht für Variablen nutzen kann?

              Kann gut sein. Sollte man natürlich unbedingt vermeiden und z.B. objectId verwenden.

              T 1 Reply Last reply Reply Quote 0
              • T
                ticaki Developer @Codierknecht last edited by

                @codierknecht

                Nur der vollständigkeithalber object ist kein reserviertes Wort, aber wie du sagst besser nicht verwenden.

                https://www.w3schools.com/js/js_reserved.asp

                OliverIO 1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @ticaki last edited by OliverIO

                  @ticaki sagte in Function Syntax Fehler:

                  object ist kein reserviertes Wort

                  ja, ist es nicht.
                  man könnte object sogar etwas zuweisen
                  wenn man allerdings das mit einem große O schreibt wirds lustig.
                  dann bleibt von javascript nicht mehr viel übrig
                  und beim 3. explodiert dann javascript wahrscheinlich (hab mich nicht getraut das auszuprobieren) 🙂

                  let object = 123;
                  let Object = 123;
                  Object.prototype.constructor = 123;
                  
                  

                  daher alle Bezeichner, die nach den eingebauten typenbezeichnungen aussehen, lieber nicht verwenden.

                  1 Reply Last reply Reply Quote 0
                  • A
                    Aionly last edited by

                    Vielen Dank für eure Unterstützung, jetzt läuft es !

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    922
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    4
                    8
                    193
                    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