Navigation

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

    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

    Javascript WLED

    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      ioBroker-lover last edited by

      Hallo zusammen,
      ich habe mir ein kleines WLED Skript geschrieben um verschiedene Animationen zu setzen.
      Leider wird der JSONText nicht korrekt übergeben. Ich vermute es hat irgendwas mit dem Parameter der WLED_Garage_Submit() Funktion zu tun. Eventuell wird aus dem JSON Objekt dabei ein String?

      Hab schon recht viel ausprobiert und bin etwas ratlos.
      Wenn ich den "submit" teil in das erste Skript jeweils am Ende jeder Switch-Funktion kopiere, geht alles.

      Eventuell kann mir jemand Hilfestellung geben, der sich mit JS etwas besser auskennt.

      var Parameter
      var JSONTextOutput
      var JSONTextInput
      var JSONText
      
      function WLED_Garage(Parameter){
          switch (Parameter){
              case "Initialization":
              JSONText={
                      "on": true,	
                      "bri": 16,	
                      "transition": 30,
                      "ps": 4
                  }
              WLED_Garage_Submit(JSONText)    
      
              case "Off":
                  JSONText={
                      "on": false
                  }
              WLED_Garage_Submit(JSONText)    
      
          };
      }
      
      function WLED_Garage_Submit(JSONTextInput){
                  var request = require('request');
                  var options = {
                  url: 'http://192.168.178.26/json/state',
                  method: 'POST',
                  json: JSONTextInput
                  };
      
                  request(options, function (error, response, body) {
                      if (!error && response.statusCode == 200) {
                          console.log(body.id) // Print the shortened url.
                      }
                  });
      }
      
      paul53 D 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @ioBroker-lover last edited by paul53

        @iobroker-lover sagte: Eventuell wird aus dem JSON Objekt dabei ein String?

        Nein, JSON ist immer ein String. Vermutlich muss aus dem Objekt ein JSON gemacht werden?

                WLED_Garage_Submit(JSON.stringify(JSONText));    
        

        Dein JSONText ist kein JSON, sondern ein Objekt.

        1 Reply Last reply Reply Quote 1
        • arteck
          arteck Developer Most Active last edited by

          und nutze axios anstatt request

          I 1 Reply Last reply Reply Quote 0
          • D
            Dragon @ioBroker-lover last edited by

            @iobroker-lover schau Mal nach dem WLED Adapter. Funktioniert traumhaft!

            1 Reply Last reply Reply Quote 0
            • I
              ioBroker-lover @arteck last edited by

              @arteck

              Ich habe mal auf axios umgestellt. Allerdings ist mein global script irgendwie verbuggt. Kannst du mir sagen wo ich einen Fehler mache?
              Leider finde ich keine richtige Doku zu diesen global scripts. Eventuell mache ich auch einen grundlegenden Fehler.

              var JSONText;
              // Axios importen
              const axios = require('axios').default;
              
              
              //Axios Header setzen.
              let axiosConfig = {
                  headers: {
                      'Content-Type': 'application/json;charset=UTF-8',
                      "Access-Control-Allow-Origin": "*",
                  }
              };
              
              function WLED_Garage(ImportParameter){
                  switch (ImportParameter){
                      case "Initialization":
                      JSONText={
                              "on": true,	
                              "bri": 16,	
                              "transition": 30,
                              "ps": 4
                          };
                      break;
              
                      case "Off":
                          JSONText={
                              "on": false
                          };
                      break;
              
                      case "Spots":
                      JSONText={
                          "on": true,	
                          "bri": 16,	
                          "transition": 20,
                          "ps": 1
                      };
                      break;
              
                      case "Türöffner":
                      JSONText={
                          "on": true,	
                          "bri": 16,	
                          "transition": 20,
                          "ps": 2
                      };
                      break;
              
                      default:
                      JSONText={
                          "on": false
                      };
                  };
              axios.post('http://192.168.178.26/json/state', JSONText, axiosConfig);
              };
              

              Den WLED Adapter habe ich auch drauf, nutze ich jedoch bewusst nicht. Ich arbeite mit unterschiedlichen Segmentierungen und will quasi verschiedene Presets hintereinander aufrufen.
              Beim Adapter kommt er da mit dem Timing durcheinander, da muss ich immer 200ms Pausen zwischen den einzelnen Befehlen lassen, dadurch werden die Skripte so riesig 😕

              arteck 1 Reply Last reply Reply Quote 0
              • arteck
                arteck Developer Most Active @ioBroker-lover last edited by

                @iobroker-lover sagte in Javascript WLED:

                zu diesen global scripts

                global script bedeutet im iobroker dass dieser VOR jedem anderen script eingefügt wird.. nicht meher

                ersetze

                const axios = require('axios').default;
                

                durch

                const axios = require('axios');
                axios.defaults.timeout = 5000;   // timeout 5 sec
                

                ansonsten kannst den rest stehen lassen

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

                Support us

                ioBroker
                Community Adapters
                Donate

                858
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                4
                6
                429
                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