残り時間お知らせ付きアラーム:じゅんBEE
はじめに
タイマーとかアラームは、一つのお知らせしかしてくれない。何が言いたいかというと、30分のタイマーは30分経ったら一度だけ30分経過したことを教えてくれるだけだし、アラームもセットした時間に、その時間になって初めてそのことを教えてくれるだけだ。当たり前のことを書いているわけだが、もう少し気の利いたタイマーとかアラームはないものかとずっと思っていた。30分たってからいきなりピーピーいうんじゃなくて、そのちょっと前とか、半分ぐらいたったところでもうじき鳴るぜ、俺、とか何とかかいってくれるような、アラームなら、セットした時刻の少し前から、あと30分だぜとか、残り5分しかないぜとか、せめて時間になる前に何かひとこといってくれるような、そんな何かが欲しかった。今回はそれを作ってみることにした。
ガジェットリメイク
少し前に、ってもう2年以上前になるの?2023年12月だからそうか、誰にしゃべってるんだ、オンライン会議するので、お静かに願いますというお知らせをするためのガジェットを作ったのだが、全く人気がない、というか自分が飽きたのでろくに使わず片づけた。作っている間は楽しくて丁寧に気合をいれて作ったからか、なぜかばらさずに「パパの大きめ作品箱」という手書きの札がついた箱にしまってあった。
セットした時間と残り時間を表示するようにして、そんで、節目でげんこつベルを鳴らしたい、と考えながら、そのげんこつアームを探しに作品箱をあけにいった。サーボの土台や、お静かに願います看板、が外れて無残な雰囲気だったが、見ているうちに思い入れがよみがえった。これでリメイクしよ。

完成品:じゅんBEE
起きている間に使うアラームの使い道は、たいてい何かの準備、お出かけとか晩御飯の支度とか、をするときのものなので、名前は準備君とか、なぜかパタパタママとかも思いついたりしつつ、よくても佳作というか、ぱっとはしないが、じゅんBEEとした。とりあえずこの名前でよしとする。
アラームなので、何時何分、をセットしなければならないが、何のアラームか、もセットしたかったので、お得意のtelegram botを使うことにした。ケータイなら家族みんな持っているし、チャットグループからコマンド書式に従ってメッセージを送ってもらえば家族のだれもが利用できるようにしておける。
コードは例のごとくGitHub copilotに手伝ってもらってvibe codingした。今回は、まずやりたいことをmdファイルに書き出した。使うPINとか、Circuitpythonのライブラリとか、すでに作ってあった自作関数とかについてもそれ使ってねとか、NeoPixelの30分のところの色はこれにして、とか。結局自分で書くときには何となく始めてしまうところを、Copilotのために最初にことばで書き出すので、見通しが良くなる。自分で書く時もそうしようぜ、と思う。結局ごく数回のやりとりで完成してしまった。夕方から始めてご飯食べて、そのあと少しで完成、という速さ。実は午前中にもcopilotに世話になった。新しく大きい7セグを回路に追加しようとしててこずり、いつものようにgoogle検索していろいろ調べかけて気が付いた。Copilotに聞いてみよ。起こっていることを説明し、トラブルシュートするためのコードを書くのを手伝ってもらい、最終的には単に接触が不安定だったことが判明したので、関連するところをソケットからはんだ付けにすることですべて解決した。ハードを組むところでもGitHub copilotが活躍する。これまでなら確実に週末が少なくとも4-5回ないとここまで来られなかったと思う。
使えるコマンドは/setと/cancel。/setの後にHH:MMで目標時間、そのあとスペースに続いて何の時間なのかを書いて送信するだけ。メッセージはRaspberry piに住むボット君にとどけられ、あとはプログラムがメッセージに応じてガジェットを動かしてくれます。

全体はこんな感じ。

残り5分を切るところの様子。右にあるのはGoogle Home(nestの前の世代)。まだ活躍中。読み上げ文は、このガジェットのRaspberry pi zero Wから別のRaspberry pi 3A+でうごくNode-REDに送信され、最終的にGoogle Homeから音声となって出ます。
設定時間に到達したときの様子。
次なる工夫
何の時間をセットしたのかに応じて、節目のお知らせをさらに気の利いたものにしたい。定型文をランダムに使う、という程度では満足できない。そう、AIに頼む。これを次の課題とする。ローカルでLLMを利用することも当たり前のようにできるようになってきた。今回の目的なら、少しへぼいローカルLLMでやったほうが、勘違いや、なんでそうくるのかという、予想外のレスポンスを高確率で得られて、余計にオモシロくなる気もする。ちょっといいRaspi上で動かすか、あるいはCLIから使えるようなものを利用するか。勉強課題にちょうどいいと思えてきた。タイマーセットがさらに楽しくなるような工夫をしたい。