Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. brauche Hilfe nach Update Javascript v8.3.1

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    brauche Hilfe nach Update Javascript v8.3.1

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      kwone last edited by Homoran

      Hallo, nach dem Updateauf v8.3.1 läuft folgender script nicht mehr.
      der Script wurde vor Jahren von einem Bekannten erstellt welchen ich nicht mehr erreichen kann.
      Ich bitte Euch mir zu helfen das folgender Script wieder läuft.

       function iter(name, obj) {
         for(let i in obj) {
            if(typeof obj[i] == 'object') iter(name + '.' + i, obj[i]);
            else {
               log(name + '.' + i + ': ' + obj[i]);
               if(existsState(name + '.' + i)) setState(name + '.' + i, obj[i]);
               else createState(name + '.' + i, obj[i]); // type: "mixed"
            }
         }
      }
       
      function SendRequest(){
          var options = {
              url: 'http://192.168.178.49/AllJsonData',
              qs: {
                  ack: true 
                  
             }      
          };
          request(options, function (error, response, body){
              if (!error) iter('javascript.0.EPever', JSON.parse(body));
              else console.error(error);
          });
      }
       schedule('*/5 * * * * *', SendRequest);
      

      MOD-EDIT: Code in code-tags gesetzt!

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @kwone last edited by Homoran

        @kwone die library request ist schon seit Jahren veraltet und wird nicht mehr gepflegt.
        in 8.3.1 wurde sie nativ nicht mehr unterstützt.
        Dies wurde auch vor dem Start des Updates als PopUp so angezeigt.

        Du musst jetzt request durch httpGet ersetzen
        Dazu gibt es schon etliche Threads.

        ich bin kein Programmierer, aber bei dir müsste es gehen, indem du einfach request gegen httpGet austauschst, das folgende body in der Klammer incl vorangehendrm Komma entfernst, und das body in Zeile 21 JSON.Parse(body)
        Gegen response.data austauschst

        K 2 Replies Last reply Reply Quote 1
        • K
          kwone @Homoran last edited by Homoran

          @homoran sagte in brauche Hilfe nach Update Javascript v8.3.1:

          @kwone die library request ist schon seit Jahren veraltet und wird nicht mehr gepflegt.
          in 8.3.1 wurde sie nativ nicht mehr unterstützt.
          Dies wurde auch vor dem Start des Updates als PopUp so angezeigt.

          Du musst jetzt request durch httpGet ersetzen
          Dazu gibt es schon etliche Threads.

          ich bin kein Programmierer, aber bei dir müsste es gehen, indem du einfach request gegen httpGet austauschst, das folgende body in der Klammer incl vorangehendrm Komma entfernst, und das body in Zeile 21 JSON.Parse(body)
          Gegen response.data austauschst

          Hallo Homoran,
          erstmal danke für deine schnelle antwort.
          leider ist das Problem noch nicht gelöst

          function iter(name, obj) {
             for(let i in obj) {
                if(typeof obj[i] == 'object') iter(name + '.' + i, obj[i]);
                else {
                   log(name + '.' + i + ': ' + obj[i]);
                   if(existsState(name + '.' + i)) setState(name + '.' + i, obj[i]);
                   else createState(name + '.' + i, obj[i]); // type: "mixed"
                }
             }
          }
           
           function SendRequest(){
              var options = {
                  url: 'http://192.168.178.49/AllJsonData',
                  qs: {
                      ack: true 
                      
                 }      
              };
              httpGet(options, function (error, response){
                  if (!error) iter('javascript.0.EPever', JSON.parse(response.data));
                  else console.error(error);
              });
          }
           schedule('*/5 * * * * *', SendRequest);
          

          bringt Fehler :

          javascript.0	11:44:30.002	error	at Object.SendRequest (script.js.common.EPever:21:5)
          

          MOD-EDIT: Code in code-tags gesetzt!

          Homoran haus-automatisierung 2 Replies Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @kwone last edited by

            @kwone sagte in brauche Hilfe nach Update Javascript v8.3.1:

            bringt Fehler :

            da muss dir jetzt ein js-Kundiger helfen, ob da in der Funktion iter noch was versteckt ist

            K 1 Reply Last reply Reply Quote 0
            • K
              kwone @Homoran last edited by

              @homoran OK danke für Deine Hilfe

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

                @kwone sagte in brauche Hilfe nach Update Javascript v8.3.1:

                leider ist das Problem noch nicht gelöst

                Der erste Parameter ist die URL als String und kein Objekt, ...

                function iter(name, obj) {
                   for (let i in obj) {
                      if (typeof obj[i] == 'object') iter(name + '.' + i, obj[i]);
                      else {
                         log(name + '.' + i + ': ' + obj[i]);
                         if (existsState(name + '.' + i)) setState(name + '.' + i, obj[i]);
                         else createState(name + '.' + i, obj[i]); // type: "mixed"
                      }
                   }
                }
                 
                function SendRequest() {
                   httpGet('http://192.168.178.49/AllJsonData', (error, response) => {
                      if (!error) iter('javascript.0.EPever', JSON.parse(response.data));
                      else console.error(error);
                   });
                }
                
                schedule('*/5 * * * * *', SendRequest);
                

                https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/upgrade-guide.md

                https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httpget

                1 Reply Last reply Reply Quote 1
                • Homoran
                  Homoran Global Moderator Administrators @kwone last edited by Homoran

                  @kwone sagte in brauche Hilfe nach Update Javascript v8.3.1:

                  @homoran OK danke für Deine Hilfe

                  gerne, aber ich sehe gerade, dass sich die Meldung auf SendRequest bezieht.

                  ich weiss es natürlich nicht, aber möglicherweise sind die als options für request definierten "Dinge" so nicht für httpGet kompatibel.

                  Wäre schön wenn @haus-automatisierung oder @paul53 dazu was sagen könnte, damit ich auch noch was lerne.

                  EDIT: hat sich überschnitten

                  1 Reply Last reply Reply Quote 0
                  • K
                    kwone @Homoran last edited by

                    @Homoran
                    Hallo nochmals Danke für die Bemühungen.
                    ich konnte de Umstellung des Scripts mit Hilfe von ChatGPT lösen.

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @kwone last edited by

                      @kwone sagte in brauche Hilfe nach Update Javascript v8.3.1:

                      @Homoran
                      Hallo nochmals Danke für die Bemühungen.
                      ich konnte de Umstellung des Scripts mit Hilfe von ChatGPT lösen.

                      und dann belästigst du uns 😂

                      würdest du der Nachwelt auch die Lösung präsentieren, bitte!

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        kwone @Homoran last edited by Homoran

                        @homoran
                        ja sicher hier das funktionierende Script

                         const http = require('http');
                        
                        function iter(name, obj) {
                            for (let i in obj) {
                                if (typeof obj[i] === 'object' && obj[i] !== null) {
                                    iter(name + '.' + i, obj[i]);
                                } else {
                                    log(name + '.' + i + ': ' + obj[i]);
                                    if (existsState(name + '.' + i)) {
                                        setState(name + '.' + i, obj[i]);
                                    } else {
                                        createState(name + '.' + i, obj[i]); // type: "mixed"
                                    }
                                }
                            }
                        }
                        
                        function SendRequest() {
                            const options = {
                                hostname: '192.168.178.49',
                                port: 80,
                                path: '/AllJsonData',
                                method: 'GET',
                            };
                        
                            const req = http.request(options, (resp) => {
                                let data = '';
                        
                                // Ein Datenchunk wurde empfangen.
                                resp.on('data', (chunk) => {
                                    data += chunk;
                                });
                        
                                // Die gesamte Antwort wurde erhalten.
                                resp.on('end', () => {
                                    try {
                                        const jsonData = JSON.parse(data);
                                        iter('javascript.0.EPever', jsonData);
                                    } catch (e) {
                                        console.error('Error parsing JSON:', e);
                                    }
                                });
                            });
                        
                            req.on('error', (err) => {
                                console.error('Error fetching data:', err.message);
                            });
                        
                            req.end();
                        }
                        
                        // Set interval to fetch data every 5 seconds
                        schedule('*/5 * * * * *', SendRequest);
                        

                        MOD-EDIT: Code in code-tags gesetzt!

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

                          @kwone Und warum so kompliziert ...?

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          478
                          Online

                          31.6k
                          Users

                          79.6k
                          Topics

                          1.3m
                          Posts

                          3
                          11
                          401
                          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