Edited at

[Raspberry Pi]音声でゴミ出し日をお知らせ

More than 3 years have passed since last update.


はじめに

タイトルの通りのことをやったわけだけどいろいろ大変で、

ちゃちゃっとできるつもりだったが結局休日一日持っていかれてしまった。


背景

ゴミ出し日を把握するのが苦手で、というよりも把握するつもりがなくて、

ベランダのペットボトルとビン・缶がどんどん溜まっていく。

そろそろどうにかしないわけにはいかなくなった。

そこで区のホームページでゴミ出し日を確認してみると


燃やせるゴミ: 水曜日・土曜日

燃やせないゴミ: 第二火曜日・第四火曜日

資源: 金曜日


とあった。

「出せるもんなら出してみな」という台◯区からのメッセージが見え隠れしている。

燃やせないゴミのスケジュールは特にエグい。

というわけでラズベリーパイにゴミ出し日の前日に音声で知らせてもらうことにした。

打倒台◯区。

ゴミというゴミを出してやるぜ。


用意したもの

Raspberry Pi 2 Model B

USBスピーカー*

*USBスピーカーは消費電力が高いものを選ぶとラズパイが死ぬ可能性あるっぽい

IMG_5760.JPG


Open JTalkをインストール

まずは日本語音声がないと始まらない。

調べてみるとOpen JTalkを使うのが一般的らしい。

以下を参考にインストール

http://raspi.seesaa.net/article/415482141.html

インストールの手順は書いてある通りで何も問題なかったので詳細は割愛。

サンプルファイル(jsay)のアップまでしてくれていて圧倒的感謝。

こういう素晴らしい大人になりたいと思うものだ。

無事インストールが完了したので確認のため「こんにちは」と喋らせようとしたときに気づく。

「日本語の入力方法がわからないッ!!」


日本語入力設定

ググると様々な設定方法が出てきて混乱した上、

そのうちいくつかはなんか上手くいかなくて泣きたくなった。

「日本語を入力できない...」

何度もそうつぶやくうちに、パソコン教室にでも通う必要があるんじゃないかと思い始めるほど辛くなった。

ハマること一時間、以下を参考にしたらなんとか無事入力できた

http://marupeke296.com/IKDADV_PI_Japanese.html

青いアイコンのやつ。

がしかし設定完了直後、別のマシンからSSH接続して作業すれば日本語入力設定なんかしなくてもよかったことに気づいて、

それ以来Macから操作している。

あの一時間は一体なんだったのか


USBスピーカーから音を出す

単にsudo raspi-configでaudio設定しただけでは音が出なかったのでググってみると、いろんな人が苦戦していてやばさを感じた

HDMIだと音が出るし、

ヘッドホン端子を使っても音が出る。

なのに、USBだと音が出ない!

スピーカーのパッケージに「簡単」ってでっかく書いてあったのに全然簡単じゃない

やはりパソコン教室に通うしかないのか。

さんざんガチャガチャやっても手応えがなくて絶望ムードが漂いはじめていたが、

以下のページを参考に/usr/share/alsa/alsa.confを修正したらどうにか音が出た

http://www.tapun.net/raspi/raspberry-pi-usb-speaker

このページがなかったら諦めていたかもしれない。感謝。

書かれている通り、ヘッドホン端子が優先されていたようで優先度を変更する必要があったらしい。

スピーカーから「こんにちは」が聞こえたときは感動だった。


cronの設定

あまり特別なことはないけど唯一頭をひねったのは「燃えないゴミの日は第二火曜日と第四火曜日」という縛り。

ドクターイエロー*かお前は

*大体二週間に一度走っている黄色の新幹線。見ることができるとラッキーらしい。

IMG_5764.PNG

「第何週目」を指定してタスクを実行する方法については以下が参考になった

http://shinsuke789.hatenablog.jp/entry/2015/08/07/123000

なるほど。

日にちが8-14であれば第二週なのでその間毎日cron実行。

かつdate '+%w'で曜日を判断して、一致すればjsayコマンドを実行すれば良いということか。

こんな感じで設定してみた

1 21     * * * [ "$(date '+\%w')" -eq 4 ] && jsay "こんばんわ 明日は資源ごみの日です ダンボールやペットボトルもこまめに捨ててしまいましょう"

2 21 * * * [ "$(date '+\%w')" -eq 2 ] && jsay "こんばんわ 明日は燃やせるゴミの日です 生ごみは早めに捨てないと匂いが大変ですよ"
3 21 8-14 * * [ "$(date '+\%w')" -eq 1 ] && jsay "こんばんわ 明日は燃やせないゴミの日です 二週間に一度のチャンスですよ"
4 21 22-28 * * [ "$(date '+\%w')" -eq 1 ] && jsay "こんばんわ 明日は燃やせないゴミの日です ご主人様 大好きです"

実行時間が被るとなんとなく嫌な感じがしたので分をずらしてみた。

意味はないかもしれないが。


結果

設定後初めて迎えた火曜日21時2分。

「こんばんわ 明日は燃やせるゴミの日です 生ごみは早めに捨てないと匂いが大変ですよ」

とスピーカーから流れた。

嬉しい。

これでまたひとつ暮らしが便利になった。

IMG_5765.JPG

以上