NEWS

[gelöst]Zeitschaltuhr mit Datenpunkt schalten


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


  • Bitte löschen.


  • @paul53

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


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


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


  • @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)


  • @Peoples

    Super, nun scheint alles zu funktionieren. Vielen lieben Dank

Suggested Topics

  • 4
  • 15
  • 9
  • 15
  • 9
  • 12
  • 5
  • 6

1.6k
Online

37.0k
Users

42.7k
Topics

592.8k
Posts