Ich habe eine ZWave-Glühbirne und einen ZWave-4-Tasten-Wandschalter, die beide mit Domoticz verbunden sind und auf einem Raspberry Pi installiert sind.
Ich möchte die folgenden Szenarien:
- Taste 1: Lampe 30 Minuten lang an
- Taste 2: Lampe aus
- Taste 3: Lampe immer an
- Knopf 4: Cthulhu beschwören
Jede Taste überschreibt die vorherige Aktion (Taste 3 -> Taste 1 = 30 Minuten lang eingeschaltet)
Das Verdrahten und Programmieren der Tasten ist einfach, aber wie steht es jetzt mit dem Timer? Ich möchte vermeiden, einen hausgemachten Service zu erstellen, weil ich Angst habe, mich damit herumzuschlagen init.d
.
Ich habe 3 Möglichkeiten:
Domoticz Dummy-Schalter
Domoticz ermöglicht das Erstellen eines Dummy-Schalters, der nach einer bestimmten Zeit in einer Schnittstelle den Status ändern kann:
Vorteile
- Standard-Timer!
- Ich kann sehr schnell zwischen meinem Wandschalter und der Lampe interagieren
Nachteile
- Obwohl Domoticz MQTT verarbeitet, wird es eine Menge LUA-Skripte geben und "blocky", um Geräte miteinander zu verbinden
- Zeit ist möglicherweise nicht einfach zu konfigurieren ...
at
und atq
at
ist ein Linux-Befehl zum Planen einer Aktion in der Zeit, so einfach wie
at [when] < [what]
Vorteile
- Multi-Timer-Service
- einfach zu bedienen und anzurufen
Nachteile
- at gibt nur eine eindeutige ID an, es sei denn, ich analysiere den geplanten Befehl. Ich kann dem Job keinen Namen geben (es sei denn mit einem magischen Linux-Befehl ...).
- Daher muss ich einen Job Matcher mithilfe einer Datenbank codieren / implementieren
Crontab
Crontab ist ein Linux-Dienst zum Planen sich wiederholender Aufgaben. In meinem Fall wird es einfach sein
# check every minute
* * * * * /path/checktimer.sh
Vorteile
- Zuverlässiger Zeitauslöser
Nachteile
- Kann keine Sekunden verwalten ...
- Immer noch gezwungen, irgendwo einen Job Matcher zu unterhalten
Zu meiner Frage:
- Mussten Sie solche Timer verwalten?
- Habe ich andere zuverlässigere / konfigurierbare Lösungen vermisst?
- Haben Sie eine Präferenz für die oben genannten Lösungen?
sleep
sieht schlimmer aus: du verbringst nur eine Zeit und es gibt nichts zurück. Können Sie antworten und ein Beispiel geben jobs
?
sleep
oderusleep
um das Aus auszulösen? Es ist die zugrunde liegende Funktion unter at, und Sie können die Verwendung verwendenjobs
, um Hintergrundjobs zu bearbeiten (hauptsächlich, um einen geplanten Abbruch abzubrechen, wenn ich es richtig verstanden habe)