1.1.3.4. c8yエージェントを設定する¶
本項では、以下の各実装において共通するc8yエージェントの設定手順について説明します。
- 実装1: IoT機器の遠隔コマンド実行
- 実装2: IoT機器からの画像送信・Things Cloudでの画像表示
- 実装3: IoT機器からThings Cloudへの各種測定値送信
なお、本書中の設定値の「< >」の表記については、ご利用の環境により各自入力いただく箇所となります("<"から">"までを設定値に置き換えてください)。
あらかじめ、前項の「1.1.3.3. 必要モジュールをインストールする」に記載の作業が完了していることを確認してください。
注釈
- 本項では例として、本システム用のディレクトリを「/usr/local/sdpf-iot」としています。お使いの環境に合わせて読み替えてください。
- 本項では例として、登録するサービスの名前を「sdpf-iot.service」としていますが、任意のサービス名を入力していただいて問題ありません。ただし、以降の手順ではサービス名を「sdpf-iot.service」として説明していますので、指定したサービス名に適宜読み替えてください。
構成ファイル「c8y.properties」を作成する¶
c8yエージェントの構成ファイルである「c8y.properties」を本環境用に作成します。 以下に倣ってファイルを作成してください。
なお、必要な値については前述の「1.1.3.1. Things Cloudの事前準備をする - IoT機器用ユーザーを作成する」にて設定した値をご確認ください。
/usr/local/sdpf-iot/c8y.properties
[credentials]
tenant = <Things Cloudのテナント名>
user = <IoT機器用ユーザー名>
password = <IoT機器用ユーザーのパスワード>
clientid = <任意のクライアントID(※)>
- (※)デバイス固有のID(モバイルデバイスの場合はIMEI)などを入力してください。Things Cloudでのデバイスの区別に利用されます。
構成ファイル「pi.properties」を編集する¶
c8yエージェントの構成ファイルである「pi.properties」を本環境用に編集します。 以下に倣ってファイルを更新してください。
/usr/local/sdpf-iot/pi.properties
[device]
name = <任意のデバイス名>
host = an1.icgw.ntt.com
port = 1883
tls = false
cert_auth = false
client_cert = s7y_pi.crt
client_key = s7y_pi.key
cacert = /etc/ssl/certs/ca-certificates.crt
operations = c8y_Restart,c8y_Message,c8y_Configuration,c8y_SendConfiguration,c8y_RemoteAccessConnect,c8y_SoftwareList,c8y_Command
subscribe = s/ds,s/dc/pi,s/e,s/dt,s/uc
devicetype = c8y_Pi
sendinterval = 5
requiredinterval = 10
loglevel = DEBUG
reboot = 0
config_update = 0
bootstrap_pwd = Fhdt1bb1f
注釈
デフォルト値から変更する値は以下のとおりです。
- name = <任意のデバイス名>
- host = an1.icgw.ntt.com
- port = 1883
- tls = false
- operations = c8y_Restart,c8y_Message,c8y_Configuration,c8y_SendConfiguration,c8y_RemoteAccessConnect,c8y_SoftwareList,c8y_Command
- subscribe = s/ds,s/dc/pi,s/e,s/dt,s/uc
構成ファイル「c8yMQTT.py」を編集する¶
c8yエージェントの実行ファイルである「c8yMQTT.py」を本環境用に編集します。 以下のとおりファイルを編集してください。
- 「/usr/local/sdpf-iot/c8yMQTT.py」の265行目
- Before
self.client.publish("s/us", "100,"+self.deviceName+","+self.deviceType,2).wait_for_publish()
- After
self.client.publish("s/us", "100,"+self.deviceName+","+self.deviceType,2)
c8yエージェントをサービスとして登録する¶
c8yエージェントの利用を簡易化するため、c8yエージェントをサービスとして登録する手順です。
本作業は動作の上で必須ではありませんが、以降の手順は本作業をしたものとして記載します。
管理者権限を持つアカウントでIoT機器にログインします。
以下のコマンドを実行し、「/etc/systemd/system/sdpf-iot.service」をテキストエディタで作成します。
# vi /etc/systemd/system/sdpf-iot.service
注釈
- 上ではテキストエディタ「vi」を使用していますが、お好みのテキストエディタの利用で問題ありません。
「/etc/systemd/system/sdpf-iot.service」に以下の内容を入力して保存します。
/etc/systemd/system/sdpf-iot.service
[Unit] Description=c8y Agent After=multi-user.target [Service] User=<開発用ユーザー> ExecStartPre=/bin/sleep 3 Type=idle WorkingDirectory=/usr/local/sdpf-iot ExecStart=/usr/bin/python3 /usr/local/sdpf-iot/piAgent.py [Install] WantedBy=multi-user.target