Raspberry Pi Zero Wを入手したので、それを使ってリモート呼び鈴を作ってみました。
システム構成
今回は、Google Cloud Platform(GCP)を利用することにしました。
Webブラウザ
Publisher
Google Cloud Pub/Sub
Subscriber
呼び鈴
Subcriber(Raspberry Pi)
Raspberry Pi の設定
Google Cloud SDK インストール
始める前に、Raspberry PiにGoogle Cloud SDK をインストールします。
ダウンロードするパッケージ |
---|
Linux(x86) |
PYTHON用のクライアント ライブラリインストール
本家ドキュメントのコマンドを実行すると、「grpcio (1.8.2)がない」ってエラーが出てしまったので、1つバージョンを下げたパッケージをインストールすることにしました。
$ pip install --upgrade google-cloud-pubsub==0.30.0 --ignore-installed
※インストール環境まで結構時間かかりました(20分位)。気長に待ちましょう…
ついでにトピックとサブスクリプションの作成
せっかくGoogle Cloud SDKもインストールしたし、本家のドキュメントにもあるように、gvloudコマンドからトピックとサブスクリプションを作ってしまいましょう。
$ gcloud beta pubsub topics create my-topic
$ gcloud beta pubsub subscriptions create my-sub --topic my-topic
メッセージ受信
Raspberry Piは受信側にするので、メッセージ受信のサンプルコードを参考に実装します。
※メッセージ受信の様子
メッセージは、Pub/Subから、Topicを選択し、「メッセージを公開」ボタンから送信することが出来ます。
メッセージの受信することができるようになりました。
次は、受けた後に呼び鈴を鳴らす仕組みを作ります。
部品
- Raspberry Pi Zero W
- TD62083AP
- ソレノイド
- LED
- 抵抗(10kΩ)
- 電源プラブ(12V 2A)
ブレッドボード
Publisher(バックエンド)
こっちはあまり楽しくないですが。
Google Cloud Platform
のパブリッシャー アプリケーションにGOOGLE APP ENGINEを利用します。ここには、スマホ(Web)から(今回は呼び鈴を鳴らす)メッセージを送信するための簡単なボタンUIと、ボタンのクリックイベントで発生させるAPIのエンドポイントを作ります。
- ブラウザから、https://<project-id>.appspot.com/ にアクセスする
- ボタンのページを表示する
- ボタンを押す
- PublishするAPIを呼ぶ
- 成功ステータスを返す