Dies ist ein Code Schnipsel den ich in den letzten Tagen erstellt habe. Wenn ich abends zu Bett gehe sagt mir das Android Handy (App webview hier aus dem Forum installiert) welchen Termin ich morgen als erstes habe. Dann fragt es mich ob ich 90 Minuten vorher geweckt werden möchte.
Es werden die Module Calendar und wie gesagt die webview App benötigt.
Das Display des Handys muss an sein und die App muss laufen, um die Möglichkeit zum Antworten zu bekommen.
Das Handy ist als Handy definiert und mein Kalender als MyCalendar.
Bin mir nicht sicher ob "get MyCalendar full modeUpcoming" immer das nächste anstehende Ereignis als erstes zurück gibt. Vllt. kann mir ein Profi hierzu ein Feedback geben, bei mir scheint es jedenfalls so zu sein.
Hier der Code:
define nextCal dummy
define ZuBettGehen_Notify notify ZuBettGehen_Notify {\
my $Alles = fhem("get MyCalendar full modeUpcoming");;\
my @@Woerter = split(/ /,$Alles);;\
my $uid= $Woerter[0];;\
my $Termin= fhem("get MyCalendar text $uid");;\
my @@Daten = split(/ /,$Termin);;\
my $Datum = $Daten[0];;\
my $Tag = substr($Datum,0,2);;\
my $Monat = substr($Datum,3,2);;\
my $Zeit = $Daten[1];;\
my $Stunde = substr($Zeit,0,2);;\
my $Minute = substr($Zeit,3,2);;\
shift(@@Daten);;\
shift(@@Daten);;\
my $Beschreibung = join(" ",@@Daten);;\
my $aufstehtag;;\
my $AlarmStunde;;\
my $AlarmMinute;;\
if ($hour > 18){$aufstehtag = $mday+1};;\
if ($hour < 6 ){$aufstehtag = $mday};;\
if ($aufstehtag-$Tag != 0){fhem("set Handy ttsSay Keine Termine Morgen. Gute Nacht")};;\
if ($aufstehtag-$Tag == 0){\
if ($Minute>=30){\
$AlarmStunde=$Stunde-1;;\
$AlarmMinute=$Minute-30;;}\
if ($Minute<30){\
$AlarmStunde=$Stunde-2;;\
$AlarmMinute=$Minute+30;;}\
my $s=0;;\
my $timestring = sprintf("%%02d:%%02d:%%02d",$AlarmStunde,$AlarmMinute,$s);;\
fhem("set nextCal $timestring");;\
fhem("set Handy ttsSay Morgen um $Stunde Uhr und $Minute Minuten hast du $Beschreibung. Soll ich dich um $timestring wecken?");;\
fhem("define WarteZeit at +00:00:10 trigger Frage_Notify");;\
}\
}
define Frage_Notify notify Frage_Notify {\
fhem("define Pause_SprachAbfrage at +00:00:08 trigger SprachAbfrage");;\
fhem("set Handy voiceRec start");;\
}
define SprachAbfrage notify SprachAbfrage {\
my $Antwort=fhem("get Handy voiceRecognitionLastResult");;\
my $timestring=$value{nextCal};;\
if ($Antwort eq "ja" || $Antwort eq "Ja")\
{fhem("set Handy ttsSay Wecker für $timestring gestellt");;\
fhem("define Wecken at $timestring set Handy audioPlay http://s3.last.fm/preview/125979223/105/0151062448/66/11751609.mp3 (//s3.last.fm/preview/125979223/105/0151062448/66/11751609.mp3)")};;\
if ($Antwort ne "ja" && $Antwort ne "Ja"){fhem("set Handy ttsSay Wecker nicht gestellt")};;\
}
Bitte sowohl um Feedback als auch um Verbesserungsvorschläge. Bin leider kein Programmierer, funktioniert aber trotzdem bei mir
liebe Grüße
Nico
Guten Morgen Nico,
das ist eine sehr coole Idee. Ich werde am Wochenende mal Deinen Code ausprobieren. Könntest Du mir noch eine Kopie deiner Einstellungen bzgl. des "Handy" geben? Ist das die FullScreenApp, die darüber eingesteuert wird?
Vielen Dank und viele Grüße
Holger
Installation der App auf dem Handy:
Link (http://forum.fhem.de/index.php?topic=10628.msg60530#msg60530)
meines Wissens nach die neuste Version zum download:
Link (http://forum.fhem.de/index.php?topic=10628.msg63572#msg63572)
Wenn du nach dieser Anleitung vorgehst musst du nur
in fhem.cfg
define Handy WEBVIEWCONTROL 12345
Sowie in der App als APP-ID: 12345 angeben.
ACHTUNG: Ich hatte das Problem das in der Winterzeit eingetragene Termine in der Sommerzeit nicht zur richtigen Uhrzeit wiedergegeben werden!!
Hierzu habe ich noch keine Lösung gefunden, vllt fällt dir ja was ein.
Hab mich aus Zeitmangel auch schon länger nicht mehr mit dem Code beschäftigt, ist sicher ausbaufähig.
Wenn du was verbesserst lass es mich bitte wissen, bin sehr interessiert...
EDIT: Die App muss auf dem Handy aktiv sein, sprich wenn das Handy im Standby (Display aus) ist, funktioniert das ganze nicht...
kannst du mal checken ob das skript mit abgeänderten serienterminen klarkommt?
Danke