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. [gelöst] variable Rolladenposition über Vis

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

[gelöst] variable Rolladenposition über Vis

Scheduled Pinned Locked Moved JavaScript
4 Posts 3 Posters 412 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.
  • W Offline
    W Offline
    webseb79
    wrote on last edited by webseb79
    #1

    Hallo liebe Gemeinde,

    ich habe folgendes Script welches funktioniert aber folgenden Fehler erzeugt.
    " You are assigning a string to the state "knx.0.Rolladen.Rolladen-Position.OG-Isabelle-Rolladen-Position" which expects a number."

    var idt1 = 'javascript.2.Zeiten.Isabelle.Nachtruhe.Start';
    var timer1;
    var Pos_Nachtruhe = 'javascript.2.Rolladen.Positionen.Isabelle.Nachtruhe';
    
    function getTimeObject(state) {
        var t = state.val.split(":");
        var h = parseInt(t[0]);
        var m = parseInt(t[1]);
        return {hour: h, minute: m};   
    }
    
    on(idt1, function(dp) {
        var t = getTimeObject(dp.newState);
        if (timer1) clearSchedule(timer1);
        timer1 = on({time: t}, function () {
            Nachtruhe ();
        });
    });
    
    var state = getState(idt1);
    var t = getTimeObject(state);
    if (timer1) clearSchedule(timer1);
    timer1 = on({time: t}, function () {
         Nachtruhe ();
    });
    
    function Nachtruhe() {
        // Abbruch
        if      (getState("knx.0.Rolladen.Rolladen-Position.OG-Isabelle-Rolladen-Position"/*OG-Isabelle-Rolladen-Position*/).val >= 10 
            ||   getState("knx.0.Rolladen.Rolladen-Betrieb.OG-Isabelle-Rolladen-Sperre"/*OG-Isabelle-Rolladen-Sperre*/).val === 1
            ||   getState("javascript.2.Zeiten.Isabelle.Nachtruhe.Freigabe").val === 0)
                
                { return; }
                
                event("Isabelle...Rolladen hat Nachtruheposition durch Zeitvorgabe angefahren","Allgemein","");
                setState("knx.0.Rolladen.Rolladen-Position.OG-Isabelle-Rolladen-Position"/*OG-Isabelle-Rolladen-Position*/,getState(Pos_Nachtruhe).val);
                
    }
    

    Über Vis gebe ich per Input Widget eine Prozentzahl vor für die Position.
    Dieses Widget gibt immer einen String obwohl der Datenpunkt als Number deklariert ist.
    Die Position der Rollade ist auch ein Number.

    Was kann ich da nun tun um die Fehlermeldung zu bereinigen?

    Danke im voraus

    Sebastian

    paul53P 1 Reply Last reply
    0
    • M Offline
      M Offline
      mbw
      wrote on last edited by
      #2

      var pos = Number(getState(Pos_Nachtruhe).val);
      if (!isNaN(pos)) {
      event("Isabelle...Rolladen hat Nachtruheposition durch Zeitvorgabe angefahren","Allgemein","");
      setState("knx.0.Rolladen.Rolladen-Position.OG-Isabelle-Rolladen-Position"/OG-Isabelle-Rolladen-Position/, pos);
      }

      1 Reply Last reply
      0
      • W webseb79

        Hallo liebe Gemeinde,

        ich habe folgendes Script welches funktioniert aber folgenden Fehler erzeugt.
        " You are assigning a string to the state "knx.0.Rolladen.Rolladen-Position.OG-Isabelle-Rolladen-Position" which expects a number."

        var idt1 = 'javascript.2.Zeiten.Isabelle.Nachtruhe.Start';
        var timer1;
        var Pos_Nachtruhe = 'javascript.2.Rolladen.Positionen.Isabelle.Nachtruhe';
        
        function getTimeObject(state) {
            var t = state.val.split(":");
            var h = parseInt(t[0]);
            var m = parseInt(t[1]);
            return {hour: h, minute: m};   
        }
        
        on(idt1, function(dp) {
            var t = getTimeObject(dp.newState);
            if (timer1) clearSchedule(timer1);
            timer1 = on({time: t}, function () {
                Nachtruhe ();
            });
        });
        
        var state = getState(idt1);
        var t = getTimeObject(state);
        if (timer1) clearSchedule(timer1);
        timer1 = on({time: t}, function () {
             Nachtruhe ();
        });
        
        function Nachtruhe() {
            // Abbruch
            if      (getState("knx.0.Rolladen.Rolladen-Position.OG-Isabelle-Rolladen-Position"/*OG-Isabelle-Rolladen-Position*/).val >= 10 
                ||   getState("knx.0.Rolladen.Rolladen-Betrieb.OG-Isabelle-Rolladen-Sperre"/*OG-Isabelle-Rolladen-Sperre*/).val === 1
                ||   getState("javascript.2.Zeiten.Isabelle.Nachtruhe.Freigabe").val === 0)
                    
                    { return; }
                    
                    event("Isabelle...Rolladen hat Nachtruheposition durch Zeitvorgabe angefahren","Allgemein","");
                    setState("knx.0.Rolladen.Rolladen-Position.OG-Isabelle-Rolladen-Position"/*OG-Isabelle-Rolladen-Position*/,getState(Pos_Nachtruhe).val);
                    
        }
        

        Über Vis gebe ich per Input Widget eine Prozentzahl vor für die Position.
        Dieses Widget gibt immer einen String obwohl der Datenpunkt als Number deklariert ist.
        Die Position der Rollade ist auch ein Number.

        Was kann ich da nun tun um die Fehlermeldung zu bereinigen?

        Danke im voraus

        Sebastian

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

        @webseb79 sagte:

        Was kann ich da nun tun um die Fehlermeldung zu bereinigen?

        setState("knx.0.Rolladen.Rolladen-Position.OG-Isabelle-Rolladen-Position"/*OG-Isabelle-Rolladen-Position*/, parseFloat(getState(Pos_Nachtruhe).val));
        

        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

        1 Reply Last reply
        0
        • W Offline
          W Offline
          webseb79
          wrote on last edited by
          #4

          Ich danke euch beiden für die schnelle Hilfe.

          Bei der Lösung von mbw hat er mir die Position nicht übernommen, auch bei mehrmaligem Versuch.
          Bei der Lösung von Paul53 funktioniert alles.

          Danke

          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

          832

          Online

          32.4k

          Users

          81.5k

          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