Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Erbitte Hilfe: Request - 9 Zeilen Code

    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

    Erbitte Hilfe: Request - 9 Zeilen Code

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

      Hallo zusammen,

      ich Bitte um Eure Hilfe:

      Nachdem es nun endlich aufgehört hat zu Regnen, habe ich den Pool betriebsbereit gemacht und die im Herbst gestoppten Scripte wieder gestartet. Wie ich nun gelesen habe, ist der request-Befehl bei einem Javascript-Update weggefallen. ==> Ergo das Poolthermometer funktioniert nicht mehr:

      const url = 'http://192.168.16.83/api';
      const idTemp1 = '0_userdata.0.Pool.Wassertemperatur';
      schedule('* * * * *', function() { //every minute
         
          request(url, function(error, response, result) {
              let obj = JSON.parse(result);
              setState(idTemp1,  parseFloat(obj.sensors['0'].value), true);
             
          });
      });
      

      Der darauf hin mir vom Entwickler vorgeschlagene (und von mir leicht angepasste) Code liefert zwar in den Datenpunkt, jedoch keinen Temperaturwert, sondern "(null)":

      const axios = require('axios');
      
      const url = 'http://192.168.16.83/api';
      const idTemp1 = '0_userdata.0.Pool.Wassertemperatur';
      // const idTemp2 = '0_userdata.0.Temp2IoT.Temperatur_Ambi';
       
      
      schedule('* * * * *', async function() { //every minute
          try
          {
              let response = await axios.get(url);
              let obj = response.data;
              setState(idTemp1,  parseFloat(obj.sensors['0'].Value), true);
            //  setState(idTemp2,  parseFloat(obj.sensors['1'].Value), true);
          }
          catch (error)
          {
              log(exMsg, 'error');
          }
      });
      

      Ich danke für´s Lesen und Eure Hilfe!

      LG S.

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

        @rotamint said in Erbitte Hilfe: Request - 9 Zeilen Code:

            let obj = response.data;
        

        füge mal zwischen zweile 12 und 13 folgende zeilen ein

        console.log(JSON.parse(response.data));
        obj=JSON.parse(response.data);
        

        wenn du das dann im javascript adapter laufen lässt, schalte in der skript-ansicht oben rechts im käfersymbol noch debug und verbose an.
        dann sieht man in der console etwas mehr.

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

          @oliverio Danke für Deine Hilfe!

          Die Fehlermeldung bleibt der gleiche und es gibt keinen zusätzlichen Logeintrag...

          javascript.0
          	2024-07-18 07:09:22.116	info	Stopping script script.js.common.Pool.Skript_1
          javascript.0
          	2024-07-18 07:09:00.148	error	at processTicksAndRejections (node:internal/process/task_queues:95:5)
          javascript.0
          	2024-07-18 07:09:00.148	error	at Object.<anonymous> (script.js.common.Pool.Skript_1:23:13)
          javascript.0
          	2024-07-18 07:09:00.147	error	script.js.common.Pool.Skript_1: ReferenceError: exMsg is not defined
          javascript.0
          	2024-07-18 07:08:03.290	info	script.js.common.Pool.Skript_1: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
          javascript.0
          	2024-07-18 07:08:03.290	info	script.js.common.Pool.Skript_1: schedule(cron=* * * * *)
          javascript.0
          	2024-07-18 07:08:03.251	info	Start JavaScript script.js.common.Pool.Skript_1 (Javascript/js)
          
          arteck 1 Reply Last reply Reply Quote 0
          • arteck
            arteck Developer Most Active @rotamint last edited by arteck

            @rotamint sagte in Erbitte Hilfe: Request - 9 Zeilen Code:

            script.js.common.Pool.Skript_1:23:13)

            das kann nicht oder du postetst nicht alles

            code Ziele 23 ist nicht da in deinem Post

            const url = 'http://192.168.16.83/api';
            
            httpGet(url, { timeout: 5000, responseType: 'text' }, async (err, response) => {
                    if (err) {
                        console.error(err);
                    } else {
                   const jsonData  = JSON.parse(response.data);
                    console.log(JSON.stringify(jsonData));
            });
            

            was ist damit... ohne cron ohne nix.. einfach nur so ...

            R 1 Reply Last reply Reply Quote 0
            • R
              rotamint @arteck last edited by rotamint

              @arteck sagte in Erbitte Hilfe: Request - 9 Zeilen Code:

              @rotamint sagte in Erbitte Hilfe: Request - 9 Zeilen Code:

              script.js.common.Pool.Skript_1:23:13)

              das kann nicht oder du postetst nicht alles

              code Ziele 23 ist nicht da in deinem Post

              Entschuldige, klar. Hier nochmals:

              const axios = require('axios');
              
              const url = 'http://192.168.16.83/api';
              const idTemp1 = '0_userdata.0.Pool.Wassertemperatur';
              // const idTemp2 = '0_userdata.0.Temp2IoT.Temperatur_Ambi';
               
              
              schedule('* * * * *', async function() { //every minute
                  try
                  {
                      let response = await axios.get(url);
                      let obj = response.data;
              
              console.log(JSON.parse(response.data));
              obj=JSON.parse(response.data);
              
                      setState(idTemp1,  parseFloat(obj.sensors['0'].Value), true);
                    //  setState(idTemp2,  parseFloat(obj.sensors['1'].Value), true);
                  }
                  catch (error)
                  {
                      log(exMsg, 'error');
                  }
              });
              
              const url = 'http://192.168.16.83/api';
              
              httpGet(url, { timeout: 5000, responseType: 'text' }, async (err, response) => {
                      if (err) {
                          console.error(err);
                      } else {
                     const jsonData  = JSON.parse(response.data);
                      console.log(JSON.stringify(jsonData));
              });
              

              was ist damit... ohne cron ohne nix.. einfach nur so ...

              Ausgabe zu Deinem Vorschlag:

              javascript.0
              	2024-07-18 07:34:44.254	error	at processImmediate (node:internal/timers:478:21)
              javascript.0
              	2024-07-18 07:34:44.254	error	at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1688:17)
              javascript.0
              	2024-07-18 07:34:44.253	error	at /opt/iobroker/node_modules/iobroker.javascript/main.js:2230:17
              javascript.0
              	2024-07-18 07:34:44.253	error	at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2132:37)
              javascript.0
              	2024-07-18 07:34:44.253	error	at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1866:21)
              javascript.0
              	2024-07-18 07:34:44.253	error	at new Script (node:vm:99:7)
              javascript.0
              	2024-07-18 07:34:44.253	error	SyntaxError: Unexpected token ')'
              javascript.0
              	2024-07-18 07:34:44.253	error	^
              javascript.0
              	2024-07-18 07:34:44.253	error	});
              javascript.0
              	2024-07-18 07:34:44.252	error	script.js.common.Pool.Skript_1_Test compile failed: at script.js.common.Pool.Skript_1_Test:18
              javascript.0
              	2024-07-18 07:34:44.250	info	Start JavaScript script.js.common.Pool.Skript_1_Test (Javascript/js)
              
              arteck 1 Reply Last reply Reply Quote 0
              • arteck
                arteck Developer Most Active @rotamint last edited by arteck

                @rotamint hab ne klammer vergessen

                const url = 'http://192.168.16.83/api';
                
                httpGet(url, { timeout: 5000, responseType: 'text' }, async (err, response) => {
                    if (err) {
                        console.error(err);
                    } else {
                        const jsonData  = JSON.parse(response.data);
                        console.log(JSON.stringify(jsonData));
                    }
                });
                

                sollte tun

                ansonsten

                http://192.168.16.83/api
                

                im browser aufrufen und screenshot posten von der ausgabe

                R 1 Reply Last reply Reply Quote 0
                • R
                  rotamint @arteck last edited by rotamint

                  @arteck sagte in Erbitte Hilfe: Request - 9 Zeilen Code:

                  @rotamint hab ne klammer vergessen

                  const url = 'http://192.168.16.83/api';
                  
                  httpGet(url, { timeout: 5000, responseType: 'text' }, async (err, response) => {
                      if (err) {
                          console.error(err);
                      } else {
                          const jsonData  = JSON.parse(response.data);
                          console.log(JSON.stringify(jsonData));
                      }
                  });
                  

                  sollte tun

                  DANKE:

                  javascript.0
                  	2024-07-18 08:37:19.097	info	script.js.common.Pool.Skript_1_Test: {"systemname":"Poolthermometer","secure_counter":24127,"firmware":"2.3.05-b","sensors":[{"name":"Wassertemperatur","value":21.75,"mean-1":{"value":21.78437,"count":60,"period":3600},"mean-24":{"value":22.79323,"count":1440,"period":86400},"unit":"Celsius","time":"Thu Jul 18 08:37:18 2024"}]}
                  javascript.0
                  	2024-07-18 08:37:18.779	info	script.js.common.Pool.Skript_1_Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                  javascript.0
                  	2024-07-18 08:37:18.746	info	Start JavaScript script.js.common.Pool.Skript_1_Test (Javascript/js)
                  

                  ansonsten

                  http://192.168.16.83/api
                  

                  im browser aufrufen und screenshot posten von der ausgabe

                  Vorschlag von oben liefert Daten, trotzdem zusätzlich anbei:

                  {
                  
                    "systemname": "Poolthermometer",
                  
                    "secure_counter": 24112,
                  
                    "firmware": "2.3.05-b",
                  
                    "sensors": [
                  
                      {
                  
                        "name": "Wassertemperatur",
                  
                        "value": 21.75,
                  
                        "mean-1": {
                  
                          "value": 21.78542,
                  
                          "count": 60,
                  
                          "period": 3600
                  
                        },
                  
                        "mean-24": {
                  
                          "value": 22.79371,
                  
                          "count": 1440,
                  
                          "period": 86400
                  
                        },
                  
                        "unit": "Celsius",
                  
                        "time": "Thu Jul 18 08:36:03 2024"
                  
                      }
                  
                    ]
                  
                  }
                  
                  1 Reply Last reply Reply Quote 0
                  • R
                    rotamint last edited by

                    … ein höfliches „up“ zum Wochenende … 👌

                    1 Reply Last reply Reply Quote 0
                    • R
                      rotamint last edited by

                      Es darf nicht catch (error), sondern muss catch (exMsg) heissen. Problem gelöst.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      691
                      Online

                      31.7k
                      Users

                      79.9k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      452
                      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