FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: iron.eagle am 15 März 2015, 14:58:46

Titel: [gelöst] Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: iron.eagle am 15 März 2015, 14:58:46
Hallo,

ich beginne gerade mich mit FHEM zu beschäftigen. FHEM läuft auf meinem Raspi und das schalten von Steckdosen funktioniert bereits.
Jetzt soll es weitergehen.
Als Erinnungsfunktion würde ich gern den Wecker meiner Fritzbox nutzen. Der Wecker muss beim Auftreten eines Ereignisses auf jetzt + x Minuten gesetzt werden. Das setzen des Weckers beim Ereignis klappt, allerdings nur starr mit set Fritzbox alarm 3 on 20:00 once.
Wie muss die Zeit eingefügt werden, damit der Wecker auf z.B. jetzt + 30 min. gesetzt wird?

Gruß
Torsten
Titel: Antw:Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: David1977 am 16 März 2015, 12:22:39
http://fhem.de/commandref_DE.html#set

on-for-timer könnte hilfreich sein.

ZitatDas Gerät wird per "on" eingeschaltet, und ein interner Zeitgeber wird erstellt, um nach <sekunden> ein "off" Kommando auszuführen.

Als Beispiel:
set switch on-for-timer 12.5
Titel: Antw:Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: iron.eagle am 16 März 2015, 20:32:54
Hallo,

tut mit leid, ich versteh nicht, wie mir der on-for-timer beim setzen des Weckers in der Fritzbox helfen soll. Der Wecker verlangt eine Zeitangabe und die soll variabel jetzt + x Minuten sein.

Tschau
Torsten
Titel: Antw:Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: Otto123 am 16 März 2015, 21:58:31
Hallo Torsten,

hilft Dir das (http://forum.fhem.de/index.php?topic=14449.0)?

Gruß Otto
Titel: Antw:Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: iron.eagle am 17 März 2015, 20:26:09
Hallo Otto,

sieht interessant. Danke erstmal.

Grüße
Torsten
Titel: [gelöst] Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: iron.eagle am 21 März 2015, 20:55:53
Hallo,

mit folgendem Code funktioniert das Setzen des Alarms auf jetzt plus 30 min..

define Fenster_offen notify Fensterkontakt:open { if ( ReadingsVal("Fritzbox", "alarm3_state", "off") eq "off") { my $time = time;; $time = $time +1800;; my ($sec, $min, $hour, $day,$month,$year) = (localtime($time))[0,1,2,3,4,5];; fhem("set Fritzbox alarm 3 on " . $hour .":". substr("0".$min,-2,2) . " once");; }}


Zweck:
Die Wecker soll mich erinnern, dass ich ein Fenster geöffnet habe, damit es nicht zu lange offen ist. Der Fensterkontakt meldet das öffnen und FHEM setzt den Wecker in der Fritzbox auf jetzt + 1800 s. Wird das Fenster (vorher) wieder geschlossen, löscht folgender Code den Wecker:

define Fenster_geschlossen notify Fensterkontakt:closed { if ( ReadingsVal("Fritzbox", "alarm3_state", "on") eq "on") {fhem("set Fritzbox alarm 3 off")} }


Ob der Perlcode effizient ist, weiß ich nicht ... ist nicht so meine Sprache; aber es funktioniert.

Schön wäre noch, wenn z.B. 25 min. gewartet wird und dann der Wecker auf jetzt plus 5 min. gesetzt wird. Wird das Fenster innerhalb der 25 min. wieder geschlossen, müsste das Setzen des Weckers natürlich abgebrochen werden. So spart man sich manchmal das Schreiben in die Fritzbox.

Tschau
Torsten
Titel: Antw:[gelöst] Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: tupol am 21 März 2015, 21:35:44
Anderer Vorschlag:
Das Öffnen das Bad-Fensters erzeugt bei mir eine Folge von at-Befehlen. Diese lassen dann in Abhängigkeit von der Außentemperatur in regelmäßigen Abständen das Telefon klingeln und sprechen. Das Schließen des Fensters löscht die verbleibenden at-Befehle.
Titel: Antw:[gelöst] Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: Damian am 21 März 2015, 21:48:10
Zitat von: iron.eagle am 21 März 2015, 20:55:53
Hallo,

mit folgendem Code funktioniert das Setzen des Alarms auf jetzt plus 30 min..

define Fenster_offen notify Fensterkontakt:open { if ( ReadingsVal("Fritzbox", "alarm3_state", "off") eq "off") { my $time = time;; $time = $time +1800;; my ($sec, $min, $hour, $day,$month,$year) = (localtime($time))[0,1,2,3,4,5];; fhem("set Fritzbox alarm 3 on " . $hour .":". substr("0".$min,-2,2) . " once");; }}


Zweck:
Die Wecker soll mich erinnern, dass ich ein Fenster geöffnet habe, damit es nicht zu lange offen ist. Der Fensterkontakt meldet das öffnen und FHEM setzt den Wecker in der Fritzbox auf jetzt + 1800 s. Wird das Fenster (vorher) wieder geschlossen, löscht folgender Code den Wecker:

define Fenster_geschlossen notify Fensterkontakt:closed { if ( ReadingsVal("Fritzbox", "alarm3_state", "on") eq "on") {fhem("set Fritzbox alarm 3 off")} }


Ob der Perlcode effizient ist, weiß ich nicht ... ist nicht so meine Sprache; aber es funktioniert.

Schön wäre noch, wenn z.B. 25 min. gewartet wird und dann der Wecker auf jetzt plus 5 min. gesetzt wird. Wird das Fenster innerhalb der 25 min. wieder geschlossen, müsste das Setzen des Weckers natürlich abgebrochen werden. So spart man sich manchmal das Schreiben in die Fritzbox.

Tschau
Torsten

Ich würde es mit einem Zweizeiler ohne Perl versuchen: ;)

define Fenster_offen DOIF ([Fensterkontakt] eq "open") (set Fritzbox alarm)
attr Fenster_offen wait 1800


Der set-Befehl kommt 30 Minuten später, wenn das Fenster zwischendurch nicht wieder geschlossen wird.

Gruß

Damian
Titel: Antw: Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: iron.eagle am 22 März 2015, 13:56:51
Hallo Damian,

Zitat von: Damian am 21 März 2015, 21:48:10
Ich würde es mit einem Zweizeiler ohne Perl versuchen: ;)

define Fenster_offen DOIF ([Fensterkontakt] eq "open") (set Fritzbox alarm)
attr Fenster_offen wait 1800


Der set-Befehl kommt 30 Minuten später, wenn das Fenster zwischendurch nicht wieder geschlossen wird.

Danke für den Tipp, wie der Befehl erst später ausgeführt wird. Solange beschäftige ich mich noch nicht mit FHEM.
Benötigt das Setzen des Weckers in der Fritzbox nicht eine Uhrzeit? Bzw. die Uhrzeit ändert sich ja bei jedem öffnen, also muss sie ja mit übergeben werden.

Tschau
Torsten
Titel: Antw:[gelöst] Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: iron.eagle am 22 März 2015, 14:00:03
Hallo Tupol,

Zitat von: tupol am 21 März 2015, 21:35:44
Anderer Vorschlag:
Das Öffnen das Bad-Fensters erzeugt bei mir eine Folge von at-Befehlen. Diese lassen dann in Abhängigkeit von der Außentemperatur in regelmäßigen Abständen das Telefon klingeln und sprechen. Das Schließen des Fensters löscht die verbleibenden at-Befehle.

Könntest du die Befehle mal zeigen?
Zuerst wollte ich auch einen richtigen Anruf mit dem entsprechenden Ansagetext; habt das aber nicht hinbekommen. Daher die Lösung mit dem Wecker.

Tschau
Torsten
Titel: Antw: Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: Damian am 22 März 2015, 19:53:20
Zitat von: iron.eagle am 22 März 2015, 13:56:51
Hallo Damian,

Danke für den Tipp, wie der Befehl erst später ausgeführt wird. Solange beschäftige ich mich noch nicht mit FHEM.
Benötigt das Setzen des Weckers in der Fritzbox nicht eine Uhrzeit? Bzw. die Uhrzeit ändert sich ja bei jedem öffnen, also muss sie ja mit übergeben werden.

Tschau
Torsten

Die Syntax zum Setzen des Weckers in der Fritzbox kenne ich nicht. Du müsstest in diesem Fall den Wecker auf "sofort" stellen oder etwas anderes verwenden, was sofort eine Meldung liefert, weil die Verzögerung bereits im DOIF-Modul steckt.

Gruß

Damian
Titel: Antw:[gelöst] Wecker in Fritzbox auf jetzt + x Minuten setzen
Beitrag von: iron.eagle am 29 März 2015, 13:36:44
Hallo Damian,

ich habe mich nochmal mit dem DOIF beschäftigt. Ich habe deine vorgeschlagene Zeile:

Zitat von: Damian am 21 März 2015, 21:48:10
define Fenster_offen DOIF ([Fensterkontakt] eq "open") (set Fritzbox alarm)
attr Fenster_offen wait 1800


um meinem Perlcode ergänzt:


define Fenster_offen DOIF ([Fensterkontak] eq "open") ( { my $time = time;; $time = $time +1800;; my ($sec, $min, $hour, $day,$month,$year) = (localtime($time))[0,1,2,3,4,5];; fhem("set Fritzbox alarm 3 on " . $hour .":". substr("0".$min,-2,2) . " once");; } )


Leider funktioniert das nicht. Im Log erscheint:

2015.03.29 13:28:16 2: Fenster_offen: { my $time = time; $time = $time +1800; my ($sec, $min, $hour, $day,$month,$year) = (localtime($time))[0,1,2,3,4,5]; fhem("set Fritzbox alarm 3 on " . $hour .":". substr("0".$min,-2,2) . " once"); }: Unknown command {, try help.
Unknown command $time, try help.
Unknown command my, try help.
Unknown command fhem("set, try help.
Unknown command }, try help.


Funktioniert Perlcode an dieser Stelle nicht oder habe ich was übersehen?

Grüße
Torsten