Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Umstellung auf "axios"

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Umstellung auf "axios"

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

      Hallo,
      in meinem Skript nutze ich noch "request" viele sprechen jetzt von einer Umstellung auf "axios"
      sollte ich dies auch in meinem Fall umstellen? und was müste ich dafür alles ändern?

       
      function()
      {
      
      var request= require('request');
      request.post({
        url:     'http://xx.xx.xx.xx/daqdata.cgi?key=xxx...xxx',
        encoding: 'latin1'
      }, function(error, response, body){
        if (body) {
            
            var parts = body.split('\n');
      
            var parts_Guntamatic = parts[0];
            setState('Guntamatic_Betrieb_0', parts_Guntamatic, true);
      
            var parts_Guntamatic = parts[1];
            setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true);
      
      usw..........
      
      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @glitzi last edited by

        @glitzi

        Es müsste ungefähr so aussehen.
        bei dem Encoding war ich mir nicht ganz sicher, aber das müsste es sein.
        Ob latin ein gültiger Wert ist weiß ich nicht.

        axios.post('http://xx.xx.xx.xx/daqdata.cgi?key=xxx...xxx', {
            responseEncoding: 'latin'
          })
          .then(function (response) {
            console.log(response);
            if (respnse.data) {
              
              var parts = respnse.data.split('\n');
         
              var parts_Guntamatic = parts[0];
              setState('Guntamatic_Betrieb_0', parts_Guntamatic, true);
         
              var parts_Guntamatic = parts[1];
              setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true);
            })
          .catch(function (error) {
            console.log(error);
          });
        
        SBorg AlCalzone 2 Replies Last reply Reply Quote 0
        • SBorg
          SBorg Forum Testing Most Active @OliverIO last edited by

          @oliverio Psst, ...und für die C&P - Fraktion kaufe ich für 10 Cent noch zwei "o" dazu 😂
          (für die Fraktion die noch die Sesamstrasse kennt...)

          Zeile #6 bis #8

              if (response.data) {
          
                var parts = response.data.split('\n');
          
          OliverIO 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @SBorg last edited by OliverIO

            @sborg
            stimmt.
            die o's waren aber bei meinem nick schon verbraucht

            axios.post('http://xx.xx.xx.xx/daqdata.cgi?key=xxx...xxx', {
                responseEncoding: 'latin'
              })
              .then(function (response) {
                console.log(response);
                if (response.data) {
                  
                  var parts = response.data.split('\n');
             
                  var parts_Guntamatic = parts[0];
                  setState('Guntamatic_Betrieb_0', parts_Guntamatic, true);
             
                  var parts_Guntamatic = parts[1];
                  setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true);
                })
              .catch(function (error) {
                console.log(error);
              });
            

            Aber für die C&P-Fraktion habe ich noch 2 Debug-Zeilen übrig gelassen

            G 1 Reply Last reply Reply Quote 0
            • AlCalzone
              AlCalzone Developer @OliverIO last edited by

              @oliverio sagte in Umstellung auf "axios":

              Ob latin ein gültiger Wert ist weiß ich nicht.

              Laut https://nodejs.org/api/buffer.html#buffers-and-character-encodings müsste das latin1 sein (mit 1 am Ende).

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

                Super DANKE!!!

                nach einer knappen Stunde finde ich den Fehler nicht...

                19:27:04.325	error	javascript.0 (32211) script.js.Guntamatic.Guntamatic_Daten_aus_Http_Seite_Parsen_axios compile failed: at script.js.Guntamatic.Guntamatic_Daten_aus_Http_Seite_Parsen_axios:
                
                
                createState('Guntamatic_Betrieb_0');
                createState('Guntamatic_Aussentemperatur_1');
                createState('Guntamatic_Kesseltemperatur_3');
                createState('Guntamatic_Leistung_5');
                createState('Guntamatic_Rücklauf_6');
                createState('Guntamatic_CO2_Gehalt_8');
                createState('Guntamatic_Puffer_oben_17');
                createState('Guntamatic_Puffer_unten_19');
                createState('Guntamatic_Pumpe_HP0_20');
                createState('Guntamatic_Warmwasser_21');
                createState('Guntamatic_Vorlauf_31');
                createState('Guntamatic_Füllstand_65');
                createState('Guntamatic_Kesselfreigabe_68');
                createState('Guntamatic_Programm_69');
                createState('Guntamatic_Programm_HK1_71');
                createState('Guntamatic_Stoer0_79');
                createState('Guntamatic_Stoer1_80');
                createState('Guntamatic_Asche_entleeren_85');
                createState('Guntamatic_Brennstoffzähler_89');
                createState('Guntamatic_Pufferladung_90');
                createState('Guntamatic_CO2_Gehalt_korrigiert');
                 
                schedule("*/5 * * * * *",
                  
                axios.post('http://10.10.10.7/daqdata.cgi?key=226125AC4E4C9CD8144ABF4CA958AF294A4F', {
                    responseEncoding: 'latin1'
                  })
                  .then(function (response) {
                    console.log(response);
                    
                    if (response.data) {
                      
                      var parts = response.data.split('\n');
                 
                      var parts_Guntamatic = parts[0];
                      setState('Guntamatic_Betrieb_0', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[1];
                      setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[3];
                      setState('Guntamatic_Kesseltemperatur_3', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[5];
                      setState('Guntamatic_Leistung_5', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[6];
                      setState('Guntamatic_Rücklauf_6', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[8];
                      setState('Guntamatic_CO2_Gehalt_8', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[17];
                      setState('Guntamatic_Puffer_oben_17', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[19];
                      setState('Guntamatic_Puffer_unten_19', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[20];
                      setState('Guntamatic_Pumpe_HP0_20', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[21];
                      setState('Guntamatic_Warmwasser_21', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[31];
                      setState('Guntamatic_Vorlauf_31', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[65];
                      setState('Guntamatic_Füllstand_65', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[68];
                      setState('Guntamatic_Kesselfreigabe_68', parts_Guntamatic, true);
                      
                      var parts_Guntamatic = parts[69];
                      setState('Guntamatic_Programm_69', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[71];
                      setState('Guntamatic_Programm_HK1_71', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[79];
                      setState('Guntamatic_Stoer0_79', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[80];
                      setState('Guntamatic_Stoer1_80', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[85];
                      setState('Guntamatic_Asche_entleeren_85', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[89];
                      setState('Guntamatic_Brennstoffzähler_89', parts_Guntamatic, true);
                
                      var parts_Guntamatic = parts[90];
                      setState('Guntamatic_Pufferladung_90', parts_Guntamatic, true);
                
                /*
                CO2 Korrigieren da der Wert im Leerlauf teils 18.00 annimmt.
                parts[5] = Leistung parts[8] = CO2 Gehalt
                */
                
                if (parts[5] == 0) {
                                    setState("Guntamatic_CO2_Gehalt_korrigiert" , 0, true);
                                    } else {
                                            setState("Guntamatic_CO2_Gehalt_korrigiert", parts[8], true)
                                            }
                
                 }
                  }
                
                 .catch(function (error) {
                    console.log(error)
                         });
                
                }); 
                 
                }
                )
                
                OliverIO 1 Reply Last reply Reply Quote -1
                • OliverIO
                  OliverIO @glitzi last edited by

                  @glitzi sagte in Umstellung auf "axios":

                  Viele Fehler
                  https://beautifytools.com/javascript-validator.php
                  beachtet du die Hinweise im Skripteditor nicht?

                  Das korrekte einrücken nicht vergessen. Das erspart schon mal viele Logikfehler. Dem Parser ist es zwar egal, aber du suchst dich dann zu tode wenn die blöcke nicht auf der gleichen Ebene enden wie sie begonnen haben. Manche Editoren können da einem helfen. Einfach den kompletten Text mal dort reinkopieren und die Formatierung/beautyfier drüber laufen lassen.

                  Auch wenn das ; nicht unbedingt notwendig ist, sollte man es immer setzen, da ansonsten der parser manchmal meckert und dann ist es besser immer einheitlich zu bleiben und den Code lesbar zu gestalten
                  https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement
                  Eine Variable sollte nur einmal innerhalb eines Blocks deklariert werden (var)
                  und Klammern sollten in der richtigen Reihenfolge und in der korrekten Anzahl geöffnet und wieder geschlossen werden

                  Line	Col	Errors
                  39	11	'parts_Guntamatic' is already defined.
                  42	11	'parts_Guntamatic' is already defined.
                  45	11	'parts_Guntamatic' is already defined.
                  48	11	'parts_Guntamatic' is already defined.
                  51	11	'parts_Guntamatic' is already defined.
                  54	11	'parts_Guntamatic' is already defined.
                  57	11	'parts_Guntamatic' is already defined.
                  60	11	'parts_Guntamatic' is already defined.
                  63	11	'parts_Guntamatic' is already defined.
                  66	11	'parts_Guntamatic' is already defined.
                  69	11	'parts_Guntamatic' is already defined.
                  72	11	'parts_Guntamatic' is already defined.
                  75	11	'parts_Guntamatic' is already defined.
                  78	11	'parts_Guntamatic' is already defined.
                  81	11	'parts_Guntamatic' is already defined.
                  84	11	'parts_Guntamatic' is already defined.
                  87	11	'parts_Guntamatic' is already defined.
                  90	11	'parts_Guntamatic' is already defined.
                  93	11	'parts_Guntamatic' is already defined.
                  104	89	Missing semicolon.
                  111	23	Missing semicolon.
                  112	12	Expected ')' and instead saw ';'.
                  114	1	Expected ')' and instead saw '}'.
                  114	2	Missing semicolon.
                  114	2	Expected an identifier and instead saw ')'.
                  114	2	Expected an assignment or function call and instead saw an expression.
                  114	3	Unrecoverable syntax error. (96% scanned).
                  
                  coyote G 3 Replies Last reply Reply Quote 0
                  • coyote
                    coyote Most Active @OliverIO last edited by

                    Hallo, ich hänge mich hier einfach mal ran, denke es ist nicht nötig nochmal einen eigenen Thread dafür aufzumachen.
                    Ich habe auch noch ein paar Scripte mit "request", vielleicht kann mir da auch jemand bei der Umstellung auf "axios" helfen?!
                    Hier der Teil des Scripts:

                    var request = require("request");
                    var fs = require('fs');
                    
                    // Speichert das Bild der Haustür bei Posteinwurf
                    function saveImage() {
                    	request.get({
                    			url: source_url,
                    			encoding: 'binary'
                    		}, function(err, response, body) {
                    			fs.writeFile('/tmp/' + 'Postbild.jpg', body, 'binary', function(err) {
                    				if (err) {
                    					log('Fehler beim Bild speichern: ' + err, 'warn');
                    				} else {
                    					log('Webcam Bild gespeichert');
                    				}
                    			})
                    		})
                    // Bilder werden nach vis gespeichert
                    	setTimeout(function() {
                    		const bild1 = fs.readFileSync('/tmp/Postbild.jpg');
                    		writeFile('vis.0', '/Postbild.jpg', bild1);
                    	}, 4000);
                    }
                    
                    1 Reply Last reply Reply Quote 0
                    • G
                      glitzi @OliverIO last edited by

                      @oliverio
                      Danke für die Gute Unterstützung…
                      Leider bin ich hier blutiger Anfänger, kannst du mir das eventuell im Script Kennzeichen?

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

                        ich bin etwas weiter, siehe Antwort...

                        G 1 Reply Last reply Reply Quote 0
                        • bahnuhr
                          bahnuhr Forum Testing Most Active last edited by

                          Hallo,
                          ich muss jetzt auch mal fragen.

                          • warum wird von request auf axios umgestellt?
                          • was ist mit den alten Scripten ?
                          • gibts hier ein todo ?

                          Gibts da irgendwo mehr infos ?

                          Habe ca. 200 Scripte wo ca. bei der Hälfte (geschätzt) request drin ist.

                          Thomas Braun Wal 2 Replies Last reply Reply Quote 0
                          • Thomas Braun
                            Thomas Braun Most Active @bahnuhr last edited by

                            @bahnuhr

                            Weil es nicht mehr gepflegt wird:

                            https://www.npmjs.com/package/request

                            https://github.com/request/request/issues/3142

                            mikeal created this issue in request/request

                            open Request’s Past, Present and Future #3142

                            bahnuhr 1 Reply Last reply Reply Quote 0
                            • bahnuhr
                              bahnuhr Forum Testing Most Active @Thomas Braun last edited by

                              @thomas-braun sagte in Umstellung auf "axios":

                              Weil es nicht mehr gepflegt wird:

                              Und ab wann funktionieren dann meine Scripte nicht mehr ?
                              oder viel wichtiger: Was mun man tun um dies zu ändern ?

                              Thomas Braun 1 Reply Last reply Reply Quote 0
                              • Thomas Braun
                                Thomas Braun Most Active @bahnuhr last edited by Thomas Braun

                                @bahnuhr sagte in Umstellung auf "axios":

                                Und ab wann funktionieren dann meine Scripte nicht mehr ?

                                Vermutlich spätestens dann, wenn request aus nodejs aussortiert wird.
                                Ich vermute, das wird aber ob der breiten Verwendung von request noch lange mitgeschleift werden müssen. Ist ja schon geraume Zeit als 'deprecated' markiert.

                                T 1 Reply Last reply Reply Quote 0
                                • Wal
                                  Wal Developer @bahnuhr last edited by

                                  @bahnuhr sagte in Umstellung auf "axios":

                                  Gibts da irgendwo mehr infos ?

                                  Ja bei google.
                                  Du musst auch nicht axios nehmen, es funktioniert auch http.

                                  bahnuhr 1 Reply Last reply Reply Quote 0
                                  • G
                                    glitzi @glitzi last edited by

                                    @OliverIO
                                    Puhh ich glaube ich bin etwas weiter... trotzdem drehe ich mich irgendwie im Kreis .

                                    16:53:20.267	error	javascript.0 (6088) script.js.Guntamatic.Guntamatic_Daten_aus_Http_Seite_Parsen_axios: schedule callback missing
                                    
                                    createState('Guntamatic_Betrieb_0');
                                    createState('Guntamatic_Aussentemperatur_1');
                                    createState('Guntamatic_Kesseltemperatur_3');
                                    createState('Guntamatic_Leistung_5');
                                    createState('Guntamatic_Rücklauf_6');
                                    createState('Guntamatic_CO2_Gehalt_8');
                                    createState('Guntamatic_Puffer_oben_17');
                                    createState('Guntamatic_Puffer_unten_19');
                                    createState('Guntamatic_Pumpe_HP0_20');
                                    createState('Guntamatic_Warmwasser_21');
                                    createState('Guntamatic_Vorlauf_31');
                                    createState('Guntamatic_Füllstand_65');
                                    createState('Guntamatic_Kesselfreigabe_68');
                                    createState('Guntamatic_Programm_69');
                                    createState('Guntamatic_Programm_HK1_71');
                                    createState('Guntamatic_Stoer0_79');
                                    createState('Guntamatic_Stoer1_80');
                                    createState('Guntamatic_Asche_entleeren_85');
                                    createState('Guntamatic_Brennstoffzähler_89');
                                    createState('Guntamatic_Pufferladung_90');
                                    createState('Guntamatic_CO2_Gehalt_korrigiert');
                                    
                                    const axios=require('axios');
                                    
                                    schedule("*/5 * * * * *",
                                    
                                    	axios.post('http://xx.xx.xx.xx/daqdata.cgi?key=xxxx', {
                                    		responseEncoding: 'latin1'
                                    	})
                                    
                                    	.then(function(response) {
                                    			//console.log(response);
                                    
                                    			if (response.data) {
                                    
                                    				var parts = response.data.split('\n');
                                    
                                    				var parts_Guntamatic = parts[0];
                                    				setState('Guntamatic_Betrieb_0', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[1];
                                    				setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[3];
                                    				setState('Guntamatic_Kesseltemperatur_3', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[5];
                                    				setState('Guntamatic_Leistung_5', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[6];
                                    				setState('Guntamatic_Rücklauf_6', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[8];
                                    				setState('Guntamatic_CO2_Gehalt_8', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[17];
                                    				setState('Guntamatic_Puffer_oben_17', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[19];
                                    				setState('Guntamatic_Puffer_unten_19', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[20];
                                    				setState('Guntamatic_Pumpe_HP0_20', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[21];
                                    				setState('Guntamatic_Warmwasser_21', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[31];
                                    				setState('Guntamatic_Vorlauf_31', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[65];
                                    				setState('Guntamatic_Füllstand_65', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[68];
                                    				setState('Guntamatic_Kesselfreigabe_68', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[69];
                                    				setState('Guntamatic_Programm_69', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[71];
                                    				setState('Guntamatic_Programm_HK1_71', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[79];
                                    				setState('Guntamatic_Stoer0_79', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[80];
                                    				setState('Guntamatic_Stoer1_80', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[85];
                                    				setState('Guntamatic_Asche_entleeren_85', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[89];
                                    				setState('Guntamatic_Brennstoffzähler_89', parts_Guntamatic, true);
                                    
                                    				var parts_Guntamatic = parts[90];
                                    				setState('Guntamatic_Pufferladung_90', parts_Guntamatic, true);
                                    
                                    				/*
                                    				CO2 Korrigieren da der Wert im Leerlauf teils 18.00 annimmt.
                                    				parts[5] = Leistung parts[8] = CO2 Gehalt
                                    				*/
                                    
                                    				if (parts[5] == 0) {
                                    					setState("Guntamatic_CO2_Gehalt_korrigiert", 0, true);
                                    				} else {
                                    					setState("Guntamatic_CO2_Gehalt_korrigiert", parts[8], true);
                                    				}
                                    
                                    			}
                                    		
                                    
                                    
                                        })
                                    
                                    );
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • bahnuhr
                                      bahnuhr Forum Testing Most Active @Wal last edited by

                                      @wal sagte in Umstellung auf "axios":

                                      Du musst auch nicht axios nehmen, es funktioniert auch http.

                                      hast du mal ein Beispiel ?

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

                                        @bahnuhr
                                        das ist aber alles sehr ähnlich.
                                        Noch einfacher geht nicht wirklich

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          tombox @Thomas Braun last edited by tombox

                                          @thomas-braun Ich denke auch mit 50.000 Dependents wird es wohl nie entfernt werden können. Also kann der kleine ioBroker Skripter sich mit der Umstellung noch zeit lassen.
                                          @glitzi
                                          der schedule wird nicht richtig aufgemacht

                                          schedule("*/5 * * * * *", function(){
                                          	axios.post('http://xx.xx.xx.xx/daqdata.cgi?key=xxxx', {
                                          		responseEncoding: 'latin1'
                                          	})
                                          	.then(function(response) {
                                          			//console.log(response);
                                                   })
                                          })
                                          
                                          OliverIO G 2 Replies Last reply Reply Quote 0
                                          • OliverIO
                                            OliverIO @tombox last edited by OliverIO

                                            @tombox
                                            und wenn es aus iobroker entfernt wird, dann lädt man es selbst nach.
                                            es ist ja nicht so das es da sicherheitsbedenken gibt, sonder das die bibliothekt zu ende entwickelt ist.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            580
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            33
                                            1710
                                            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