Mój HomeMatic

Blog opisujący moją przygodę z HomeMatic

Gerwazy TTS – zegarynka i kalendarz

Zegarynka i kalendarz to jakby podstawowe zadania, które Gerwazy może realizować. Znając dwa poprzednie wpisy łatwo to można wykonać.

Przy tej okazji weszła jedna istotna zmiana do funkcji GerwazySay – otóż funkcja dostaje dodatkowy parametr, którym jest numer wypowiedzi. Pozwoli to lepiej zorganizować pliki na serwerze (nr ten został dodany na początku nazwy pliku). Dodatkowo jest to identyfikator, który będzie wskazywał Gerwazemu co ma wypowiedzieć. W pierwszym założeniu Gerwazy miał otrzymywać tekst przesłany metodą GET (lub POST) ale w konsekwencji wyszło inaczej. Do samego silnika mogłem przez to przenieść funkcję synonimów i nie tylko co za chwilę zobaczycie.

Funkcja zegarka i kalendarza to będą dwie pierwsze wypowiedzi realizowane przez Gerwazego. Wystarczy odczytać ID z tablicy GET i w zależności od parametru utworzyć tekst. Przykład poniżej:

<?php 
if(isset($_GET['id']) && $_GET['id']+0>0){
   if($_GET['id']+0==1){ // zegarek
      $wyp='{Jest godzina|Minęła godzina} '.date("H:i").'.';
   }elseif($_GET['id']+0==2){ // kalendarz
      $mc=array(0=>'',
         1=>'stycznia',
         2=>'lutego',
         3=>'marca',
         4=>'kwietnia',
         5=>'maja',
         6=>'czerwca',
         7=>'lipca',
         8=>'sierpnia',
         9=>'września',
         10=>'października',
         11=>'listopada',
         12=>'grudnia'
      );
      $wday=array(0=>'niedziela',
         1=>'poniedziałek',
         2=>'wtorek',
         3=>'środa',
         4=>'czwartek',
         5=>'piątek',
         6=>'sobota'
      );

      $wyp='Dziś jest '.$wday[date('w')].', '.date('j').' '.$mc[date('n')].'.';

   }elseif($_GET['id']+0>1000){
      // tu można odtworzyć muzykę
      // a może uskutecznić jakieś radio?
   }
} else {
   echo 'Co mam powiedzieć?';
   exit;
}

?>

 

Teraz już można wywołać zegarek z poziomu przeglądarki:

http://IP_RASPBERRY/gs.php?id=1

A tak oczywiście wywołamy kalendarz

http://IP_RASPBERRY/gs.php?id=2

Oczywiście zamiast „IP_RASPBERRY” należy podać IP swojego Gerwazego.

 

Całość skryptu wygląda teraz tak:

<?php 
if(isset($_GET['id']) && $_GET['id']+0>0){
   if($_GET['id']+0==1){ // zegarek
      $wyp='{Jest godzina|Minęła godzina} '.date("H:i").'.';
   }elseif($_GET['id']+0==2){ // kalendarz
      $mc=array(0=>'',
         1=>'stycznia',
         2=>'lutego',
         3=>'marca',
         4=>'kwietnia',
         5=>'maja',
         6=>'czerwca',
         7=>'lipca',
         8=>'sierpnia',
         9=>'września',
         10=>'października',
         11=>'listopada',
         12=>'grudnia'
      );
      $wday=array(0=>'niedziela',
         1=>'poniedziałek',
         2=>'wtorek',
         3=>'środa',
         4=>'czwartek',
         5=>'piątek',
         6=>'sobota'
      );

      $wyp='Dziś jest '.$wday[date('w')].', '.date('j').' '.$mc[date('n')].'.';

   }elseif($_GET['id']+0>1000){
      // tu można odtworzyć muzykę
      // a może uskutecznić jakieś radio?
   }
} else {
   echo 'Co mam powiedzieć?';
   exit;
}

$wyp=urlencode($wyp);


GerwazySay($wyp,(isset($_GET['id'])?$_GET['id']+0:0));


function mieszaj($text=''){
   if(preg_match_all("/{([^{}]*)}/", $text, $matches)){
      foreach($matches[1] AS $key=>$match){
         $do_zamiany=explode('|',$match);
         if(count($do_zamiany)>1){
            $text=str_replace($matches[0][$key],$do_zamiany[rand(0,count($do_zamiany)-1)],$text);
         }
      }
      $text=mieszaj($text);
   }
   return $text;
}
# funcja GerwazySAY - TTS
function GerwazySay($text='',$id=0){
   $file="/mnt/gerwazy/".$id.'-'.md5($text);
   if(!is_file($file)){
      $url="http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=".$text."&tl=pl";
      exec('wget -q -U Mozilla -O '.$file.' "'.$url.'"');
   }
   exec('/usr/bin/mplayer -ao alsa -really-quiet -noconsolecontrols "'.$file.'"  > /dev/null',$out);
}
?>

Kto spostrzegawczy na pewno zauważył do czego jeszcze można wykorzystać Gerwazego. Pomysłów może być wiele – w końcu Gerwazy to odtwarzacz mplayer 😉

Updated: 13 lutego 2019 — 20:51

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Mój HomeMatic © 2016 Frontier Theme