作成したプログラムは MODE Cloud の OTAU (Over the Air Update) により遠隔のゲートウェイに対してインストール / アップデートすることが出来ます。この作業は MODE デベロッパーコンソールにて行います。

  1. user.entry.sh の作成

OTAU 実施時に実行されるスクリプトを user.entry.sh という名前で作成します。インストールしたいプログラム / 設定ファイルをゲートウェイ内の任意の場所に配置したり、必要であればライブラリをインストールするようにこのスクリプトを実装します。

以下 cpu_temp.sh をインストールするような user.entry.sh の例です。


#!/bin/bash -eu


echo "Started user.entry.sh"


systemctl status my_cpu_temp && sudo systemctl stop my_cpu_temp


DIR=$(dirname $0)


sudo mkdir -p /home/ubuntu/bin

sudo mkdir -p /home/ubuntu/app.new

sudo mv "$DIR/cpu_temp.sh" /home/ubuntu/app.new

sudo mv "$DIR/my_cpu_temp.service" /home/ubuntu/app.new


if [ -d /home/ubuntu/app.old ]; then

    sudo rm -rf /home/ubuntu/app.old

fi


if [ -d /home/ubuntu/app ]; then

    sudo mv /home/ubuntu/app /home/ubuntu/app.old

fi


sudo mv /home/ubuntu/app.new /home/ubuntu/app


sudo ln -fs /home/ubuntu/app/cpu_temp.sh /home/ubuntu/bin/cpu_temp.sh

sudo cp -f /home/ubuntu/app/my_cpu_temp.service /etc/systemd/system/my_cpu_temp.service


sudo chown -R ubuntu.ubuntu /home/ubuntu/app

sudo chown -R ubuntu.ubuntu /home/ubuntu/bin


sudo systemctl daemon-reload

sudo systemctl enable my_cpu_temp


echo "Succeeded user.entry.sh"


exit 0



ここでは my_cpu_temp.service による systemd への登録も行っています。

  1. コンポーネント (zip ファイル) の作成

コンポーネントは zip ファイルにて作成する必要があります。

また、user.entry.sh は zip ファイルを展開した際にルートディレクトリにある必要があります。ここでは以下のようなファイル構成になります。


my-component-1.0.0.zip

├── cpu_temp.sh

├── my_cpu_temp.service

└── user.entry.sh

  1. コンポーネントの登録

MODE デベロッパーコンソールにて作成したコンポーネントを登録します。


コンポーネントの作成


コンポーネントの登録

  1. バンドルの作成

登録したコンポーネントを含むバンドルを作成します。この時ゲートウェイ本体のコンポーネント(MODEよりご提供いたします)を含むようにバンドルの設定を行います。Device Class はインストール対象のデバイスが紐付いているものを指定します。以降 gateway という Device Class を対象として手順を進めます。


バンドルの作成 / コンポーネント設定


  1. チャンネル作成 / 設定

作成したバンドルをチャンネルに設定します。デバイス (ゲートウェイ) にチャンネルを設定することによりインスールされるバンドルとの紐付けを行います。


チャンネルの作成 / 設定 (使用するバンドルの設定)





デバイスのチャンネル設定


  1. アップデート実施

アップデートの手動でのトリガーは checkAndUpdateFirmware コマンドにて行えます。シェルスクリプトにより以下のように実行出来ます。


#!/bin/bash


project_api_key="xxx"

device_id="34927"


curl -v -X PUT -d '{"action": "checkAndUpdateFirmware"}' \

  --header "Content-Type: application/json" \

  --header "Authorization: ModeCloud ${project_api_key}" \

  https://api.tinkermode.com/devices/${device_id}/command


以上の手順で実装したプログラムをインストール / アップデート出来ます。アップデートスクリプト (user.entry.sh) を実装する際、実行時にエラーとならないよう注意して実装して下さい。検証用のゲートウェイを用意し、実稼働のゲートウェイをアップデートする前にアップデートのテストをすることをお勧めします。

サンプルコードも付属しているので、参考にしたり改良を加えたりしてコンポーネントを作成してみて下さい。