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エージェントをサービスとして登録する手順です。

本作業は動作の上で必須ではありませんが、以降の手順は本作業をしたものとして記載します。

  1. 管理者権限を持つアカウントでIoT機器にログインします。

  2. 以下のコマンドを実行し、「/etc/systemd/system/sdpf-iot.service」をテキストエディタで作成します。

    # vi /etc/systemd/system/sdpf-iot.service
    

    注釈

    • 上ではテキストエディタ「vi」を使用していますが、お好みのテキストエディタの利用で問題ありません。
  3. 「/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