Lösung zu Skripteinführung - Teil 3, Aufgabe 3

Hier fehlt die Definition von getTime(), welche als separate Lösung an anderer Stelle zu finden ist.

Die Variable Test dient ausschließlich dazu, den Eventhandler auch dann per Aufruf in der Editierzeile testen zu können, wenn kein Taster/Schalter am Shelly angeschlossen oder dieser gerade nicht erreichbar ist. Sie kann und sollte bei sicherer Funktionalität später auf false gesetzt oder entfernt werden. Bei Letzterem auch in der ersten Bedingung im EventHandler "Test ||" entfernen!

Wenn das Schalten zur aktuellen Zeit auf Grund der konfigurierten beiden Zeiten gesperrt ist, erscheint keine Ausgabe. Wenn du auch dazu eine Ausgabe wie "switching is disabled" erhalten möchtest, ergänze selbst an passenden Stellen eine solche Ausgabe!

let Config = {
  enBeg: '14:00', // Begin der Freigabe
  enEnd: '13:00' // Ende der Freigabe
}

function switchToggle(id) {
  print("trying switch " + id + " to toggle");
}

let Test = true; // Bei Nichtbedarf auf false setzen oder entfernen!

function switchDepend() {
  if(Test || (event.component!==undefined && event.component==="input:0")) {
    let t = getTime();
    if(Config.enBeg > Config.enEnd) {
      if(t > Config.enBeg || t <= Config.enEnd) switchToggle(0);
    } else {
      if(t > Config.enBeg && t <= Config.enEnd) switchToggle(0);
    }
  }
}

// Registrierung von switchDepend als EventHandler
Shelly.addEventHandler(switchDepend);


Obige Bedingungen können auch anders notiert werden, je nach besserem eigenen Verständnis. Ich ändere die beiden inneren bedingten Anweisungen nun gemäß der Booleschen Algebra - selbstverständlich ohne deren Wirkung damit zu ändern.

function switchDepend() {
  if(Test || (event.component!==undefined && event.component==="input:0")) {
    let t = getTime();
    if(Config.enBeg > Config.enEnd) {
      if(!(t <= Config.enBeg && t > Config.enEnd)) switchToggle(0);
    } else {
      if(!(t <= Config.enBeg || t > Config.enEnd)) switchToggle(0);
    }
  }
}

Nun kannst du dir die Kombination der inneren Bedingungen herausgreifen, die du am leichtesten verstehst.

2024-03-09