はじめに
少し前に、telegram botを使った記事を書きました。豪華版Notification。しばらく使ってみて、届いたメッセージを読み上げてくれることの便利さをつくづく感じました。これはいい!
たいていは、「今から帰ります」とか、「何か買って帰るものある?」とか、いるのかいらないのか聞く質問とか、決まりきったフレーズで返事できるメッセージが多いので、それならボタン一つで返信できるようにしよう、ということになりました。それで作ったのがこのお返事パッドです。
なにをするためのもの?
短い返事フレーズを12個のボタン、残りの4つには誰が返事をしているのかを割り当てました。返事フレーズ(一つだけ選ぶことができる)、返答者、の順でボタンを押すと、うちのbotちゃんが家族のチャットグループへメッセージを送信してくれます。
このあと
特に返事フレーズがいらないようなやりとりの場合には、返信者のボタンだけ押すと、○○さんが確認しました、というメッセージが送られます。
決まった返事なら、ボタン押すだけ!なので、便利です。
あと、家族からリクエストが出ているのは、声で返事入力。Googleのvoice recognitionがraspberry pi上で動くことまで確認してあるので、やろうと思えばできるのですが、ちょっと腰が重い。でもきっとやります、たぶん。
うまくいかなかった部分のうらばなし
やりたいことは単純なのに、少し苦労しました。
最初はbotのすみか、前の記事の図に出てくるraspberry piですべて動作させる予定でした。padのLED制御、ボタンの読み取り、pythonを使ってできるようになったので喜んでいたら、pad制御が動いているとservoの動きがおかしくなることが判明。電力不足かと思ってpadには別電源を供給するようにしたら、servoは動くようになったのだが今度はpad制御がハング。こうなったらってんで、padはarduinoで別ユニットとして動かすことにした。
しかーし、arduino + ESP8266で苦戦。Telegramはhttps通信を受けるので、ssl通信構築しようとして失敗、苦戦、結局断念。Seeed studioのWio lite, w600でやろうとして情報不足で断念。やっと見つけたESP32(air lift breakout board, Adafruit)をarduinoにつけていいところまでいったのだが、コードが大きくなって今度はarduinoのメモリーオーバー。こんにゃろめ。もっとメモリを積んだM4版のarduino boardがあったので、それに替えたら今度は電力不足?ボード自体が認識されない。ESP32を外すと認識される。なにこれ?
AdafruitのESP32 featherがあるので、それでやりたいのだが、改修中の別プロジェクト(in-and-out, おうち出入り認識ボード、未投稿)で使用中。むむむ。改修中だし、ちょっと貸して、ってことで、ようやくうまく動くものができました。最初からそうしろよ、って感じですが、毎回実現テーマのほかに、どうやるか、も実現屋にとっては重要なテーマなわけで、できればいままでにやっていない方法でやりたいという考えもあるわけです。
とにかく、うまくできてよかった。
とまで書いたところで、padが妙な動きをしています。だれもボタンを押していないのに、よくわからないメッセージが。。。(なんとかします)