Jetson Nanoにenebular agentをインストールしてみた

# はじめに

以前は推奨環境が限定され、enebular agentを導入するのにいくつかハードルがありましたが、現在の推奨環境の記載はシンプルになり、結論から先に言うと１コマンド(厳密には１行のコマンド)でインストール可能になりました！

### 推奨環境

Jetson NanoはJetPack(4.5.1)=Ubuntu 18.04.02 LTSがインストールされています。
UbuntuはDebianをベースとして派生したディストリビューションなので、サポート対象

![support.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/0e382282-223d-4548-b7ad-ac3273567d26.png)

### 公式ドキュメント

https://docs.enebular.com/ja/EnebularAgent/Installation.html

### 以前の導入メモ

https://note.com/kitazaki/n/nd7ff5e5f7505

https://note.com/kitazaki/n/n09fb4c73785f

https://note.com/kitazaki/n/n49be302a112c

# 手順

## インストールスクリプト

公式ドキュメントの通り、インストールスクリプトをダウンロードして、AWS IoTの情報、ユーザー名などの情報をオプション(引数)で指定して実行するだけです。

ポイントは、
--userオプションでJetson Nanoをインストールした時のユーザー名(ここでは、jetson)を指定する
--dev-modeオプションでenebular editorまたはブラウザからNode-RED flow editorを使用できるようにする
です。

![スクリーンショット 2021-04-03 22.00.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/09b44849-9f01-1057-5453-80e9bc79a37c.png)

### コマンド

Jetson Nanoで以下のコマンドを実行します。

```bash
$ wget -qO- https://enebular.com/agent-install | sudo -E bash -s -- \
 --aws-iot-thing-name=”名前” \
 --aws-access-key-id=”アクセスキーID” \
 --aws-secret-access-key=”シークレットアクセスキー” \
 --aws-iot-region=”リージョン” \
 --user=”ユーザー名” \
 --dev-mode
```

コマンドを実行した際のログです。(アクセスキーID、シークレットアクセスキーはxxxxxxxxでマスクしています。)

```bash
$ wget -qO- https://enebular.com/agent-install | sudo -E bash -s -- \
> --aws-iot-thing-name=enebular-jetson-01 \
> --aws-access-key-id=xxxxxxxxxx \
> --aws-secret-access-key=xxxxxxxxxx \
> --aws-iot-region=ap-northeast-1 \
> --user=jetson \
> --dev-mode
============================================================================================================================================================================================================
 enebular-agent installation:
   - Device name:         jetson-desktop
   - System:              Linux 4.9.2014.9.201-tegra aarch64 GNU/Linux
   - Install user:        jetson
   - Install destination: /home/jetson/enebular-runtime-agent
   - Agent port:          awsiot
   - Agent version:       latest-release
============================================================================================================================================================================================================
==== Fetching updater version info ====
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    28  100    28    0     0    205      0 --:--:-- --:--:-- --:--:--   205
OK
==== Downloading updater version 2.15.3 ====
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5749k  100 5749k    0     0  2628k      0  0:00:02  0:00:02 --:--:-- 2628k
OK
==== Installing enebular-agent-updater to /tmp/enebular-agent-updater.L6grIz0jN ====
OK
==== Checking node.js version ====
OK
==== Checking existing node.js v12.20.0 installation ====
OK
==== Downloading https://nodejs.org/dist/v12.20.0/node-v12.20.0-linux-arm64.tar.gz ====
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.1M  100 22.1M    0     0  2793k      0  0:00:08  0:00:08 --:--:-- 2911k
OK
==== Checking integrity ====
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3147    0  3147    0     0  10525      0 --:--:-- --:--:-- --:--:-- 10525
OK
==== Installing Node.js v12.20.0 to /home/jetson/nodejs-v12.20.0 ====
OK
==== Fetching enebular-agent ====
OK
==== Extracting enebular-agent ====
OK
==== Updating system package lists ====
OK
==== Install Debian dependencies ====
OK
==== Creating Remote Maintenance User ====
Creating enebular-remote-admin using default password
OK
==== Applying file permissions ====
OK
==== Creating AWS IoT thing ====
OK
==== Registering startup service ====
OK
============================================================================================================================================================================================================
 enebular-agent has been successfully installed ✔
   - Version: 2.15.3
   - Location: /home/jetson/enebular-runtime-agent
   - User: jetson
   - Service name: enebular-agent-jetson

 AWS IoT Thing enebular-jetson-01 has been created.
 enebular-agent is running as a system service.
 To check the status of agent, run the following command on the target device:
   sudo journalctl -ex -u enebular-agent-jetson.service
============================================================================================================================================================================================================
See details in full install log file: /tmp/enebular-agent-install-log.DKGZA2
```

### node-red-node-pi-gpio

以前、Jetson Nanoでrpi gpioノードを使用するコードの修正が必要でしたが、デフォルトで使用できるようになっていました！

https://note.com/kitazaki/n/n49be302a112c

変更履歴から、2019年6月25日に修正されていることを確認しました。

![スクリーンショット 2021-04-03 12.08.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/3863684f-c296-6190-c951-c38c0fdb5f07.png)

https://github.com/node-red/node-red-nodes/commits/master/hardware/PiGpio/36-rpi-gpio.js

# まとめ

Node-REDをインストールするのと同じくらい、enebular agentをインストールするのが簡単になっていました。
あくまでも個人的な見解ですが、enebular agent = Node-RED + フロー管理、デプロイ機能で、非常に便利だと思います。
良きenebularライフを！

![スクリーンショット 2021-04-03 22.15.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/8bf8f1de-0276-3e56-4f40-ba9fa7176297.png)

![スクリーンショット 2021-04-03 15.13.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/972fd41b-9dc7-c131-8282-336329f256d9.png)

![enebular.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/8acc6fb8-4bf3-777c-0b73-e59211c6afb3.jpeg)

![IMG_7415.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/f4cd115b-19b7-92af-4755-a9ea68fef3c5.jpeg)