Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. anonymous warning – finde das Problem nicht

    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

    anonymous warning – finde das Problem nicht

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

      Hello,

      ich bekomme bei meinem Script die Warnung:

      16:03:19.589	info	javascript.0 (8354) script.js.Production.Dachfenster: Rolladen javascript.0.Velux.og_bad. Klick auf STOP
      16:03:19.602	warn	javascript.0 (8354) at moveVelux (script.js.Production.Dachfenster:288:9)
      16:03:19.602	warn	javascript.0 (8354) at Object.<anonymous> (script.js.Production.Dachfenster:390:9)
      

      an der Stelle steht

          if(action == "stop"){
              setState(idTarget+"lastaction_time", time);
              console.log("Rolladen "+idTarget+" Klick auf STOP");
              setState(getState(idTarget+"stop").val, "true");    // Zeile 288
          }
      

      Logisch, hab ich bestimmt einen Fehler beim Anlegen des State gemacht...

          createState("javascript.0.Velux."+name+".stop", "", {
              "name": "stop",
              "role": "",
              "type": "string",
              "desc": "Speichert den Pfad zum Objekt für die Aktion: stop.",
              "def": "",
              "read": true,
              "write": true
          });
      
      // Inhalt: sonoff.0.DVES_F4D7C4.POWER17
      

      Aber der type ist korrekt als string angelegt...

      Folgend auch nochmal mein komplettes JavaScript:

      const og_empore         = "javascript.0.Velux.og_empore.";
      const og_balkon         = "javascript.0.Velux.og_balkon.";
      const dg_duschefenster  = "javascript.0.Velux.dg_duschefenster.";
      const og_bad            = "javascript.0.Velux.og_bad.";
      const dg_treppe         = "javascript.0.Velux.dg_treppe.";
      const dg_bett           = "javascript.0.Velux.dg_bett.";
      const dg_bad            = "javascript.0.Velux.dg_bad.";
      const dg_dusche         = "javascript.0.Velux.dg_dusche.";
      
      const dr_o = "/vis.0/main/dg_rolladen_open.svg";
      const dr_m = "/vis.0/main/dg_rolladen_middle.svg";
      const dr_c = "/vis.0/main/dg_rolladen_close.svg";
      
      const wr_o = "/vis.0/main/fenster_rolladen_open.svg";
      const wr_m = "/vis.0/main/fenster_rolladen_middle.svg";
      const wr_c = "/vis.0/main/fenster_rolladen_close.svg";
      
      const w_o = "/vis.0/main/dg_window_open.svg";
      const w_m = "/vis.0/main/dg_window_middle.svg";
      const w_c = "/vis.0/main/dg_window_close.svg";
      
      
      function createRolladen_DISABLED(name){
          createState("javascript.0.Velux."+name+".position", "", {
              "name": "position",
              "role": "",
              "type": "number",
              "desc": "Position des Rolladen in % (0% ist offen).",
              "unit": "%",
              "min": 0,
              "max": 100,
              "def": 0,
              "read": true,
              "write": true
          });
          console.log("Objekt close für Rolladen "+name+" erstellt.");
      
          createState("javascript.0.Velux."+name+".target_position", "", {
              "name": "target_position",
              "role": "",
              "type": "number",
              "desc": "Wunsch-Position des Rolladen in % (0% ist offen).",
              "unit": "%",
              "min": 0,
              "max": 100,
              "def": 0,
              "read": true,
              "write": true
          });
          console.log("Objekt target_position für Rolladen "+name+" erstellt.");
      
          createState("javascript.0.Velux."+name+".runtime", 0, {
              "name": "runtime",
              "role": "",
              "type": "number",
              "desc": "Gibt in Sekunden an wie lange der Rolladen für einen kompletten Lauf benötigt ",
              "unit": "s",
              "min": 0,
              "max": 1000,
              "def": 15,
              "read": true,
              "write": true
          });
          console.log("Objekt runtime für Rolladen "+name+" erstellt.");
      
          createState("javascript.0.Velux."+name+".icon", "", {
              "name": "icon",
              "role": "",
              "type": "string",
              "desc": "Speichert den Icon-Namen zur Position.",
              "def": "open",
              "read": true,
              "write": true
          });
          console.log("Objekt icon für Rolladen "+name+" erstellt.");
      
          // Hier muss noch geprüft werden.
          createState("javascript.0.Velux."+name+".deviceType", "", {
              "name": "deviceType",
              "role": "",
              "type": "state",
              "desc": "Speichert den Icon-Namen zur Position.",
              "def": "0",
              "read": true,
              "write": true,
              "states": {
                  "0": "DachRolladen",
                  "1": "FensterRolladen",
                  "2": "Fenster"
              }
          });
          console.log("Objekt deviceType für Device "+name+" erstellt.");
      
          createState("javascript.0.Velux."+name+".open", "", {
              "name": "open",
              "role": "",
              "type": "string",
              "desc": "Speichert den Pfad zum Objekt für die Aktion: open.",
              "def": "",
              "read": true,
              "write": true
          });
          console.log("Objekt open für Rolladen "+name+" erstellt.");
      
          createState("javascript.0.Velux."+name+".stop", "", {
              "name": "stop",
              "role": "",
              "type": "string",
              "desc": "Speichert den Pfad zum Objekt für die Aktion: stop.",
              "def": "",
              "read": true,
              "write": true
          });
          console.log("Objekt stop für Rolladen "+name+" erstellt.");
      
          createState("javascript.0.Velux."+name+".close", "", {
              "name": "close",
              "role": "",
              "type": "string",
              "desc": "Speichert den Pfad zum Objekt für die Aktion: close.",
              "def": "",
              "read": true,
              "write": true
          });
          console.log("Objekt close für Rolladen "+name+" erstellt.");
      
          createState("javascript.0.Velux."+name+".action", "", {
              "name": "action",
              "role": "",
              "type": "string",
              "desc": "Befehl an den Rolladen.",
              "def": false,
              "read": true,
              "write": true
          });
          console.log("Objekt action für Rolladen "+name+" erstellt.");
      
          createState("javascript.0.Velux."+name+".lastaction", "", {
              "name": "lastaction",
              "role": "",
              "type": "string",
              "desc": "Letzter Befehl an den Rolladen.",
              "def": "",
              "read": true,
              "write": true
          });
          console.log("Objekt lastaction für Rolladen "+name+" erstellt.");
      
          createState("javascript.0.Velux."+name+".lastaction_time", "", {
              "name": "lastaction_time",
              "role": "",
              "type": "string",
              "desc": "Zeitpunkt der letzten Änderung.",
              "def": "",
              "read": true,
              "write": true
          });
          console.log("Objekt lastaction_time für Rolladen "+name+" erstellt.");
      }
      
      //createRolladen("og_empore");
      //createRolladen("og_balkon");
      //createRolladen("dg_duschefenster");
      //createRolladen("og_bad");
      //createRolladen("dg_treppe");
      //createRolladen("dg_bett");
      //createRolladen("dg_bad");
      //createRolladen("dg_dusche");
      
      
      /*
      og_empore
      open: sonoff.0.DVES_F4D7C4.POWER1
      stop: sonoff.0.DVES_F4D7C4.POWER2
      close: sonoff.0.DVES_F4D7C4.POWER3
      
      og_balkon
      open: sonoff.0.DVES_F4D7C4.POWER4
      stop: sonoff.0.DVES_F4D7C4.POWER5
      close: sonoff.0.DVES_F4D7C4.POWER6
      
      dg_duschefenster
      open: sonoff.0.DVES_F4D7C4.POWER7
      stop: sonoff.0.DVES_F4D7C4.POWER8
      close: sonoff.0.DVES_F4D7C4.POWER9
      
      og_bad
      open: sonoff.0.DVES_F4D7C4.POWER10
      stop: sonoff.0.DVES_F4D7C4.POWER11
      close: sonoff.0.DVES_F4D7C4.POWER12
      
      og_treppe
      open: sonoff.0.DVES_F4D7C4.POWER13
      stop: sonoff.0.DVES_F4D7C4.POWER14
      close: sonoff.0.DVES_F4D7C4.POWER15
      
      dg_bett
      open: sonoff.0.DVES_F4D7C4.POWER16
      stop: sonoff.0.DVES_F4D7C4.POWER17
      close: sonoff.0.DVES_F4D7C4.POWER18
      
      dg_bad
      open: sonoff.0.DVES_F4D7C4.POWER19
      stop: sonoff.0.DVES_F4D7C4.POWER20
      close: sonoff.0.DVES_F4D7C4.POWER21
      
      dg_dusche
      open: sonoff.0.DVES_F4D7C4.POWER22
      stop: sonoff.0.DVES_F4D7C4.POWER23
      close: sonoff.0.DVES_F4D7C4.POWER24
      */
      
      
      function moveVelux(idTarget, action, target_position){
          var deviceType = getState(idTarget+"deviceType").val;
      
          if(deviceType == 0){ // DachRolladen
              var device_open = dr_o;
              var device_middle = dr_m;
              var device_close = dr_c;
          }
          if(deviceType == 1){ // FensterRolladen
              var device_open = wr_o;
              var device_middle = wr_m;
              var device_close = wr_c;
          }
          if(deviceType == 2){ // Fenster
              var device_open = w_o;
              var device_middle = w_m;
              var device_close = w_c;
          }
          
      
          var oldPosition = getState(idTarget+"position").val;
          // Percent per Second berechnen
          var pps = 100 / getState(idTarget+"runtime").val;
          var seconds;
          // display the current time
          var dateTime = new Date();
          var time = dateTime.toLocaleTimeString();
          //console.log(time);
      
          if(target_position == ""){ // Es wurde keine Ziel-Position geliefert wir gehen einfach in den modus open/stop/close
              setState(idTarget+"lastaction", action);
              // console.log(action + " für das Target "+idTarget+action);
              //console.log("Aktuelle Pos.: "+getState(idTarget+"position").val);
      
              if(action == "open"){
                  // Berechne die Laufzeit bis zum Ziel von 0%
                  seconds = oldPosition / pps;
                  console.log("Das Ding braucht "+seconds+" Sekunden von der aktuellen Pos. bis 0%.");
              }
              if(action == "close"){
                  // Berechne die Laufzeit bis zum Ziel von 100%
                  seconds = (100 - oldPosition) / pps;
                  console.log("Das Ding braucht "+seconds+" Sekunden von der aktuellen Pos. bis 100%.");
              }
              if(action == "stop"){
                  seconds = 0;
              }
          }else{
              // Es wurde eine Ziel-Position übergeben wir ignorieren alles andere.
              console.log("Ziel-Position erkannt: "+target_position);
              if(oldPosition >= target_position){
                  // Rolladen muss Richtung 0% fahren
                  seconds = (oldPosition - target_position) / pps;
                  var action = "open";        
              }else{
                  // Rolladen muss Richtung 100% fahren
                  seconds = (target_position - oldPosition) / pps;
                  var action = "close";
              }
          }
      
          if(action == "open"){
              setState(idTarget+"lastaction_time", time);
              console.log("Rolladen "+idTarget+" Klick auf OPEN");
              setState(getState(idTarget+"open").val, "true");
          }
          if(action == "close"){
              setState(idTarget+"lastaction_time", time);
              console.log("Rolladen "+idTarget+" Klick auf CLOSE");
              setState(getState(idTarget+"close").val, true);
          }
          if(action == "stop"){
              setState(idTarget+"lastaction_time", time);
              console.log("Rolladen "+idTarget+" Klick auf STOP");
              setState(getState(idTarget+"stop").val, "true");
          }
      
          seconds = Math.round(seconds);
          var i = 0;
          var newPosition = oldPosition;
      
          if(action == "open" || action == "close"){
              console.log("Wir starten von Pos. " + newPosition + " und gehen in den Interval.");
              let interval = setInterval(function(){
                  console.log("Noch "+i+"/"+seconds+" Sekunden. newPosition: "+newPosition);
                  i++;
                  if(action == "open"){
                      newPosition = newPosition - pps;
                  }
                  if(action == "close"){
                      newPosition = newPosition + pps;
                  }
                  if(i >= seconds || getState(idTarget+"lastaction").val == "stop"){
                      console.log("####### ENDE #######");
                      console.log("newPosition für "+idTarget+"position = "+Math.round(newPosition));
                      if(target_position != ""){
                          console.log("Rolladen "+idTarget+" Klick auf STOP");
                          setState(getState(idTarget+"stop").val, "true");
                          console.log("Bewegung wegen erreichter target_position gestoppt.");
                      }
                      clearInterval(interval);
                  }
                  if(newPosition >100 || newPosition < 0){ // Irgendwas ist schief gegangen, daher Intervall stoppen.
                      clearInterval(interval);
                  }
                  setState(idTarget+"position", Math.round(newPosition));
                  if(newPosition <= 10){
                      setState(idTarget+"icon",device_open);
                  }
                  if(newPosition > 10 && newPosition < 90 ){
                      setState(idTarget+"icon",device_middle);
                  }
                  if(newPosition >= 90){
                      setState(idTarget+"icon",device_close);
                  }
              }, 1000);
          }
      }
      
      
      // Beobachte alle Velux Geräte auf Wunsch-Ziel-Position-Änderungen
      on(og_bad+"target_position", function(obj) {  
          var target_position = getState(og_bad+"target_position").val;
          wait(500);
          console.log("Wir gehen in den TargetModus mit: "+target_position);
          moveVelux(og_bad, "", target_position);
      });
      on(og_empore+"target_position", function(obj) {  
          var target_position = getState(og_empore+"target_position").val;
          wait(500);
          console.log("Wir gehen in den TargetModus mit: "+target_position);
          moveVelux(og_empore, "", target_position);
      });
      on(og_balkon+"target_position", function(obj) {  
          var target_position = getState(og_balkon+"target_position").val;
          wait(500);
          console.log("Wir gehen in den TargetModus mit: "+target_position);
          moveVelux(og_balkon, "", target_position);
      });
      on(dg_treppe+"target_position", function(obj) {  
          var target_position = getState(dg_treppe+"target_position").val;
          wait(500);
          console.log("Wir gehen in den TargetModus mit: "+target_position);
          moveVelux(dg_treppe, "", target_position);
      });
      on(dg_bett+"target_position", function(obj) {  
          var target_position = getState(dg_bett+"target_position").val;
          wait(500);
          console.log("Wir gehen in den TargetModus mit: "+target_position);
          moveVelux(dg_bett, "", target_position);
      });
      on(dg_bad+"target_position", function(obj) {  
          var target_position = getState(dg_bad+"target_position").val;
          wait(500);
          console.log("Wir gehen in den TargetModus mit: "+target_position);
          moveVelux(dg_bad, "", target_position);
      });
      on(dg_dusche+"target_position", function(obj) {  
          var target_position = getState(dg_dusche+"target_position").val;
          wait(500);
          console.log("Wir gehen in den TargetModus mit: "+target_position);
          moveVelux(dg_dusche, "", target_position);
      });
      on(dg_duschefenster+"target_position", function(obj) {  
          var target_position = getState(dg_duschefenster+"target_position").val;
          wait(500);
          console.log("Wir gehen in den TargetModus mit: "+target_position);
          moveVelux(dg_duschefenster, "", target_position);
      });
      
      // Beobachte alle Velux Geräte auf Wunsch-Action-Änderungen
      on(og_bad+"action", function(obj) {  
          var action = getState(og_bad+"action").val;
          setState(og_bad+"action", "");
          wait(500);
          if( action == "open" || action == "close" || action == "stop" ){ 
              console.log("moveVelux mit der action: "+action);
              moveVelux(og_bad, action,"");
          } 
      });
      on(og_empore+"action", function(obj) {  
          var action = getState(og_empore+"action").val;
          setState(og_empore+"action", "");
          wait(500);
          if( action == "open" || action == "close" || action == "stop" ){ 
              console.log("moveVelux mit der action: "+action);
              moveVelux(og_empore, action,"");
          } 
      });
      on(og_balkon+"action", function(obj) {  
          var action = getState(og_balkon+"action").val;
          setState(og_balkon+"action", "");
          wait(500);
          if( action == "open" || action == "close" || action == "stop" ){ 
              console.log("moveVelux mit der action: "+action);
              moveVelux(og_balkon, action,"");
          } 
      });
      on(dg_treppe+"action", function(obj) {  
          var action = getState(dg_treppe+"action").val;
          setState(dg_treppe+"action", "");
          wait(500);
          if( action == "open" || action == "close" || action == "stop" ){ 
              console.log("moveVelux mit der action: "+action);
              moveVelux(dg_treppe, action, "");
          } 
      });
      on(dg_bett+"action", function(obj) {  
          var action = getState(dg_bett+"action").val;
          setState(dg_bett+"action", "");
          wait(500);
          if( action == "open" || action == "close" || action == "stop" ){ 
              console.log("moveVelux mit der action: "+action);
              moveVelux(dg_bett, action,"");
          } 
      });
      on(dg_bad+"action", function(obj) {  
          var action = getState(dg_bad+"action").val;
          setState(dg_bad+"action", "");
          wait(500);
          if( action == "open" || action == "close" || action == "stop" ){ 
              console.log("moveVelux mit der action: "+action);
              moveVelux(dg_bad, action,"");
          } 
      });
      on(dg_dusche+"action", function(obj) {  
          var action = getState(dg_dusche+"action").val;
          setState(dg_dusche+"action","");
          wait(500);
          if( action == "open" || action == "close" || action == "stop" ){ 
              console.log("moveVelux mit der action: "+action);
              moveVelux(dg_dusche, action,"");
          } 
      });
      on(dg_duschefenster+"action", function(obj) {  
          var action = getState(dg_duschefenster+"action").val;
          setState(dg_duschefenster+"action", "");
          wait(500);
          if( action == "open" || action == "close" || action == "stop" ){ 
              console.log("moveVelux mit der action: "+action);
              moveVelux(dg_duschefenster, action,"");
          } 
      });
      

      Würde mich freuen, wenn jemand einen Tipp für mich hat.

      VG!

      Homoran paul53 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @tristan last edited by

        @tristan sagte in anonymous warning – finde das Problem nicht:

        ich bekomme bei meinem Script die Warnung:

        bitte alles zeigen!
        da fehlt die Zeile mit dem Error.
        Die muss davor gewesen sein

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @tristan last edited by paul53

          @tristan sagte: setState(getState(idTarget+"stop").val, "true");

          Man muss die ID übergeben, nicht den eingelesenen Wert:

                  setState(idTarget+"stop", "true");
          

          oder ist der Inhalt des Datenpunktes die ID?

          T 1 Reply Last reply Reply Quote 0
          • T
            tristan @paul53 last edited by tristan

            Also die "ganze" Zeile der Warnung lautet:

            16:03:19.589	info	javascript.0 (8354) script.js.Production.Dachfenster: Rolladen javascript.0.Velux.og_bad. Klick auf STOP
            16:03:19.602	warn	javascript.0 (8354) at moveVelux (script.js.Production.Dachfenster:288:9)
            16:03:19.602	warn	javascript.0 (8354) at Object.<anonymous> (script.js.Production.Dachfenster:390:9)
            

            Im on() habe ich den Aufruf der function

            moveVelux(og_bad, action,"");
            

            Ich übergebe die const der Ziel-ID (og_bad) mit dem String "javascript.0.Velux.og_bad." und die var "action" in der der String "stop" steht. Das dritte Argument ist hier leer.

            In meiner function

            function moveVelux(idTarget, action, target_position){
            //...
            // andere Sachen
            //...
            
                if(action == "stop"){
                    setState(idTarget+"lastaction_time", time);
                    console.log("Rolladen "+idTarget+" Klick auf STOP");
                    setState(getState(idTarget+"stop").val, "true");
                }
            

            Ausformuliert wird daraus getState("javascript.0.Velux.og_bad.stop").val was mir sonoff.0.DVES_F4D7C4.POWER11 liefert, das auf true gesetzt wird – was auch funktioniert. Aber irgendwo scheint ihm ein Format nicht zu passen, oder so.

            Am Ende macht die Zeile folgendes:

            setState("sonoff.0.DVES_F4D7C4.POWER11", true); 
            

            VG!

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @tristan last edited by paul53

              @tristan sagte: Ausformuliert wird daraus getState("javascript.0.Velux.og_bad.stop").val

              at Object.<anonymous>

              deutet darauf hin, dass der Datenpunkt "javascript.0.Velux.og_bad.stop" keinen Zustand hat.

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

                @paul53 sagte in anonymous warning – finde das Problem nicht:

                deutet darauf hin, dass der Datenpunkt "javascript.0.Velux.og_bad.stop" keinen Zustand hat oder nicht existiert.

                @tristan
                Deswegen wollte ich ja den vorausgehenden ERROR sehen , und nicht nur die WARN

                T 1 Reply Last reply Reply Quote 0
                • T
                  tristan @Homoran last edited by

                  Ah! Habs gefunden! Einen vorangegangenen ERROR gab es ja nicht. Das Problem war auch nicht der Datenpunkt javascript.0.Velux.og_bad.stop – dort habe ich auch dauernd gesucht.

                  Mein "Problem" war der Datenpunkt des sonoff, der in og_bad.stop abgelegt war. Der war auf Logikwert gestellt und dann sollte ich natürlich auch ein true oder false senden und nicht ein "true" oder "false". 😄

                  setState("sonoff.0.DVES_F4D7C4.POWER11", true); // LÄUFT ohne WARN
                  
                  setState("sonoff.0.DVES_F4D7C4.POWER11", "true"); // LÄUFT mit WARN
                  

                  Der Wald und die Bäume... 😄

                  VG!

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  909
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  275
                  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