| 
 しゃべらすシリーズ(その2)リフレクターに接続しているときに、そのリフレクターにLINK / UNLINK してくる局名をしゃべらす。*1今回は、php とtext2speech.shを使う。
 Link/Unlink局の切り出し/usr/bin/php を利用するので、Raspberry Piに apache2、php5 をInstallしておく。最初に以下のphpファイルを/var/www/htmlに作成し、ブラウザで開けることを確認し、OKであれば、/rootに置く。ここで作ったphpを利用。
 ---- h2t_REF047.php ---
<html>
<head>
<!--<meta http-equiv="refresh" content="12">-->
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
<title>REF047_IN/OUT STATUS</title>
</head>
<body>
<?php
$tmp_f = "/home/pi/call_o.txt"; //現時点での接続局リスト
$con_f = "/home/pi/conn.txt";   //今接続してきた局リスト
$discon_f = "/home/pi/discon.txt"; //今切断した局リスト
$str_n = "";
$call_t = "";
if (file_exists($tmp_f)){
  $call_t = file($tmp_f);
  unlink($tmp_f);
}
//print "Old_file = " . $call_t[0] . "<BR>";
$source_file = "http://ref047.dstargateway.org/";
$fp_in  = fopen($source_file, "r");
$i = 0;
$j = 0;
$k = 0;
//$call_o = array("JL3ZBS","JJ1YEG","JQ1ZKF","JH1BLT");
//print "debug::" ; print_r ($call_o); print "<BR>";
while (! feof($fp_in)) {
  $str[$i] = trim(fgetss($fp_in, 1000));
//      print $i . ")" . $str[$i] . ":::" . strrpos($str[$i],"ype") . "<BR>";
  if (strrpos($str[$i],"ype") == 1) {
    $j = $i;
  }
  if (strrpos($str[$i],"ast Heard") == 1) {
    $k = $i;
  }
  $i++;
}
fclose($fp_in);
array_shift ($str);
//print_r($str);
$j = $j + 2;
$k = $k - 7;
//print $j.":".$k."<BR>";
for($i = $j; $i < $k; $i++){
    $str_a = substr($str[$i],0,6) . ",";
    $str_n = $str_n . $str_a;
    $i = $i + 5;
}
//print "New_file= " . $str_n . "<BR>";
$fno = fopen($tmp_f, "w");// call_o.txt
fwrite($fno, $str_n);
fclose($fno);
$call = split(",",$str_n);// to array $call
sort($call);
//print "New(Sort): "; print_r ($call);
//print "<BR>\r\n";
$call_o = split(",",$call_t[0]);
sort($call_o);
//print "Old  (Sort): "; print_r ($call_o);
//print "<BR>\r\n";
$fo_con = fopen($con_f, "w");
$diff1 = array_diff($call, $call_o);
while(list($key,$val) = each($diff1)) {
  if(strlen($val) > 0){
    print $val . " Connected<br>";
    fwrite($fo_con, $val." ");
  }
}
print "<BR>";
fclose($fo_con);
$fo_discon = fopen($discon_f, "w");
$diff2 = array_diff($call_o, $call);
while(list($key,$val) = each($diff2)) {
  if(strlen($val) > 0){
    print $val . " disconnected<br>";
    fwrite($fo_discon, $val." ");
  }
}
print "<BR>";
fclose($fo_discon);
?>text2speech.shで発声させる上記phpを/usr/bin/php で実行し、discon.txtかconn.txtが0バイトでなければtext2speechで発声する。
 --- inout.sh ---
#!/bin/bash
while :
do
  /usr/bin/php /root/h2t_REF47.php > /dev/null
  sleep 1
  if [ -s /home/pi/conn.txt ]; then
     MSG=`cat /home/pi/conn.txt`
     echo $MSG
     /home/pi/bin/text2speech.sh "$MSG connected."
     rm -f /home/pi/conn.txt
     touch /home/pi/conn.txt
  fi
  if [ -s /home/pi/discon.txt ]; then
     MSG=`cat /home/pi/discon.txt`
     echo $MSG
     /home/pi/bin/text2speech.sh "$MSG disconnected."
     rm -f /home/pi/discon.txt
     touch /home/pi/discon.txt
  fi
sleep 2
doneinout.shを自動起動させる
--- /etc/ ---
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
  /home/pi/bin/atk "IPアドレスは,$_IPです"
fi
/root/inout.sh &  # ← 追加 
exit 0
 2015 8/1 からgoogle tts が利用できなくなった} -- jh1blt? google tts が利用できなくなったので、AquesTalkを使うことにした。日記10月1日に載せた/root/henkan を通すと数字を英語読みになる。 -- jh1blt? 
 
 |