Du kan ju pröva använda det schemasystemet jag gjort själv.
Jag själv har knackat ihop ett kalendersystem själv. Har nämligen en egen asterisk telefonväxel hemma kopplat till mitt hemtelefonikonto hos Cellip samt till min mobil och fasta telefoner hemma.
Det fiffiga är nämligen att man kan skapa filer i mappen /var/spool/asterisk/outgoing med ett modifieringsdatum framåt i tiden, (genom att använda "touch" för att sätta ett "falskt" datum på filen) och då kommer asterisk inte att exekvera filen förrens det datumet och tiden inträffar.
Resultatet är att mina telefoner ringer (och det är dessutom gratis för det blir som internsamtal i en företagsväxel, dvs min server ringer mig) när det planerade datumet inträffar, och dessutom står schemahändelsen som "callerid" (dvs syns på displayen i mobilen).
Såhär ser interfacet ut:
klocka.png
För de som vill ha schemascriptet själv (t.ex. TS), lägg detta script i din /var/www-mapp, och se till att webbservern körs som samma användare som asterisk-servern. Se även till att ha modulerna "Date::Calc" och "Time::Local" installerade i perl.
I asterisken måste du ha en extension som är kopplad till dina lokala telefoner som heter "wakeup" (plus eventuellt din mobil). Min mobil i det här fallet heter SIP/sip02 (den ansluter via mobildata till asteriskväxeln som en SIP-klient, men går även att ansluta fasta IP-telefoner, du vet sådana med lur, men också även paddor och sådant).
Dvs ungefär såhär, i extensions.conf:
[wakeup]
exten => s,1,Dial(SIP/sip01&SIP/sip02,120,c)
Schemat har stöd för att planera 100 dagar framåt i tiden, men går givetvis att ställa in som ett veckoschema eller liknande istället. För att ändra detta så ändrar du i for-loopen "for ($i = 0; $i < 100; $i++) {", ändra talet 100 till det tal du känner passar bra för dig.
Schemat har stöd för 1 händelse per dag, men det tycker jag räcker. Det är sällan man har mer än 1 viktig händelse per dag, antingen är det att man ska ha praktik/daglig verksamhet (just nu har jag inget) eller så är det något möte eller liknande. Och är det möte eller liknande så kommer man ihåg i huvudet vad man ska göra härnäst.
Här kommer schemascriptet:
- Kod: Markera allt
#!/usr/bin/perl
use CGI ':standard';
use Date::Calc qw(Add_Delta_YMD Day_of_Week Week_Number);
use Time::Local;
print "Content-Type: text/html\n\n";
print "<html><head><title>Väckarklocka</title></head><body><br><a href='schedule.cgi'>Uppdatera</a><br><br>";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = $year + 1900;
$mon = $mon + 1;
@monthnames = ('','Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December');
@weeknames = ('','Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag', '<font color="red">Söndag</font>');
@houra = ('06','07','08','09','10','11','12','13','14','15');
@minutea = ('00','15','30','45');
opendir(DIR, "/var/spool/asterisk/outgoing/");
@wakeupcalls = readdir(DIR);
closedir(DIR);
foreach $wakeup (@wakeupcalls) {
if ($wakeup =~ m/^wku_/) {
($wkutoken, $wkudate, $wkutime, $wkucomment) = split("_", $wakeup);
if (length(param('delete'.$wkudate)) > 0) {
unlink("/var/spool/asterisk/outgoing/".$wakeup);
}
else
{
$waketime{$wkudate} = $wkutime;
$wakecomment{$wkudate} = $wkucomment;
}
}
}
print "<table border='1' cellpadding='2'><tr><td><b> Datum </b></td><td><b> Vecka </b></td><td><b> Månad </b></td><td><b> Dag </b></td><td><b> Väckning </b></td></tr>";
for ($i = 0; $i < 100; $i++) {
($newyear, $newmonth, $newday) = Add_Delta_YMD($year,$mon,$mday,0,0,$i);
if (length($newmonth) < 2) {
$newmonth = "0".$newmonth;
}
if (length($newday) < 2) {
$newday = "0".$newday;
}
print "<tr><td> ".$newyear."-".$newmonth."-".$newday." </td><td> ".Week_Number(int($newyear),int($newmonth),int($newday))." </td>";
print "<td> (".$newmonth.") ".$monthnames[int($newmonth)]." </td>";
print "<td> (".$newday.") ".$weeknames[Day_of_Week(int($newyear),int($newmonth),int($newday))]." </td>";
print "<td>";
if ($waketime{$newyear."-".$newmonth."-".$newday} =~ m/^\d\d-\d\d$/) {
$wakeuptime = $waketime{$newyear."-".$newmonth."-".$newday};
$wakeuptime =~ s/-/:/sgi;
$wakecomment = $wakecomment{$newyear."-".$newmonth."-".$newday};
$wakeupfound = "true";
}
$isapply = param('apply'.$newyear."-".$newmonth."-".$newday);
if (($isapply eq "1")&&($wakeupfound eq "false")) {
$ishour = substr(param('hour'),0,1);
$isminute = substr(param('minute'),0,1);
$iscomment = param('comment');
$iscomment =~ s/å/a/sgi;
$iscomment =~ s/ä/a/sgi;
$iscomment =~ s/ö/o/sgi;
$iscomment =~ s/Å/a/sgi;
$iscomment =~ s/Ä/a/sgi;
$iscomment =~ s/Ö/o/sgi;
$iscomment =~ s/\xE5/a/sg;
$iscomment =~ s/\xE4/a/sg;
$iscomment =~ s/\xF6/o/sg;
$iscomment =~ s/\xC5/a/sg;
$iscomment =~ s/\xC4/a/sg;
$iscomment =~ s/\xD6/o/sg;
$iscomment = lc($iscomment);
$isxomment =~ s/^\s*//si;
$iscomment =~ s/\s/-/sgi;
$iscomment =~ s/[:\.;,_!?]/-/sgi;
$iscomment =~ s/[^0123456789abcdefghijklmnopqrstuvwxyz-]*//sg;
if (($isapply eq "1")&&($ishour =~ m/^[0-9]$/)&&($isminute =~ m/^[0123]$/)&&(length($iscomment) > 0)) {
$settime = timelocal(0,int($minutea[int($isminute)]),int($houra[int($ishour)]),int($newday),int($newmonth)-1,int($newyear));
$tmpfilename = "/var/spool/asterisk/tmp/wku_".$newyear."-".$newmonth."-".$newday."_".$houra[int($ishour)]."-".$minutea[int($isminute)]."_".$iscomment;
$newlocation = $tmpfilename;
$newlocation =~ s/\/tmp\//\/outgoing\//;
$iscomment =~ s/-/ /sgi;
$iscomment =~ s/^(.)/uc($1)/e;
open (TMP, ">".$tmpfilename);
print TMP "Channel: Local\/s\@wakeup\n";
print TMP "CallerID: \"".$iscomment."\" <0>\n";
print TMP "Application: Playback\n";
print TMP "Data: this-is-yr-wakeup-call\n";
close(TMP);
chmod(0666,$tmpfilename);
chown(128,139,$tmpfilename);
utime(time,$settime,$tmpfilename);
rename($tmpfilename, $newlocation);
$wakeuptime = $houra[int($ishour)].":".$minutea[int($isminute)];
$wakecomment = $iscomment;
$wakeupfound = "true";
}
}
if ($wakeupfound eq "true") {
$wakecomment =~ s/-/ /sgi;
$wakecomment =~ s/^(.)/uc($1)/e;
print "<a name='".$newyear."-".$newmonth."-".$newday."'></a>";
print "<form> ".$wakeuptime." -- ".$wakecomment." <input type='hidden' name='delete".$newyear."-".$newmonth."-".$newday."' value='1'><input type='submit' value='X'> </form>";
}
else
{
print "<a name='".$newyear."-".$newmonth."-".$newday."'></a>";
print "<form action='schedule.cgi#".$newyear."-".$newmonth."-".$newday."'> <select name='hour'>";
print "<option value='0'>06</option>";
print "<option value='1'>07</option>";
print "<option value='2'>08</option>";
print "<option value='3'>09</option>";
print "<option value='4'>10</option>";
print "<option value='5'>11</option>";
print "<option value='6'>12</option>";
print "<option value='7'>13</option>";
print "<option value='8'>14</option>";
print "<option value='9'>15</option>";
print "</select>";
print ":";
print "<select name='minute'>";
print "<option value='0'>00</option>";
print "<option value='1'>15</option>";
print "<option value='2'>30</option>";
print "<option value='3'>45</option>";
print "</select>";
print " ";
print "<input type='text' name='comment'><input type='hidden' name='apply".$newyear."-".$newmonth."-".$newday."' value='1'>";
print "<input type='submit' value='OK'> </form>";
}
print "</td>";
print "</tr>";
}
print "</table>";
print "</body></html>";