前回作成したRaspberry Pi LED時計の機能を拡張して、Siriで操作できるようにしました。
音声で時計表示が切り替わる!!
まずは、Siriで操作している様を動画でご覧ください。
私の音声はお聞き苦しいので消してますが、iPhoneに向かって「Hey Siri」と呼びかけて「LED日付をオンにして」と言うとLEDパネルに日付が表示され、「LED温度をオンにしてっ!(言いにくい)」と言うと温度・湿度と気圧が表示されてます。なかなか未来的じゃね?
今回はどうやってこの仕組みを実現しているのか、概要のみを書いてみます。ここまで到達するのにいろいろ初めての技術に手を出したので、細かい内容を記事にするのもパワーがいるもんで😅
次回以降に詳しい内容は書いていきます。
概要
Raspberry PiにLEDパネル繋げて時計化する方法は前回までの記事ご覧ください。
Raspberry Pi で LED時計を作ってみた その1 〜 軽く前置き
簡単に構成を図にしてみました。
Siriでの音声操作を実現するために「Homebridge」というサーバーアプリをRaspberry Piにインストールしました。こいつはAppleのHomekitの仕組みに準拠したオープンソースのアプリでHomekit対応の家電のフリをしてくれるものです。Homekitに対応した家電はSiriの音声で操作できるので、それでRaspberry Piを操れるわけですね。
Homebridgeにはいろんなプラグインがあって様々なことができるようになっているみたいですが、今回はLinuxコマンドを単に実行するプラグインを導入しました。こいつでcurlコマンドを使ってREST APIを呼び出してRaspberry Piと連携します。
REST APIもnode.jsで新規に作成していて、LEDパネルを操作できるようにしています。これもRaspberry Piの中で起動しています。
このREST APIのサーバーは何をしているかというと、RESTの通信を受け付けると「特定の文字列」が書かれたファイルを作成しています。具体的にはファイルの中には「date」とか「temp」とかの文字が入っていて、Pythonで作成しているLEDを制御するプログラムが2秒に一回そのファイルを確認しにいってファイルがあったら中の文字を見てパネルの表示を切り替えるという仕組みです。原始的なアプリ間の情報のやりとり方法ですが、Raspberry PiでGPIO操作する時もファイルとして見えるところに0、1書き込んでいるので、それの真似しました。シンプルでいいかなと。
Homebridgeのプラグインで直接このファイルをecho実行したりして作成しても良かったんですが、REST API用意していた方が汎用性高いし、node.js使ってみたかったというのもあるのでこういう構成にしました。
PythonでLEDパネルに時計を表示していますが、今回日付や温度を表示するためにだいぶリファクタリングしました。次回以降でどんなソースにしたか説明するつもりですが、ブログにソースコードのあれこれを書くのは結構面倒なのでGitHubに上げるかもしれません。
温度・湿度・気圧計と照度計といったセンサー類もRaspberry Piに追加しました。はじめてブレッドボードを使って回路を組んでみましたが、ちゃんと原理から調べて回路組んで想定通り動いたので、なんか快感😆
回路とか学ぶとコンピュータがどういう原理で動いているのか理解できるようになっていいですね。
センサーにピンを付けるために中学生以来の「はんだごて」にもチャレンジしましたよ😀
電気工作面白いな
正直ロボット作ったりは興味ないんだけど、こういう実用的な電気工作はがんばれるな。やっぱ、自分で作って動いたときはなかなか嬉しい。
次回以降、具体的な作り方などを書いていきたいと思います。
[追記]
次回記事のリンク貼ってなかった😅
GitHubのソースリンクもこちらにあります。