Navigation

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

    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

    Abfrage mit Axios

    This topic has been deleted. Only users with topic management privileges can see it.
    • cash
      cash Most Active @hwiedermann last edited by

      @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 Reply Last reply Reply Quote 0
      • H
        hwiedermann @cash last edited by

        @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.

        cash 4 Replies Last reply Reply Quote 0
        • cash
          cash Most Active @hwiedermann last edited by

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

          1 Reply Last reply Reply Quote 0
          • cash
            cash Most Active @hwiedermann last edited by

            @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 Reply Last reply Reply Quote 0
            • cash
              cash Most Active @hwiedermann last edited by

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

              1 Reply Last reply Reply Quote 0
              • cash
                cash Most Active @hwiedermann last edited by

                @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();

                WestWood 1 Reply Last reply Reply Quote 0
                • WestWood
                  WestWood @cash last edited by

                  @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 🙂

                  cash 1 Reply Last reply Reply Quote 0
                  • cash
                    cash Most Active @WestWood last edited by

                    @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...

                    WestWood 1 Reply Last reply Reply Quote 0
                    • WestWood
                      WestWood @cash last edited by WestWood

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

                      1 Reply Last reply Reply Quote 0
                      • L
                        LePremier last edited by

                        @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);
                          }
                        });
                        
                        cash 1 Reply Last reply Reply Quote 0
                        • cash
                          cash Most Active @LePremier last edited by

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

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          588
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          javascript
                          6
                          25
                          1969
                          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