Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. anonymous warning – finde das Problem nicht

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    770

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

anonymous warning – finde das Problem nicht

Scheduled Pinned Locked Moved JavaScript
7 Posts 3 Posters 576 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    tristan
    wrote on last edited by tristan
    #1

    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!

    HomoranH paul53P 2 Replies Last reply
    0
    • T 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!

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #2

      @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

      kein Support per PN! - Fragen im Forum stellen -
      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Reply Last reply
      0
      • T 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!

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by paul53
        #3

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

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        T 1 Reply Last reply
        0
        • paul53P 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 Offline
          T Offline
          tristan
          wrote on last edited by tristan
          #4

          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!

          paul53P 1 Reply Last reply
          0
          • T 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!

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by paul53
            #5

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

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            HomoranH 1 Reply Last reply
            0
            • paul53P 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.

              HomoranH Do not disturb
              HomoranH Do not disturb
              Homoran
              Global Moderator Administrators
              wrote on last edited by
              #6

              @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

              kein Support per PN! - Fragen im Forum stellen -
              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              T 1 Reply Last reply
              0
              • HomoranH Homoran

                @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 Offline
                T Offline
                tristan
                wrote on last edited by
                #7

                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". :-D

                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... :-D

                VG!

                1 Reply Last reply
                0

                Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                With your input, this post could be even better 💗

                Register Login
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                573

                Online

                32.8k

                Users

                82.7k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Home
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe