LoginSignup
4
2

More than 5 years have passed since last update.

enebularを触ってRaspberryPiへのデプロイを試みた(初心者向けチュートリアル)

Last updated at Posted at 2018-12-01

はじめまして、isaaxのCPO杉田と申します。
実はこれがQiitaへの初投稿だったりします。

enebularの山崎さんにお声がけいただいたので僭越ながら初日の記事を担当いたします。

注意書き

以前からenebularとisaaxうまいこと連携できないかな〜と考えていたので、思いっきりポジショントークが出てくると思います。

enebularの概要

enebularを使うにはまずアカウント登録をします。

登録できたらまずは、ドキュメントを読んでみましょう。

enebularの概要

enebularのダッシュボード上で作ったAssetsをエッジデバイスやクラウドサーバーなどのデバイスにデプロイする機能を持ているようです。なるほどisaaxと似たような機能を持っているんですね。

対象となるエッジデバイスは以下の通り

  • mbed Cloud
  • AWS IoT

mbed CloudやAWS IoTなどのデバイスマネジメントサービスを使って実デバイスまで配信するのかな(違ったらすみません)

なるほど、enebularとisaaxは競合サービスに成り得ないな(ポジショントーク)

Hello World的なのやってみた

Getting Startedあたりをやってみましょう。

Create Project
プロジェクト名は英数とアンダースコアorハイフンだけで構成する必要があります。

Edit Flow
とくにつまづくこと無くFlowを編集してhello enebularの文字を表示することまでできました。Flowを編集したらデプロイボタンを押すのが保存の変わりになるのかな?

これでデプロイすべきFlowはできました。

AWS IoTでRaspberry Pi 3Bにデプロしてみる

Getting Startedに書かれている方法はherokuへのデプロイ方法だったので、AWS IoTへのデプロイの記事を読みながら、実際のエッジデバイスRaspberry Pi 3Bにデプロイしてみたいと思います。

前提知識

  • Raspberry Piの基礎知識
  • Node.jsの基礎知識
  • AWSマネジメントコンソールの基本操作
  • AWS IoTの基礎知識
  • IAMの基礎知識

別に知らなくてもenebularのドキュメントを読んでよく確認しながら操作をすればできると思いますが、Node.jsの基礎知識がないと後述するように詰むと思いますのでお気をつけください。

まずはAWSのセットアップ

とりあえずドキュメントに従ってひたすらAWS IoTとAIMの設定をしていきます。

だいたい15分位で最初の関門に差し掛かると思います。
選択肢がない!
ん????
2018年12月1日現在のAWS IoTには「AWS IoTのトピックにメッセージを再パブリッシュする」という選択肢はないようです。

おそらくre:Inventの直後だったこともあり色々AWSの仕様が変わったのではないかと予想します。現在のアクションの一覧をキャプチャーしてみました。
現在の選択肢
とりあえず一番近そうな「IoT Analyticsチャネルにメッセージを送信」を選択してみます。

image.png
できました。

image.png
enebularのダッシュボードに戻り、AWS ToTへのコネクションを設定します。やっぱりAWSの基礎知識がある方が設定は楽ですね。

ようやくRaspberry Piのセットアップ

ドキュメントのデバイス(エージェント)のセットアップのセクションに該当する作業をします。

Githubのリリースページから最新の安定版をダウンロードします。
https://github.com/enebular/enebular-runtime-agent/releases
2018年12月1日現在は2.3.0が最新だったので、バージョンは適宜読み替えてください。

RaspberryPi
$ wget https://github.com/enebular/enebular-runtime-agent/releases/download/2.3.0/2.3.0-prebuilt.tar.gz
$ tar -zxvf 2.3.0-prebuilt.tar.gz

そう言えば初期状態のラズパイにはnpmが入っていないようなのでインストールします。(IoTitでSDカードを作ったからかも?)

RaspberryPi
$ sudo apt-get update
$ sudo apt-get install -y nodejs npm

(焼酎お湯割りを飲みながら待つこと数分)npmをインストールできたらドキュメントに従って作業を進めます。

RaspberryPi
$ cd 2.3.0/agent
$ npm install
$ npm run build
$ cd ../node-red
$ npm install
$ cd ../ports/awsiot
$ npm install
$ npm run build

(焼酎お湯割りを飲みながら)インストールとビルドが終わるのを待ちながら、enebularエージェントのソースコードを流し読みします。
isaaxやAWS IoT Core同様にsystemdにUnitを登録してるっぽい。このへんの仕組みは2日目以降の詳しい人達が書いてくれると期待しましょう。

Node.jsのバージョンで詰まる

(焼酎お湯割りを飲みながら)順調に進んだかのように思いましたが、私の技術力の低さを露呈するようなトラブルが。。。

RaspberryPi
$ cd 2.3.0/agent
$ npm install
$ npm run build
$ cd ../node-red
$ npm install
(node:17523) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
npm WARN package.json node-red@1.0.0 No description
npm WARN package.json node-red@1.0.0 No repository field.
npm WARN package.json node-red@1.0.0 No README data
npm ERR! Error: Method Not Allowed
npm ERR!     at errorResponse (/usr/share/npm/lib/cache/add-named.js:260:10)
npm ERR!     at /usr/share/npm/lib/cache/add-named.js:203:12
npm ERR!     at saved (/usr/share/npm/node_modules/npm-registry-client/lib/get.js:167:7)
npm ERR!     at FSReqWrap.oncomplete (fs.js:135:15)
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! System Linux 4.14.34-v7+
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "i"
npm ERR! cwd /home/pi/2.3.0/node-red
npm ERR! node -v v8.11.1
npm ERR! npm -v 1.4.21
npm ERR! code E405
npm ERR! git clone git@github.com:file:.node-red-config/enebular-agent-dynamic-deps undefined
npm ERR! git clone git@github.com:file:.node-red-config/enebular-agent-dynamic-deps undefined
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/pi/2.3.0/node-red/npm-debug.log
npm ERR! not ok code 0

ぬ?Node−REDのインスタンスをインストールできない?

再びドキュメントを読み返してみると、、、

以降の手順を進める際には、npmパッケージの n などを使用してNode.js のバージョンを8.9.0にしてください。

RaspberryPi
$ node -v
v8.11.1

なるほど、RaspberryPiにインストールされたNode.jsのバージョンがv8.11.1だから動かないんですね。Node.jsほとんど使ったこと無い私には少々ハードルが高そうなので今日はこの辺にしといてやるか(おい)

enebular使ってみた印象

え?おわり?!とか言わないでください。ごめんなさい、ごめんなさい。npmのnモジュールを少し触ってから出直してきます。

Node-REDのフローを保存してデプロイするパイプラインを組むのはやったことが無いけど、大変そうだなぁというのは容易に想像ができます。enebularを使えば、Node-REDを使ったプログラミングからデバイスまでのデプロイまで一気通貫でできて便利そうな印象でした。
isaaxと異なりGitの操作が不要なので、非プログラマにとっても使いやすそうです。
センサーモジュールやカメラなどを接続したときにどうやってプログラミングするのかはまだ分からなかいのでもう少し勉強してみようと思いました。

宣伝
Isaax Advent Calendar 2018もやってますのでご参加いただけますと大変光栄です!本当にお願いします涙

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2