Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst]Zeitschaltuhr mit Datenpunkt schalten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]Zeitschaltuhr mit Datenpunkt schalten

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

      Hallo zusammen,

      ich habe folgendes Skript für meine Weihnachtsbeleuchtung geschrieben:

      createState('javascript.0.VIS.ZeitschaltungWeihnachtsbeleuchtungInnenAktiv', false, {name: 'Zeitschaltung Weihnachtsbeleuchtung'});
      
      let BeleuchtungAktiv = false;
        
      on({id: 'javascript.0.VIS.ZeitschaltungWeihnachtsbeleuchtungInnenAktiv'/*Zeitschaltung Weihnachtsbeleuchtung*/, change: 'ne'} , function (obj) {
           BeleuchtungAktiv = obj.state.val;
      });
      
      function Weihnachtsbeleuchtung_An() {
      setState('scene.Weihnachtsbeleuchtung_Innen'/*Weihnachtsbeleuchtung Innen*/, BeleuchtungAktiv);
      }
      function Weihnachtsbeleuchtung_Aus() {
      setState('scene.Weihnachtsbeleuchtung_Innen'/*Weihnachtsbeleuchtung Innen*/, false);
      }
      schedule({astro: "sunsetStart"}, function () { Weihnachtsbeleuchtung_An(); } );
      schedule({hour: 22, minute: 00}, function () { Weihnachtsbeleuchtung_Aus(); } );
      

      Ich möchte die Zeitschaltung über den Datenpunkt ZeitschaltungWeihnachtsbeleuchtungInnenAktiv An/Aus schalten können. Ich habe das Skript ursprünglich für meine Poolpumpe gehabt. Die Schedules zum abschalten sind immer aktiv, so das die Pumpe nicht alleine durch deaktiveren der Zeitschaltung auf Dauerlauf geschaltet werden können. Nun möchte ich jedoch genau das Deaktivieren. Ich möchte, wenn der Datenpunkt auf True ist, dass die Zeitschaltung aktiv ist und wenn dieser auf false steht, halt nicht aktiv. Die Beleuchtung schaltet sich jedoch immer Aus und durch rumprobieren bekomme ich es leider nicht alleine hin. Kann mir da jemand helfen?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Dominik F. last edited by paul53

        Bitte löschen.

        Dominik F. 1 Reply Last reply Reply Quote 0
        • Dominik F.
          Dominik F. @paul53 last edited by

          @paul53

          hab ich etwas falsch gemacht das ich das thema löschen soll?

          Peoples 1 Reply Last reply Reply Quote 0
          • Peoples
            Peoples @Dominik F. last edited by Peoples

            @Dominik-F
            Ich denke Paul meint seinen Beitrag mit bitte löschen nicht deinen.

            Zu deinem Script, versuch das mal so:

            createState('javascript.0.VIS.ZeitschaltungWeihnachtsbeleuchtungInnenAktiv', false, {name: 'Zeitschaltung Weihnachtsbeleuchtung'});
            let BeleuchtungAktiv = false;
            
            // Das solltest du so nicht mehr brauchen
            //on({id: 'javascript.0.VIS.ZeitschaltungWeihnachtsbeleuchtungInnenAktiv'/*Zeitschaltung Weihnachtsbeleuchtung*/, change: 'ne'} , function (obj) {
            //     BeleuchtungAktiv = obj.state.val;
            //});
            
            
            function Weihnachtsbeleuchtung_An() {
                if(getState('javascript.0.VIS.ZeitschaltungWeihnachtsbeleuchtungInnenAktiv').val === true){
                    setState('scene.Weihnachtsbeleuchtung_Innen'/*Weihnachtsbeleuchtung Innen*/, BeleuchtungAktiv);
                }
            }
            function Weihnachtsbeleuchtung_Aus() {
                if(getState('javascript.0.VIS.ZeitschaltungWeihnachtsbeleuchtungInnenAktiv').val === true){
                    setState('scene.Weihnachtsbeleuchtung_Innen'/*Weihnachtsbeleuchtung Innen*/, false);
                }    
            }
            schedule({astro: "sunsetStart"}, function () { Weihnachtsbeleuchtung_An(); } );
            schedule({hour: 22, minute: 00}, function () { Weihnachtsbeleuchtung_Aus(); } );
            

            Sollte eigentlich klappen.
            So wird zwar die Funktion aufgerufen zur gewünschten Uhrzeit, aber durch die vorgeschaltete If-Abfrage nach deinem Datenpunkt sollte nichts passieren.

            Evtl. könnte man jetzt durch das Umschalten deines Timer-Datenpunkts noch eine Funktion dazu machen, die beim Umschalten prüft ob die aktuelle Zeit zwischen der Wunschzeit liegt und dann entsprechend reagieren.

            Dominik F. 1 Reply Last reply Reply Quote 0
            • Dominik F.
              Dominik F. @Peoples last edited by

              @Peoples

              Vielen Dank für deine Hilfe. So ganz funktioniert das ganze noch nicht. Ich habe zum Testen die Weihnachtsbeleuchtung angestellt und den Datenpunkt auf True gesetzt. Dann setzte der Timer für Weihnachtsbeleuchtung_An ein und schaltete die Weihnachtsbeleuchtung aus. Sollte ich BeleuchtungAktiv eventuell da weglassen und einfach true schreiben? hast du da vielleicht noch eine idee?

              Peoples 1 Reply Last reply Reply Quote 0
              • Peoples
                Peoples @Dominik F. last edited by Peoples

                @Dominik-F

                Mein Fehler hab ich überlesen, hier nochmal:

                
                
                createState('javascript.0.VIS.ZeitschaltungWeihnachtsbeleuchtungInnenAktiv', false, {type: 'boolean',name: 'Zeitschaltung Weihnachtsbeleuchtung'});
                
                
                function Weihnachtsbeleuchtung_An() {
                    if(getState('javascript.0.VIS.ZeitschaltungWeihnachtsbeleuchtungInnenAktiv').val === true){
                        setState('scene.Weihnachtsbeleuchtung_Innen'/*Weihnachtsbeleuchtung Innen*/, true);
                    }
                }
                
                function Weihnachtsbeleuchtung_Aus() {
                    if(getState('javascript.0.VIS.ZeitschaltungWeihnachtsbeleuchtungInnenAktiv').val === true){
                        setState('scene.Weihnachtsbeleuchtung_Innen'/*Weihnachtsbeleuchtung Innen*/, false);
                    }    
                }
                
                schedule({astro: "sunsetStart"}, function () { Weihnachtsbeleuchtung_An(); } );
                schedule({hour: 22, minute: 00}, function () { Weihnachtsbeleuchtung_Aus(); } );
                
                

                Gib nochmal Bescheid. Der Fehler war dass bei Aus -> false geschalten wurde und bei An -> BeleuchtungAktiv(was auch als false deklariert war)

                Dominik F. 1 Reply Last reply Reply Quote 1
                • Dominik F.
                  Dominik F. @Peoples last edited by

                  @Peoples

                  Super, nun scheint alles zu funktionieren. Vielen lieben Dank

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  709
                  Online

                  31.9k
                  Users

                  80.2k
                  Topics

                  1.3m
                  Posts

                  javascript
                  3
                  7
                  975
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo