Hallo,
ich bilde mir ein, irgendwo mal was gelesen zu haben, daß jemand über einen Kalender direkt fhem-Befehle abgesetzt hat. Zb. weil wir morgen länger schlafen wollen ein "disable notify xy" um 4 Uhr (verhindert zb das Einschalten der Zirkulationspumpe um 5:00) und dann ebenfalls per Kalender um 10:00 ein "set zirkulationspumpe on".
Also direkt fhem-Befehle als Teil eines Kalender-Eintrags, die dann von fhem automatisch zu dem im Kalender definierten Zeitpunkt ausgeführt werden.
Kann sich jemand an so etwas erinnern bzw. hat so etwas vielleicht im Einsatz? Habe die Suche bemüht, bin aber nicht wirklich fündig geworden...
Danke im voraus und cheers,
Pula
Zitat von: pula am 21 Januar 2016, 10:52:40
ich bilde mir ein, irgendwo mal was gelesen zu haben, daß jemand über einen Kalender direkt fhem-Befehle abgesetzt hat.
...Kann sich jemand an so etwas erinnern bzw. hat so etwas vielleicht im Einsatz?
Ja, das war ich :)
Hurra :-)
Kannst Du mir hier evtl. weiterführende Infos geben bitte?
Würde das dann natürlich auch ins wiki malen...
Ja, kann ich, aber erst morgen oder übermorgen, ich bin zur Zeit noch unterwegs.
Und ich bin kein Freund des WIKIs ;)
Ja, das wäre toll - so eilig is es eh nicht ;)
Würde es trotzdem dann ins WIKI malen, kann ja mal irgendwem was bringen oder so...
Das Problem am wiki ist - es wird nicht nachgepflegt, und der Unsinn, der da mal drinsteht, lässt sich nie wieder ausbügeln. Hätte seinerzeit jemand einen Wiki-Eintrag zu der von Dir gestellten Frage geschrieben, würde das dort beschriebene Verfahren heute nicht mehr funktionieren.
- Du brauchst einen Kalender - logisch. Im Betreff des Ereignisses muss ein gültiger fhem Befehl stehen, z.B. set Lampe on
- Du brauchst ein notify, das auf den Startzeitpunkt des Ereignisses triggert. Die Ende-Zeit des Ereignisses kannst Du beliebig wählen
- Du brauchst eine Funktion in Deiner 99_myUtils.pm, die vom notify gerufen wird.
Zu 1:Der Kalender im Beispiel heißt cal_Command
Zu 2:define n_cal_Command notify cal_Command.*start.* {cal_command($NAME,$EVENT)}
Zu 3:
sub cal_command($$) {
my ($name,$event) = @_;
my (undef,$uid) = split(/ /,$event);
return unless $uid;
my $befehl = CommandGet(undef,"$name summary $uid 1");
fhem $befehl if(defined($befehl));
return;
}
Wow. Das funktioniert ganz toll. Vielen Dank für den Tip. Das eröffnet ganz neue Möglichkeiten. :D
Hallo,
super, vielen herzlichen Dank!
Funktioniert einwandfrei!!!!
Ja, die Infos im WIKI sind eher statisch, da hast Du wohl recht...
Achtung: Der Lösungsvorschlag ist nur dazu gedacht, das Prinzip des Vorgehens zu erklären. Das Ganze funktioniert im angegebenen Beispiel nur für EINEN Termin zu EINEM Zeitpunkt. Wenn jemand beispielsweise für 09:00 Uhr drei Einträge macht um drei Geräte zu schalten, funktioniert das erstmal nicht. Man muss dann die Funktion in der 99_myUtils etwas weiter ausbauen.
Hi,
ja, ist klar, vielen Dank!
Auf jeden Fall ist das toll, weil es zumindest ein Anhaltspunkt ist, wie man vorgehen kann. Danke noch mal!
Eine Frage habe ich aber noch dazu...
Was genau macht CommandGet? Ich habe mir das in fhem.pl angesehen, werde aber nicht wirklich schlau daraus...
Einfach nicht drüber nachdenken...
CommandGet(undef,"$name summary $uid 1");
bewirkt das gleiche wie
fhem("get $name summary $uid 1");
Die Variante mit fhem() ist eigentlich die empfohlene Variante, aber als Entwickler rutscht mir manchmal Variante 1 durch, sorry :)
Ah, OK, danke!
Da ich das für mich ein wenig anpassen möchte, würde ich das auch gerne verstehen ;)