なんで作ったの?
前に飼っていた犬は、私が仕事場から家に帰ろうと思う気配を察知することができ、”帰るよメッセージ”を送る直前に妻から、今帰ろうと思った?という連絡が来てびっくりすることが何度かあった。なんでわかったのかと聞いてみると、犬がワンと吠えて玄関に向かったとのこと。同様のことはこの犬の前に飼っていた犬にも見られた。懐かしい思い出である。
どちらの犬もすでに触ることができないところへ行ってしまったが、家族の話題にはしばしばのぼる。そこで、telegram botを前の犬に見立て、メッセージ到着お知らせ係を担当してもらうことにした。
なにをするもの?
メッセージが家族のチャットグループに届いたら小屋を出て吠え、届いたメッセージを読み上げてもらうためにGoogle Homeに送る。この作業をtelegram botになったペットの犬に担当してもらうための仕掛けです。
犬小屋と犬はLegoで作り、吠え声も出るようにしました。ちょっと大掛かりな豪華版Telegram notificationです。
どういう仕組み?
Telegram bot apiを使います。Botの実体はRaspberry pi zero w(三号機)の中に鎮座する、python codeです。Telegramにbotを登録したあと、家族のチャットグループにメンバーとして登録し、届くメッセージに応じて異なる応答をさせます。応じて、とはいっても、文脈判定などをするわけではなく、あらかじめ決めておいた文字列でメッセージを書き始めることで仕分けができるようになっています。
読み上げするメッセージが届いたら、レゴで作った小屋から少し出て吠えます。この動きには、servo motorを用いています。吠え声を出す部分は、Adafruitのsound board (Adafruit Audio FX Mini Sound Board)を使い、過去のビデオから切り出した本人(本犬?)の声を何種類か加工して使っています。
使っている技(わざ)
興味のある方は、ここに出てくる文や単語をGoogle検索してさらに調べてみてください。
- Telegram botを作る
- Node-RedでGoogle Homeにしゃべらせる
- Raspberry piでservo motorを使う
- 参考にしたAdafruitの解説ページ
使ってみて
犬の動作、読み上げ、携帯などのアプリに届く、の順にしているので、あたかもメッセージが届く気配を犬が察知しているかのように感じます。
着信音一回のみのnotificationに比べると全体の動作時間も長いしmuteもできないので、必ず誰かが気が付いてくれます。気に入ってます。
このあとの予定
構想、部品の調達、特に小屋の部分の仕組みの構築には少々時間がかかりました。さて、LEDのon-off、 servo motorの動作角度の調整、吠え声スイッチとファイルの確認、botを動かすための勉強と練習が終わって、全体を連結させようと最後のコード書きをしていると家族のひとりが、
メッセージ読み上げは日本語だけ?自動で翻訳して何か国語かでしゃべってくれたら面白くない?
むむむ。読み上げは日本語でなくてもいいのですが、面倒なので、ひとまず日本語のみとしていたところを突かれました。しかし面白いかも、自動翻訳。google translateを使えたりしないか?
少し調べてみると、google translateがpythonから使える!ということで、これについては次の記事にします。
追記
June 27, 2021
関連記事、telegramピンポーン: telegram botでドアベルを鳴らす を書きました。/bell、/bellsコマンドを拡張。