FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Nico am 16 Juni 2013, 23:38:59

Titel: Je nach anstehendem Termin geweckt werden, Webview & Calender benötigt
Beitrag von: Nico am 16 Juni 2013, 23:38:59
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
Titel: Aw: Je nach anstehendem Termin geweckt werden, Webview & Calender benötigt
Beitrag von: hfecht am 30 Juli 2013, 06:48:56
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
Titel: Aw: Je nach anstehendem Termin geweckt werden, Webview & Calender benötigt
Beitrag von: Nico am 30 Juli 2013, 10:31:53
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...






Titel: Antw:Je nach anstehendem Termin geweckt werden, Webview & Calender benötigt
Beitrag von: drdownload am 04 Dezember 2013, 15:19:22
kannst du mal checken ob das skript mit abgeänderten serienterminen klarkommt?

Danke