Kommando immer zur vollen Stunde ausführen?

Begonnen von jw9, 08 Mai 2022, 21:43:15

Vorheriges Thema - Nächstes Thema

jw9

Hallo,

irgendwie stehe ich auf dem Schlauch...

Im Wesentlichen möchte ich das Analog zu folgendem crontab-Eintrag:

12   * * * * foo bar baz

Mit anderen Worten: ammer wenn der Minutenzeiger auf die "12" springt, ein Kommando ausführen. In meinem jugendlichen Leichtsinn hatte ich angenommen, dass das mit AT möglich sein sollte... Aber irgendwie passen hier Erwartung und Realisierung nicht so ganz zusammen.

Die naheliegende Variante

define foobar at *12:00 { fhem("set foobar off") }}

funktioniert nicht, weil das offensichtlich als HH:MM interpretiert wird und nicht als MM:SS.

Wie definieren ich ein Kommando, das immer dann ausgeführt wird, wenn der Minutenzeiger auf eine bestimmte Ziffer springt?

kleineslichtHH

vielleicht hilft dir das hier weiter:


ZitatAttribute
alignTime
Nur für relative Definitionen: Stellt den Zeitpunkt der Ausführung des Befehls so, dass er auch zur alignTime ausgeführt wird. Dieses Argument ist ein timespec. Siehe oben für die Definition
Beispiel:
# Stelle sicher das es gongt wenn eine neue Stunde beginnt.
define at2 at +*01:00 set Chime on-for-timer 1
attr at2 alignTime 00:00

jw9

Abgesehen davon dass ich nicht ganz verstehe warum man die Kohle erst auf das Dach schleppt um sie dann durch den Kamin in den Keller zu schaufeln, scheint mir das Problem doch anderweitig gelagert zu sein:


define Bewaesserung_Rasen_off at +*00:60 { fhem("set Bewaesserung_Rasen off") }
attr Bewaesserung_Rasen_off alignTime 00:53

ergibt:

2022.05.09 01:08:14 1: define Bewaesserung_Rasen_off at +*00:60 { fhem("set Bewaesserung_Rasen off") }}: Wrong timespec 00:60: either HH:MM:SS or {perlcode}

Laut Doku ist HH:MM ein gültiges Format.



define Bewaesserung_Rasen_off at +*00:60:00 { fhem("set Bewaesserung_Rasen off") }
attr Bewaesserung_Rasen_off alignTime 00:20

ergibt

2022.05.09 01:20:15 1: define Bewaesserung_Rasen_off at +*00:60:00 { fhem("set Bewaesserung_Rasen off") }: Wrong timespec 00:60:00: either HH:MM:SS or {perlcode}

Laut Doku wäre auch HH:MM:SS ein gültiges Format.

LuckyDay

#3
define Bewaesserung_Rasen_off at +*01:00 { fhem("set Bewaesserung_Rasen off") }
attr Bewaesserung_Rasen_off alignTime 00:12



und ne Stunde schreibt man so

define Bewaesserung_Rasen_off at +*01:00 set Bewaesserung_Rasen off
attr Bewaesserung_Rasen_off alignTime 00:12


wo kopierst du den Mist eigentlich her?

jw9

Das ist doch eine relative Zeitangabe, oder nicht?

Meines Wissens dauert ein Fussballspiel immer noch 90 Minuten..

MadMax-FHEM

#5
90min sind aber halt in HH:MM (trotzdem) 1h und 30min... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Damian

Alternativ:

define di_foobar DOIF {[:00]; fhem("set foobar off")}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!