Android端末の通知で光る富豪的BLEスカート作った

意味の分からないタイトルですが、タイトル通りです。 NeoPixelを搭載したスカートと、Raspberry Pi Zero、それとAndroid端末で、Android端末に届いた通知に応じて光るスカートを作りました。

動機

www.makuake.com こういうのを見てドール用にも欲しいなと思いました。

やってみた

ただ光らせるだけじゃ面白くないし、かと言って本家の機能と被っても面白く無いのでいつでもすぐそばにいてくれるドール的には同じいつでもそばにある携帯と、そこに届く通知によってなんかできないかと思いました。

Android端末の通知にはテーマカラーが設定できます。実際に使われている中では、Twitter公式が青だったりSoundCloudがオレンジだったりしますが、アイコンの背景の色と同じだと思います。そんなわけでそこから色を持ってきて、NeoPixelをその色で光らせるようにしました。

実ははじめ、BLE Nanoを使ってやろうとしていたのですが、どうしてもBLEが有効な状態でNeoPixelを点灯させることができず諦めてそこらに転がってたRaspberry Pi Zeroを使うことにしました。とても富豪的。まあそれでも$5で買えるし気にしない方向で……

USB接続のBluetoothドングルを変換アダプタ経由で繋いで使っています。サイズが大きくなってしまいましたがしょうがない。

RasPiの中では、Node.jsとBlenoを使ってBLEを待ち受けし、Pythonのコードを呼び出してGPIOを操作するという超残念仕様。PythonでBLE Peripheralとして動作できるライブラリがあればよかったのに。

Android端末側ではNotificationListenerServiceを利用して通知バーの変更を監視し、変更があった場合通知のカラーをRaspberry Pi Zeroに送信するという実装にしました。

動いてるところ↓