【CONEXIOBlackBearでこんなことやってみた】TeamViewer IoTでデバイスの稼働状況をグラフ化

この記事では、TeamViewer IoTでデバイスをリモートコントロール・監視するための以下作業について解説しています。
<ul>
<li>TeamViewer IoTをIoTゲートウェイ「CONEXIOBlackBear」にインストール</li>
<li>TeamViewerアカウントと監視対象のデバイスを関連づける</li>
<li>関連付けたデバイスをリモートコントロールする</li>
<li>TeamViewer IoTに関連付けたデバイスの稼働状況をグラフ化する</li>
<li>閾値を設定し、それを超えたらメールでアラートを送る</li>
</ul>

<dl>
<dt><h2><i class="fa fa-link"></i></a>TeamViewer IoT とは</h2></dt>
<dd>
TeamViewer は、離れた地点にあるパソコンやスマートフォンに接続して遠隔操作ができる、テレワークやリモートサポート業務などで重宝されるリモートアクセス・ツールです。
セキュアな通信で安全に接続でき、複雑な設定が不要なことでも知られています。

このTeamViewerにIoTならではの様々な機能がコラボした究極のIoTツールが「<strong>TeamViewer IoT</strong>」です。今回は、これを使ってIoTゲートウェイ「CONEXIOBlackBear」を遠隔で制御してみます。
</dd></dl>
<br>
◇<strong>TeamViewer IoT</strong>でできること
<ul>
<li><strong>接続</strong>：VPNやファイアウォールの設定不要で、どこでも安全にモノに接続。</li>
<li><strong>監視</strong>：モノの状態をリアルタイムに可視化。条件付きルールを定義して異常警告を発信。</li>
<li><strong>制御</strong>：モノをリアルタイムで制御。</li>
</ul>

![キータ記事2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/fbc37a12-65be-2a4a-0ddb-5b2fdb6e83e9.png)

UIはこんな感じです。
![キータ記事2-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/c7f04aad-aa65-a39d-0b18-d8558fa26f14.png)
![キータ記事2-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/83e1f6c9-e07e-b39a-e403-01e94d503a9f.png)

<dl>
<dt>◇<strong><a href="https://conexio-iot.jp/serviceproduct/blackbear.html?utm_source=qiita&utm_medium=blog&utm_campaign=qiita&utm_id=qiita">CONEXIOBlackBear</a></strong>とは</dt>
<dd>
今回、監視対象として使用したエッジコンピューティング・ゲートウェイです。46か国で認証取得済みで、車載利用やエッジ処理にも対応可。詳しくは下記の記事をご確認ください！
</dd></dl>

https://qiita.com/conexioIoT/items/6de49b078bf3a59436ba

<h2><i class="fa fa-link"></i></a>1. TeamViewer IoTをCONEXIOBlackBearにインストール</h2>
それでは作業の解説に入ります。
ここはコマンド２発なのでとっても簡単です！

TeamViewer IoTエージェントのDebパッケージをCONEXIOBlackBear (以下、BB)に
置いてから、下記のコマンドを実行します。
(Debパッケージについてはお問合せください)

<body>
<div style="border: solid 3px #000; width:100px; margin: 5em; border: solid 3px #000000; background-color: #ccc;">

    # apt-get install libavahi-client3 procps
    # dpkg -i teamviewer-iot-agent_1.0-r0_armhf.deb
</p>
</div></body>

<h2><i class="fa fa-link"></i></a>2. TeamViewerアカウントと監視対象のデバイスを関連づける</h2>
デバイス(＝BB)を監視するには、TeamViewerアカウントとデバイスを関連付けする必要があり、ユーザーPC側およびBB側の双方で設定を行ないます。

<strong>【ユーザーPC側】</strong>
①ブラウザーで https://teamviewer-iot.com にアクセスして、TeamViewerアカウントでログインします。
![キータ記事2-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/f593e55c-581a-2fa9-5802-4fc85844c8cf.png)


②Groupを新規作成します。
　「Inventory」→「Add」→「Group」
※既にグループがあるならスキップでOK
![キータ記事2-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/0d470278-d3d3-0b9f-8e37-4676985d9b3e.png)

③画面右上の▽を選択して
「Assignment token」を選択して、表示されたtokenをコピーします。
![キータ記事2-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/90f1c9d7-cb40-5bbc-430d-d8fe7766ce51.png)


<strong>【BB側】</strong>
ユーザー側で設定した②「Group」と③「token」を下記要領でコマンド実行します。
<body>
<div style="border: solid 3px #000; width:100px; margin: 5em; border: solid 3px #000000; background-color: #ccc;">

    # teamviewer-iot-agent assign -t token -g $‘Group'

</p>
</div></body>

※ソフトウェア使用許諾について表示されますので、内容を確認し同意する場合は「y」を入力します。

これでおしまいです。
「Inventory」 画面で稼働中のデバイス一覧が確認できます。(いわゆる死活監視)
BBがちゃんと見えてますね！
![キータ記事2-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/483a7458-a0d8-711a-a2fc-24fcc9e1ef30.png)

<h2><i class="fa fa-link"></i></a>3. 「CONEXIOBlackBear」をリモートコントロールする</h2>
リモートコントロールは、本家TeamViewerアプリから行ないます。
(デバイスと関連付けしたアカウントを使用します)

ブロードバンドルーターのWi-Fiインターフェイスに接続されたBBに対して、インターネット経由でリモートコントロールを試みてみます。
![キータ記事2-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/f9a6f57a-ec22-6cfc-1c34-0515d6d1f6a7.png)
繋がりました！(設定をONにすればファイル転送も可能です)


<h2><i class="fa fa-link"></i></a>4. 関連付けたデバイスの稼働状況をグラフ化する</h2>
<strong>【見える化の準備】</strong>

まずはデバイスである BBの「Edge Management」機能を有効にする必要があります。 BBで以下のコマンドを実行してください。
<body>
<div style="border: solid 3px #000; width:100px; margin: 5em; border: solid 3px #000000; background-color: #ccc;">

    # apt-get install docker lsof
    # teamviewer-iot-agent install edge-management
    # echo "mkdir /var/log/teamviewer-iot-agent" >> /etc/rc.local


</p>
</div></body>

<strong>【BBの稼働状況を見てみる】</strong>
TeamViewer IoTでは、登録したデバイスのメモリ状況やCPU負荷状況をそれぞれ個別のセンサーと見立てて、簡単に見える化する機能が備わっています！

①TeamViewer IoTページ（https://teamviewer-iot.com）にログインします。
②「Inventory」→「Add」→「Sensor」で「Load」と「Memory」のSensorを登録すると、下記の表が表示されます。表の「Metric」とは、コントールが可能なセンサーデータとなります。
![キータ記事2-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/40f6a60f-3bd0-9c4c-f837-718286324172.png)
③各「Metric」の右側にあるから「Pin to dashboard」→「Pin」を選択すると、その「Metric」をダッシュボードに張り付けることができます。　
![キータ記事2-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/10fe3e01-40ce-78a1-1171-7c371277871e.png)
④「Dashboard」メニューからダッシュボードを見てください。
![キータ記事2-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/475b85b1-32bf-893f-7e09-9079ebd9357c.png)
<strong>グラフが表示されました！</strong>
もちろん、BBだけでなく独自のSensorを登録できます。
各種言語（C、Python、Node.js）のSDKが用意されており、簡単に追加できるようです。


<h2><i class="fa fa-link"></i></a>5. 閾値を超えたらメールでアラートを送る</h2>
設定した閾値を超えたときにアラートを出す機能を有効にしてみましょう。

それにはBBの「Rule Engine」機能を有効にする必要があります。BBで以下のコマンドを実行してください。

<body>
<div style="border: solid 3px #000; width:100px; margin: 5em; border: solid 3px #000000; background-color: #ccc;">

    # teamviewer-iot-agent install rule-engine


</p>
</div></body>

<strong>【ルールを作る】</strong>
ルールとは、アラート通知するMetric値の閾値の条件定義です。
さらにルールには、アラートを通知する宛先の情報（トピック、チャネル）と紐づいており、事前に設定する必要があります。
![キータ記事2-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/a17c2af5-41ad-df17-6f2b-dd06fe49ed9b.png)
<strong>・ルール</strong>
「Rules」にて設定します。
対象Metricの閾値条件と使用するトピックを設定します。
デバイスのオンライン／オフラインを条件にすることも可能です。

<strong>・トピック</strong>
「Notifications」→「Topics」にて設定します。
アラート通知先（チャネル）を選択（複数可）します。

<strong>・チャネル</strong>
「Notifications」→「Channels」にて設定します。
アラートの通知先を以下の2つから選択して、宛先の詳細な情報（メールアドレスやURL）を設定します。
　・メール
　・Webhook（外部サービスへ「HTTP」で通知する仕組み）

<strong>【メールでのアラートを設定】</strong>
試しに、空きメモリが1GByte以下になったらメールで通知するルールを作成してみました。
ルールの条件は<strong>「Free Memory < 1GByte」</strong>となります。
さっそく、 CONEXIOBlackBearの空きメモリ容量を故意に操作してみると…
![キータ記事2-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2637100/932fa5d9-f3ec-dbe5-be00-04f7e613a3c6.png)
<strong>メールが来ました！容量が復帰した時にもちゃんと来るんですね。</strong>

<h2><i class="fa fa-link"></i></a>6. 最後に</h2>
リモートアクセス＋IoTツール「TeamViewer IoT」をご紹介させて頂きましたが、お手軽さが伝わりましたでしょうか。

**[**CONEXIOBlackBear**](https://conexio-iot.jp/serviceproduct/blackbear.html?utm_source=qiita&utm_medium=blog&utm_campaign=qiita&utm_id=qiita)とあわせて、ぜひお試ください！**