ユニファ開発者ブログ

ユニファ株式会社システム開発部メンバーによるブログです。

isaax 勉強会でラズパイ監視カメラ作ってみました

 こんにちは、赤沼です。以前アスキーの展示会でサービスについてご紹介いただいたのをキッカケに、 isaax の勉強会に参加してきましたので、内容についてご紹介させていただこうと思います。

isaaxug.connpass.com

 会場はヒカリエ内の、KDDI株式会社 旧∞Labo(むげんラボ)でした。

f:id:akanuma-hiroaki:20181025092301j:plain:w300

isaax とは

 isaax とは、一言で言うと IoT デバイスの管理プラットフォームで、死活監視やファームウェアのアップデートに利用することができます。対象としているデバイスは Raspberry Pi などの Linux ベースのデバイスで、 GitHub リポジトリと連携させておくことで、 GitHub へのプッシュをトリガーにして登録されている全てのデバイスのファームウェアをアップデートすることができます。 IoT デバイスを用いたサービスでは通常の Web サービスと違い、ハードウェアを遠隔地に配置することになるので、その状態監視やファームウェアの管理については課題が多いところです。 isaax のようなサービスを使うことで運用を効率化できるのではないかと思います。

f:id:akanuma-hiroaki:20181025091340p:plain

ハンズオン内容

 isaax では isaax camp という情報共有サイトを公開されていて、今回のハンズオンの内容もそこで公開されているので、詳細な手順はそちらを参照いただくのが良いかと思います。

camp.isaax.io

 主なポイントは下記のようなものになります。

  • Raspberry Pi + Camera モジュールと OpenCV を用いた人数検出
  • isaax のプロジェクト作成、デバイス登録
  • GitHub と isaax を連携させたファームウェアアップデート

 それぞれ簡単にご紹介します。

Raspberry Pi + Camera モジュールと OpenCV を用いた人数検出

 使用機材については Raspberry Pi 3 Model B だけ持ち込みましたが、それ以外は貸し出していただき、下記の写真のように Raspberry Pi にカメラモジュールを接続したものを使用しました。

f:id:akanuma-hiroaki:20181025092348j:plain:w400

 コードについても Python でベースの部分は用意していただいていたので、リポジトリを fork して、ハンズオンのテキストに従って処理を追加します。カメラモジュールで撮影した画像を OpenCV で処理して人数を検出し、検出した人物に枠をつけるという内容です。また、画像内に一人以上の人物を検出した場合は、1分間隔で画像を Slack に Post します。最終的には下記のように Slack に画像が表示されるようになります。

f:id:akanuma-hiroaki:20181025092553j:plain:w400

isaax のプロジェクト作成、デバイス登録

 isaax を使い始めるには isaax にログインしてプロジェクトを作成します。作成時には連携する GitHub のリポジトリを指定する必要があるので、あらかじめ作成しておきます。今回はサンプルのリポジトリを fork したリポジトリを指定しました。

f:id:akanuma-hiroaki:20181026075342p:plain

 プロジェクトを作成するとプロジェクトトークンと、デバイスを登録するためのインストールスクリプトが表示されるので、それを Raspberry Pi で実行します。

$ curl -fsSL get.isaax.io | sh -s stable <プロジェクトトークン>
No previous isaaxd installation

### Download and unpack stable artifact version v0.5.0
================================================================================
--2018-10-25 23:01:16--  http://cdn.isaax.io/isaaxd/stable/linux_armv7/v0.5.0.gz
Resolving cdn.isaax.io (cdn.isaax.io)... 152.195.38.225
Connecting to cdn.isaax.io (cdn.isaax.io)|152.195.38.225|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3245446 (3.1M) [application/octet-stream]
Saving to: 'isaaxd.gz'

isaaxd.gz                                                   100%[=========================================================================================================================================>]   3.09M  1.09MB/s    in 2.8s    

2018-10-25 23:01:19 (1.09 MB/s) - 'isaaxd.gz' saved [3245446/3245446]

installed successfully

### isaaxd installation complete
================================================================================
        Version:         v0.5.0
        Built:           Mon Jul 2 05:21:50 2018
        Go version:      go1.10
        OS/Arch:         linux/arm
        RPC port:        1226
        Update URL:      https://isaaxartifacts.blob.core.windows.net/isaaxd/
        Working dir:     /var/isaax/
        Project dir:     /var/isaax/project
        Log dir:         /var/log

 これでデバイスがプロジェクトに登録されます。今回は用意していただいたリポジトリを使いましたが、ゼロから作る場合は isaax.json という設定ファイルを作成する必要があります。

GitHub と isaax を連携させたファームウェアアップデート

 デバイスの登録まで成功していれば、あとは isaax と連携させている GitHub リポジトリにコードをプッシュすればその内容がデバイスにデプロイされます。アップデートの受信やログの出力内容は isaax のコンソールから確認することができます。

f:id:akanuma-hiroaki:20181026081157p:plain

 また、コンソールからは環境変数も設定できますので、登録されているデバイス全てに一括で環境変数を設定することが可能です。

f:id:akanuma-hiroaki:20181026081321p:plain

まとめ

 最近ではデバイスを管理するプラットフォームも AWS IoT や Mbed Cloud、 Arduino Cloud など様々増えてきました。 isaax は Mbed や Arduino 等のマイコンには対応していませんが、 Raspberry Pi などの Linux デバイスのみが管理できれば良いのであれば、最初の設定も簡単なので、選択肢として検討してみても良さそうに思います。まずは無料枠内で色々と試してみようと思います。