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

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    5
    1
    46

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

anonymous warning – finde das Problem nicht

Scheduled Pinned Locked Moved JavaScript
7 Posts 3 Posters 502 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 Offline
      HomoranH Offline
      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 - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      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 Offline
              HomoranH Offline
              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 - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              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
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                334

                Online

                32.5k

                Users

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