Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Abfrage mit Axios

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

Abfrage mit Axios

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
25 Beiträge 6 Kommentatoren 2.7k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • cashC cash

    @hwiedermann Nur um es deutlich zu machen: Wir sprechen hier über ein Elgato Keylight bzw Keylight air! Habe mittlerweile beide. In Javascript nutze ich aber nur die Air. Ich habe mir ein paar Datenpunkte angelegt. Diese lasse ich synchronisieren, d. h. ich lasse alle x Minuten (ich glaube 30 Minuten) die Daten abfragen. Damit ioBroker auch mitbekommt falls die Lampe per App gesteuert wird. Was ich aber eher selten mache und deshalb die 30 Minuten ok fand. Ich will halt das System nicht unnötig belasten. Theoretisch kann man das vermutlich im Sekunden bereich machen.
    Ich kann nun die Lampe entweder mit ioBroker schalten oder mit der App am Mac, iphone oder ipad. Ich kann per ioBroker alles so einstellen wie in der App. Also hell, dunkel, Lichtfarbe oder eiinfach einschalten (was dann die gleichen Werte sind wie beim letzten ausschalten. Mehr oder weniger ist die Lösung ja hier im Thread vermerkt. Alles andere ist nur noch etwas feinarbeit…

    H Offline
    H Offline
    hwiedermann
    schrieb am zuletzt editiert von
    #14

    @cash jau damit hast du genau das, was ich auch möchte.
    ich bekomme das script aber bei mir nicht zum laufen, weil es vermutlich völlig an basics mangelt.
    ich habe es kopiert, als JS eingefügt und die IP angepasst.
    script gestartet.
    es passiert nix
    erst gab es noch nen complie error, habe dann via NPM axios nach installiert.

    dennoch tut sich nix.

    könntest du es bitte vllt. noch etwas "dümmer-freundlicher" erklären? Danke für deine Hilfe.
    Wenn du die Elgatos hast, bist du Streamer? Hast du doch schon mit dem Websocket von OBS mal befasst?

    cashC 1 Antwort Letzte Antwort
    0
    • H hwiedermann

      @cash jau damit hast du genau das, was ich auch möchte.
      ich bekomme das script aber bei mir nicht zum laufen, weil es vermutlich völlig an basics mangelt.
      ich habe es kopiert, als JS eingefügt und die IP angepasst.
      script gestartet.
      es passiert nix
      erst gab es noch nen complie error, habe dann via NPM axios nach installiert.

      dennoch tut sich nix.

      könntest du es bitte vllt. noch etwas "dümmer-freundlicher" erklären? Danke für deine Hilfe.
      Wenn du die Elgatos hast, bist du Streamer? Hast du doch schon mit dem Websocket von OBS mal befasst?

      cashC Offline
      cashC Offline
      cash
      Most Active
      schrieb am zuletzt editiert von
      #15

      @hwiedermann Bitte mal in Zeile 1 ein looging = true; und in 2 debugging = true;

      Danach sollte Du im Log etwas sehen

      Habe mich zwar mit OBS etwas beschäftigt. Mehr aber auch nicht. Bin kein Streamer nur ein Spielkind der sich mit technischen Quatsch beschäftigt :-) Nutze die Air hauptsächlich als Homeofficelampe, die halt automatisch geschaltet wird wenn ich arbeiten muss. Zusammen mit dem Keylight kann ich beides aber auch als Videolicht nutzen für Meetings.

      Die Frage ist halt was Du willst. GGf wäre sonst eine Bashdatei einfacher für Dich. Etwas javscript Kenntnisse sollten schon vorhanden sein für die Lösung. Schreib mal was Du genau willst dann schauen wir weiter. Und wichtig Log-Ausgabe

      H 1 Antwort Letzte Antwort
      0
      • cashC cash

        @hwiedermann Bitte mal in Zeile 1 ein looging = true; und in 2 debugging = true;

        Danach sollte Du im Log etwas sehen

        Habe mich zwar mit OBS etwas beschäftigt. Mehr aber auch nicht. Bin kein Streamer nur ein Spielkind der sich mit technischen Quatsch beschäftigt :-) Nutze die Air hauptsächlich als Homeofficelampe, die halt automatisch geschaltet wird wenn ich arbeiten muss. Zusammen mit dem Keylight kann ich beides aber auch als Videolicht nutzen für Meetings.

        Die Frage ist halt was Du willst. GGf wäre sonst eine Bashdatei einfacher für Dich. Etwas javscript Kenntnisse sollten schon vorhanden sein für die Lösung. Schreib mal was Du genau willst dann schauen wir weiter. Und wichtig Log-Ausgabe

        H Offline
        H Offline
        hwiedermann
        schrieb am zuletzt editiert von
        #16

        @cash
        mein LOG bleibt nahezu leer.

        93a2ad0a-bfc3-44e3-9bb5-93fd42981057-image.png

        und hier mal das Script

        4e4b1b3f-3769-45fd-baa5-be251659e12b-image.png

        Ich finde den Fehler nicht?!

        Den Rest schreibe ich dir sonst mal via PN.

        cashC 4 Antworten Letzte Antwort
        0
        • H hwiedermann

          @cash
          mein LOG bleibt nahezu leer.

          93a2ad0a-bfc3-44e3-9bb5-93fd42981057-image.png

          und hier mal das Script

          4e4b1b3f-3769-45fd-baa5-be251659e12b-image.png

          Ich finde den Fehler nicht?!

          Den Rest schreibe ich dir sonst mal via PN.

          cashC Offline
          cashC Offline
          cash
          Most Active
          schrieb am zuletzt editiert von
          #17

          @hwiedermann sorry bitte noch ein var jeweils vor logging und debugging…

          1 Antwort Letzte Antwort
          0
          • H hwiedermann

            @cash
            mein LOG bleibt nahezu leer.

            93a2ad0a-bfc3-44e3-9bb5-93fd42981057-image.png

            und hier mal das Script

            4e4b1b3f-3769-45fd-baa5-be251659e12b-image.png

            Ich finde den Fehler nicht?!

            Den Rest schreibe ich dir sonst mal via PN.

            cashC Offline
            cashC Offline
            cash
            Most Active
            schrieb am zuletzt editiert von
            #18

            @hwiedermann was passiert eigentlich wenn Du: http://192.168.178.71:9123/elgato/lights im Browser eingibst? Natürlich IP anpassen. Die IP sollte natürlich fest vergeben werden.

            1 Antwort Letzte Antwort
            0
            • H hwiedermann

              @cash
              mein LOG bleibt nahezu leer.

              93a2ad0a-bfc3-44e3-9bb5-93fd42981057-image.png

              und hier mal das Script

              4e4b1b3f-3769-45fd-baa5-be251659e12b-image.png

              Ich finde den Fehler nicht?!

              Den Rest schreibe ich dir sonst mal via PN.

              cashC Offline
              cashC Offline
              cash
              Most Active
              schrieb am zuletzt editiert von
              #19

              @hwiedermann letzte Anmerkung. Das ist aber nicht das ganze Script oder? Ganz unten fehlt noch was… Sonst wird das Script nicht ausgeführt.

              1 Antwort Letzte Antwort
              0
              • H hwiedermann

                @cash
                mein LOG bleibt nahezu leer.

                93a2ad0a-bfc3-44e3-9bb5-93fd42981057-image.png

                und hier mal das Script

                4e4b1b3f-3769-45fd-baa5-be251659e12b-image.png

                Ich finde den Fehler nicht?!

                Den Rest schreibe ich dir sonst mal via PN.

                cashC Offline
                cashC Offline
                cash
                Most Active
                schrieb am zuletzt editiert von
                #20

                @hwiedermann ok, das Beispiel zeigt nicht das komplette Script sondern nur einen Ausschnitt. Bitte in die letzte Zeile also hinter } eine neue Zeile und dort noch func_elgato_schalten();

                WestWoodW 1 Antwort Letzte Antwort
                0
                • cashC cash

                  @hwiedermann ok, das Beispiel zeigt nicht das komplette Script sondern nur einen Ausschnitt. Bitte in die letzte Zeile also hinter } eine neue Zeile und dort noch func_elgato_schalten();

                  WestWoodW Offline
                  WestWoodW Offline
                  WestWood
                  schrieb am zuletzt editiert von
                  #21

                  @cash
                  Hi, ich bin durch Zufall auf Deinen Beitrag hier gestoßen und habe mich mal an dem Script versucht.

                  Dank de Hinweise kann ich zwar die Elgato anschalten, jedoch nicht wieder aus.
                  Fehlt hier noch was am Script oder muss ich da irgendetwas anders machen?

                  Ich habe unter JS Skripte einen neuen Javascript eröffnet, die IP Adresse angepasst und in die letzte Zeile dein vorgegebenes func_elgato_schalten();

                  Anschalten geht aber halt nicht wieder aus :)

                  Wäre super, wenn Du mir hier helfen könntest. Danke :)

                  cashC 1 Antwort Letzte Antwort
                  0
                  • WestWoodW WestWood

                    @cash
                    Hi, ich bin durch Zufall auf Deinen Beitrag hier gestoßen und habe mich mal an dem Script versucht.

                    Dank de Hinweise kann ich zwar die Elgato anschalten, jedoch nicht wieder aus.
                    Fehlt hier noch was am Script oder muss ich da irgendetwas anders machen?

                    Ich habe unter JS Skripte einen neuen Javascript eröffnet, die IP Adresse angepasst und in die letzte Zeile dein vorgegebenes func_elgato_schalten();

                    Anschalten geht aber halt nicht wieder aus :)

                    Wäre super, wenn Du mir hier helfen könntest. Danke :)

                    cashC Offline
                    cashC Offline
                    cash
                    Most Active
                    schrieb am zuletzt editiert von
                    #22

                    @andariel Das Script ist nur das Scrpt fürs einschalten. Mein gesamtes Script ist etwas umfangreicher.

                    Beim ausschalten muss Du eine neue Function anlegen.

                    data: {
                                        
                                        "lights":[{"on":0}],
                                        "numberOfLights":1
                                    },
                    

                    und diesen Teil einfügen. Das on: 0 ist der große Unterschied. Beim einschalten steht dort statt der 0 eine 1...

                    WestWoodW 1 Antwort Letzte Antwort
                    0
                    • cashC cash

                      @andariel Das Script ist nur das Scrpt fürs einschalten. Mein gesamtes Script ist etwas umfangreicher.

                      Beim ausschalten muss Du eine neue Function anlegen.

                      data: {
                                          
                                          "lights":[{"on":0}],
                                          "numberOfLights":1
                                      },
                      

                      und diesen Teil einfügen. Das on: 0 ist der große Unterschied. Beim einschalten steht dort statt der 0 eine 1...

                      WestWoodW Offline
                      WestWoodW Offline
                      WestWood
                      schrieb am zuletzt editiert von WestWood
                      #23

                      @cash
                      Danke für Deine Antwort.
                      Da hätte ich ja auch mal drauf kommen können :dog:
                      VG

                      1 Antwort Letzte Antwort
                      0
                      • L Offline
                        L Offline
                        LePremier
                        schrieb am zuletzt editiert von
                        #24

                        @cash Cool, funktioniert wunderbar! Vielen Dank dafür.

                        Als Anpassung habe ich zusätzlich Variablen für <command>, <bright> und <temp> eingeführt.

                        In meinem Setup wird Deine Funktion selbst nun ausgelöst, sobald sich bei mir der Wert des ioBroker Objects "CustomDevices.KeyLight.On" ändert. Je nach Wert (true oder false) wird die Funktion dann mit <command> = 1 bzw. <command> = 0 gestartet. Zusätzlich werden auch die gerade in den Objekten "CustomDevices.KeyLight.Brightness" und "CustomDevices.KeyLight.Temperature" hinterlegten Werte ausgelesen, in <bright> bzw. <temp> geschrieben und an Deine (entsprechend erweiterte) Funktion übergeben.

                        Im nächsten Schritt werde ich noch die Definition verschiedener Szenen einbauen.

                        Mein bisheriger Code (zum Teil in Blockly erstellt) sieht so aus:

                        var command, bright, temp;
                        
                        // Beschreibe diese Funktion …
                        async function SwitchLight(command, bright, temp) {
                            var logging = false;
                            var debugging = false;
                            function func_elgato_schalten(){
                                const axios = require('axios');
                                axios({
                                    method: 'put',
                                    baseURL: 'http://192.168.178.183:9123/elgato/lights',
                                    headers: {'Content-Type':'application/x-www-form-urlencoded'} ,    
                                    data: {
                                            "lights":[{"brightness":bright,"temperature":temp,"on":command}],
                                            "numberOfLights":1
                                        },
                                    timeout: 4500,
                                    responseType: 'json'
                                 })
                                 .then((response) => {
                                                       
                                    if(debugging){
                                        console.log('data:' +response.data);
                                        console.log('Status: ' +response.status);
                                        console.log('Header:' +response.headers);
                                    }
                                    if(response.status = 200){
                                        //Umwandeln in String
                                        var data_string = JSON.stringify(response.data)
                                        //1. Split
                                        var data_split= data_string.split("{");
                                        //Unnötige Sachen entfernen
                                        var data_replace = data_split[2].replace(/}|,|]|:/gi,'');
                                        //mit 2. Split zum Ergebnis
                                        var data_final = data_replace.split('"');
                                        //Ergebnisse
                                        var _Status = parseInt(data_final[2],10);
                                        var _Helligkeit = parseInt(data_final[4],10);
                                        var _Temperatur = parseInt(data_final[6],10);
                                        
                                        if(_Status == 1){
                                            if(logging){
                                                log('Elgato Key light air ist eingeschaltet');
                                                log('Helligkeit: '+_Helligkeit +' --- Temperatur: '+_Temperatur);
                                            
                                            }
                                        }
                                        else{
                                            if(logging){
                                                log('Elgato Key light air ist ausgeschaltet');
                                                //log('Helligkeit: '+_Helligkeit +' --- Temperatur: '+_Temperatur);
                                            }
                             
                                        }
                                        if(debugging){
                                            log('Status: '+_Status);
                                            log('Helligkeit: '+_Helligkeit);
                                            log('Temperatur: '+_Temperatur);
                                        
                                        }
                                    }
                                    else{
                                        if(logging){
                                            log('Hier stimmt etwas nicht. Elgato Key Light air Meldung: '+response.status)
                                        }
                                    } 
                             
                                                        
                             
                                })
                                .catch(
                                    (error) => {
                                        // handle error
                                        log('Fehler bei der Abfrage der Elgator Key Light air: '+error,'warn');
                                        if (error.response) {
                                        // The request was made and the server responded with a status code
                                        // that falls out of the range of 2xx
                                            log(error.response.data);
                                            log(error.response.status);
                                            log(error.response.headers);
                                        } 
                                        else if (error.request) {
                                            log('else-if');
                                            // The request was made but no response was received
                                            // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
                                            // http.ClientRequest in node.js
                                            console.log(error.request);
                                        }
                                        else {
                                            // Something happened in setting up the request that triggered an Error
                                            log('else');
                                            log('Error: ' +error);
                                       
                                        }                    
                                    }
                                );
                             
                            }
                            func_elgato_schalten();
                        }
                        
                        
                        on({id: '0_SmartStation.0.CustomDevices.KeyLight.On', change: "ne"}, async function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          if ((obj.state ? obj.state.val : "") == true) {
                            await SwitchLight(1, getState("0_SmartStation.0.CustomDevices.KeyLight.Brightness").val, getState("0_SmartStation.0.CustomDevices.KeyLight.Temperature").val);
                          } else if ((obj.state ? obj.state.val : "") == false) {
                            await SwitchLight(0, getState("0_SmartStation.0.CustomDevices.KeyLight.Brightness").val, getState("0_SmartStation.0.CustomDevices.KeyLight.Temperature").val);
                          }
                        });
                        
                        cashC 1 Antwort Letzte Antwort
                        0
                        • L LePremier

                          @cash Cool, funktioniert wunderbar! Vielen Dank dafür.

                          Als Anpassung habe ich zusätzlich Variablen für <command>, <bright> und <temp> eingeführt.

                          In meinem Setup wird Deine Funktion selbst nun ausgelöst, sobald sich bei mir der Wert des ioBroker Objects "CustomDevices.KeyLight.On" ändert. Je nach Wert (true oder false) wird die Funktion dann mit <command> = 1 bzw. <command> = 0 gestartet. Zusätzlich werden auch die gerade in den Objekten "CustomDevices.KeyLight.Brightness" und "CustomDevices.KeyLight.Temperature" hinterlegten Werte ausgelesen, in <bright> bzw. <temp> geschrieben und an Deine (entsprechend erweiterte) Funktion übergeben.

                          Im nächsten Schritt werde ich noch die Definition verschiedener Szenen einbauen.

                          Mein bisheriger Code (zum Teil in Blockly erstellt) sieht so aus:

                          var command, bright, temp;
                          
                          // Beschreibe diese Funktion …
                          async function SwitchLight(command, bright, temp) {
                              var logging = false;
                              var debugging = false;
                              function func_elgato_schalten(){
                                  const axios = require('axios');
                                  axios({
                                      method: 'put',
                                      baseURL: 'http://192.168.178.183:9123/elgato/lights',
                                      headers: {'Content-Type':'application/x-www-form-urlencoded'} ,    
                                      data: {
                                              "lights":[{"brightness":bright,"temperature":temp,"on":command}],
                                              "numberOfLights":1
                                          },
                                      timeout: 4500,
                                      responseType: 'json'
                                   })
                                   .then((response) => {
                                                         
                                      if(debugging){
                                          console.log('data:' +response.data);
                                          console.log('Status: ' +response.status);
                                          console.log('Header:' +response.headers);
                                      }
                                      if(response.status = 200){
                                          //Umwandeln in String
                                          var data_string = JSON.stringify(response.data)
                                          //1. Split
                                          var data_split= data_string.split("{");
                                          //Unnötige Sachen entfernen
                                          var data_replace = data_split[2].replace(/}|,|]|:/gi,'');
                                          //mit 2. Split zum Ergebnis
                                          var data_final = data_replace.split('"');
                                          //Ergebnisse
                                          var _Status = parseInt(data_final[2],10);
                                          var _Helligkeit = parseInt(data_final[4],10);
                                          var _Temperatur = parseInt(data_final[6],10);
                                          
                                          if(_Status == 1){
                                              if(logging){
                                                  log('Elgato Key light air ist eingeschaltet');
                                                  log('Helligkeit: '+_Helligkeit +' --- Temperatur: '+_Temperatur);
                                              
                                              }
                                          }
                                          else{
                                              if(logging){
                                                  log('Elgato Key light air ist ausgeschaltet');
                                                  //log('Helligkeit: '+_Helligkeit +' --- Temperatur: '+_Temperatur);
                                              }
                               
                                          }
                                          if(debugging){
                                              log('Status: '+_Status);
                                              log('Helligkeit: '+_Helligkeit);
                                              log('Temperatur: '+_Temperatur);
                                          
                                          }
                                      }
                                      else{
                                          if(logging){
                                              log('Hier stimmt etwas nicht. Elgato Key Light air Meldung: '+response.status)
                                          }
                                      } 
                               
                                                          
                               
                                  })
                                  .catch(
                                      (error) => {
                                          // handle error
                                          log('Fehler bei der Abfrage der Elgator Key Light air: '+error,'warn');
                                          if (error.response) {
                                          // The request was made and the server responded with a status code
                                          // that falls out of the range of 2xx
                                              log(error.response.data);
                                              log(error.response.status);
                                              log(error.response.headers);
                                          } 
                                          else if (error.request) {
                                              log('else-if');
                                              // The request was made but no response was received
                                              // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
                                              // http.ClientRequest in node.js
                                              console.log(error.request);
                                          }
                                          else {
                                              // Something happened in setting up the request that triggered an Error
                                              log('else');
                                              log('Error: ' +error);
                                         
                                          }                    
                                      }
                                  );
                               
                              }
                              func_elgato_schalten();
                          }
                          
                          
                          on({id: '0_SmartStation.0.CustomDevices.KeyLight.On', change: "ne"}, async function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            if ((obj.state ? obj.state.val : "") == true) {
                              await SwitchLight(1, getState("0_SmartStation.0.CustomDevices.KeyLight.Brightness").val, getState("0_SmartStation.0.CustomDevices.KeyLight.Temperature").val);
                            } else if ((obj.state ? obj.state.val : "") == false) {
                              await SwitchLight(0, getState("0_SmartStation.0.CustomDevices.KeyLight.Brightness").val, getState("0_SmartStation.0.CustomDevices.KeyLight.Temperature").val);
                            }
                          });
                          
                          cashC Offline
                          cashC Offline
                          cash
                          Most Active
                          schrieb am zuletzt editiert von
                          #25

                          @lepremier So in etwa habe ich es bei mir auch. Allerdings nutze ich keine feste Szenen.

                          1 Antwort Letzte Antwort
                          0
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          858

                          Online

                          32.4k

                          Benutzer

                          81.5k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe