1.1.4.3. IoT機器設定・コード例を確認する¶
本項では、以下の実装において必要なPythonコード例を記載しています。
- 実装1: IoT機器の遠隔コマンド実行
c8yエージェント実行ファイルを編集する¶
Things Cloudからの遠隔コマンド実行のため、必要なコードを記載します。
あらかじめ、前項までに記載の処理が完了していることを確認してください。
Pythonコード「piAgent.py」¶
c8yエージェントの実行プログラムである「piAgent.py」に必要な処理を追記します。以下に倣って、ファイルを更新してください。
「/usr/local/sdpf-iot/piAgent.py」の135行目に以下の内容を追記
if message.startswith('511'):
cc_text = message.split(',')[2]
c8y.logger.info("--> c8y_Command.text:" + cc_text)
args = cc_text.split()
c8y.logger.info("--> Command :" + "/".join(args))
try:
setCommandExecuting('c8y_Command')
res = os.popen(cc_text).read()
c8y.logger.info("-->" + str(res))
setCommandSuccessfull('c8y_Command,' + str(res))
except Exception as e:
c8y.logger.error("--> Processing failed...")
setCommandFailed('c8y_Command', str(e))
完成形は以下のとおりです。
/usr/local/sdpf-iot/piAgent.py
#(略)
def on_message_default(client, obj, msg):
message = msg.payload.decode('utf-8')
c8y.logger.info("Message Received: " + msg.topic + " " + str(msg.qos) + " " + message)
if message.startswith('71'):
fields = message.split(",")
c8y.token = fields[1]
c8y.logger.info('New JWT Token received')
if message.startswith('510'):
Thread(target=restart).start()
##### 追記ここから #####
if message.startswith('511'):
cc_text = message.split(',')[2]
c8y.logger.info("--> c8y_Command.text:" + cc_text)
args = cc_text.split()
c8y.logger.info("--> Command :" + "/".join(args))
try:
setCommandExecuting('c8y_Command')
res = os.popen(cc_text).read()
c8y.logger.info("-->" + str(res))
setCommandSuccessfull('c8y_Command,' + str(res))
except Exception as e:
c8y.logger.error("--> Processing failed...")
setCommandFailed('c8y_Command', str(e))
##### 追記ここまで #####
if message.startswith('513'):
Thread(target=updateConfig,args=(message,)).start()
#(略)