ALIファームウェア バージョン

 ver. 1.06

著者

Keigan

 

MQTT API 共通

基本

MQTT の仕組みにより、Topic を subscribe (購読)することにより、⾃動的にデータが publish (発⾏)される。ステータスの取得 により、⾃機の状態を把握することができる。

アドレス

MQTT API にアクセスするためのアドレスは以下となる

MQTTプロトコルで接続                                   mqtt://[IP Address]:9075/[Topic]
WebSocketプロトコル経由で接続 (ブラウザ等で使用時)     ws://[IP Address]:9076/[Topic]

[IP Address]

 1.直接 AMR のアクセスポイントに接続する場合・・・10.0.60.1

 2.ローカルエリアネットワーク(LAN)経由で接続する場合・・・192.XXX.X.XX

LAN経由の場合は、ルーター側でIPアドレスを割り当て、または固定設定を行うことにより、決定される。

[Topic]

次項 MQTT API リスト で定義される Topic (トピック)を使⽤する。

 

MQTT API リスト

No.

Function

Direction

TOPIC

QS-1

マシンのステータスを取得する

Publish status
QS-2 マシンの名前を取得 Publish status/machine_name
QS-3 バッテリの残量を取得 Publish status/battery
QS-4 エラー情報を取得 Publish status/error_info
QS-5 マシンの操作状態を取得 Publish status/operation_state
QS-6 マシンの制御状態を取得 Publish status/control_state
QS-7 マシンのコマンド状態を取得 Publish status/command_state
QS-8 マシンのハードウェア状態を取得 Publish status/hardware
QT-1 タスクセットidを取得 Publish taskset/id
QT-2 実行中のタスクidを取得 Publish taskset/index
QT-3 タスクセットの名前を取得 Publish Publishtaskset/name
QT-4 タスクセットの状態を取得 Publish taskset/state
QN-1 マシンの原点情報を取得 Publish nav/amr_pose
QN-2 マップ情報を取得 Publish nav/map_png
QN-3 マップの名前を取得 Publish nav/map_name
QN-4 マップidの取得 Publish nav/map_id
QC-1 マニュアル操作を行う Subscribe control/joy

 

QS-1 ステータスの取得

TOPIC

Function

Direction

status

マシンのステータスを取得する

Publish

 

データの取得例

※location内の x, y, およびangle の theta についてはREST API ドキュメント(v1.0.2以降)を参照すること。

json
{
"map": {
"mapId" : <uint32> # mapId
},
"operation_state" : <string>, # ex) "idle"
"battery" : {
"percentage" : <uint32>, # 0 to 100 [%]
"voltage" : <float32> # battery voltage [V]
},
"timestamp": <string>, # ex)"2012-04-21T18:25:43-05:00"
"location" : {
"x" : <float32>,
"y" : <float32>,
"angle" : {
"theta" : <float32>,
"x" : <float32>, #予約領域
"y" : <float32>, #予約領域
"z" : <float32> #予約領域
}
},
"taskset" : {
"state" : <string>, # "idle"または"exectuing"
"cmdSetId" : <uint32>, # cmdSetId
"cmdIndex" : <uint32> # number of cmdSetId
"resume_cmd_index": <uint32>
"resume_available": <bool>
},
"error" : {
"errorCode" : <uint32>, # error code
"description" : <string>
}
}

 

キー

値の説明

備考

operation_state

AMRの状態

Idle:アイドル中

Executing:タスクセットの実行中

Mapping:マップの作成中

Error:エラー

battery

バッテリー状態

Percentage:残量 [%]

Voltage:電圧 [V]

time stamp

発行された時刻(UNIX_TIME)

 

location

AMRの現在位置

(選択されているマップの
 原点座標を基準とする
 位置座標と向き)

x: x座標
y: y座標
angle: 本体の姿勢
   theta: 本体の向き [rad]
   angleのx, y, z は予約領域

taskset

タスクセットの状態

State:タスクセットの実行状態

cmdSetId:現在実行中のタスクセットid

cmdIndex:現在実行中のタスクインデックス

     (何番目のタスクか)

error

エラー状態

code:エラーコード

description:エラー内容の説明

 

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status", 0) #TOPIC

mqttc.loop_forever()

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>                      // 外部スクリプト(paho-mqtt)のURIを指定
   <script>
       // MQTTクライアント生成
       let client = new Paho.MQTT.Client(
           "192.XXX.X.XX"                              // Address of broker(IPアドレス)
           ,9076                                       // Websocketへの接続時は”9076”
          ,"web_" + (Date.now ()+1)           // Client ID(単一の任意の値)
       );
       // 接続
       let options = {
           useSSL: false,
           onSuccess:onConnect,                        // 接続に成功したときのコールバック
           onFailure:doFail                     // 接続に失敗したときのコールバック
       };

        // 接続に成功したとき
       function onConnect() {
         window.alert("onConnect");
           // トピックを購読する
           client.subscribe("status");
           // トピックにメッセージを発行
           message = new Paho.MQTT.Message("");
           message.destinationName = "test";
           client.send(message);
       }

       // 接続に失敗したとき
       function doFail(e){
           window.alert(e);
       }

       // 接続が切れたとき
       function onConnectionLost(responseObject) {
           if (responseObject.errorCode !== 0) {
               window.alert("onConnectionLost:"+responseObject.errorMessage);
          }
       }

     // メッセージを受信したとき
       function onMessageArrived(message) {
          window.alert("onMessageArrived:"+message.payloadString);
       }

       // コールバックの定義
       client.onConnectionLost = onConnectionLost; // 接続が切れたとき
       client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
       client.connect(options);

   </script>

 

QS-2 マシンの名前を取得

TOPIC

Function

Direction

status/machine_name

マシンの名前を取得

Publish

 

データの取得例

json
{
"data": ali-default <string> #マシンの名前
}

コード参考例 Python

import paho.mqtt.client as paho                #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/machine_name", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
          9076,                                        // Websocketへの接続時は”9076”
         "web_" + (Date.now ()+1)            // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/machine_name");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QS-3 バッテリの残量を取得

TOPIC

Function

Direction

status/battery

バッテリの残量を取得

Publish

 

データの取得例

json
{
"data": 72 <uint32> #バッテリの残量 [%]
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/battery", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
         9076,                                       // Websocketへの接続時は”9076”
        "web_" + (Date.now ()+1)            // Client ID(単一の任意の値)
);

// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/battery");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QS-4 エラー情報を取得

TOPIC

Function

Direction

status/error_info

エラー情報を取得

Publish

 

データの取得例

json
{
"code": 110 <uint32>, #エラーコードNO.
"description": "Path Not Found" <string>,    #エラーの内容
"timestamp": "2022-04-01T09:00:00+09:00"
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/error_info", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
         9076,                                       // Websocketへの接続時は”9076”
         "web_" + (Date.now ()+1)             // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/error_info");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QS-5 マシンの操作状態を取得

TOPIC

Function

Direction

status/operation_state

マシンの操作状態を取得

Publish

 

データの取得例

json
{
"state": 1 <uint32>, # 1:自動走行中 (ルート走行、ライントレーサ)
# 2:待機中(ゴールに到着含む)
# 3:SLAM中
# 9:エラー停止中
"error_code": 0 <uint32>, #エラーコードNo. (0:エラーなし)
"timestamp": "2012-04-21T18:25:43-05:00"
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/operation_state", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
          9076,                                       // Websocketへの接続時は”9076”
        "web_" + (Date.now ()+1)             // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/operation_state");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QS-6 マシンの制御状態を取得

TOPIC

Function

Direction

status/control_state

マシンの制御状態を取得

Publish

 

データの取得例

json
{
"data": 1 <uint32> # 0:ビジー状態、処理中(コマンドを貰っても処理できない)
# 1:制御可能 コマンドの受信と応答が可能
# 2:制御不可 コマンドを受信しても応答しない
# (ルート走行中またはライントレーサ中)
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/control_state", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
         9076,                                       // Websocketへの接続時は”9076”
        "web_" + (Date.now ()+1)            // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/control_state");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

QS-7 マシンのコマンド状態を取得

TOPIC

Function

Direction

status/command_state

マシンのコマンド状態を取得

Publish

 

データの取得例

json
{
"data": 1 <uint32> # 0:ビジー状態、処理中(コマンドを貰っても処理できない)
# 1:制御可能 コマンドの受信と応答が可能
# 2:制御不可 コマンドを受信しても応答はしない
# 3:マッピング中 (中止以外のコマンドは処理できない)
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/command_state", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
        9076,                                       // Websocketへの接続時は”9076”
       "web_" + (Date.now ()+1)             // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/command_state");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QS-8 マシンのハードウェア状態を取得

TOPIC

Function

Direction

status/hardware

マシンのコマンド状態を取得

Publish

 

データの取得例

json
{
"timestamp": "2012-04-21T18:25:43-05:00",
"lidar_connected": true <bool>,
"lidar_scanning": true <bool>,
"lidar_scan_freq": 10 <float32>,
"lidar_sample_rate": 2020 <int32>,
"lidar_zero_percentage": 10 <float32>,
"microcontroller": {
"connected": true,
"bad_sensor_data": false,
"restarting": false
},
"imu": true <bool>,
"left_motor": {
"connected": true,
"current": 0.12,
"stalling": false
},
"right_motor": {
"connected": true,
"current": 0.12,
"stalling": false
},
"left_tof": {
"range": 2041,
"connected": true
},
"front_left_tof": {
"range": 2041,
"connected": true
},
"front_center_tof": {
"range": 2041,
"connected": true
},
"front_right_tof": {
"range": 2041,
"connected": true
},
"right_tof": {
"range": 2041,
"connected": true
},
"left_cliff_sensor": {
"range": 2041,
"connected": true
},
"right_cliff_sensor": {
"range": 2041,
"connected": true
},
"center_cliff_sensor": {
"range": 2041,
"connected": true
},
"battery": {
"current":0.44,
"undervoltage":false,
"overcurrent":false,
"overvoltage":false,
"voltage":25.92
},
"emergency_switch_pressed": false,
"battery_door_open": false,
"tof_data_valid": true
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("status/hardware", 0) #TOPIC

mqttc.loop_forever()

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
        9076,                                       // Websocketへの接続時は”9076”
       "web_" + (Date.now ()+1)             // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("status/hardware");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QT-1 タスクセットidを取得

TOPIC

Function

Direction

taskset/id

タスクセットidを取得

Publish

 

データの取得例

json
{
"data": 143 <uint32>    #選択されているタスクセットid
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/id", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
        9076,                                       // Websocketへの接続時は”9076”
       "web_" + (Date.now ()+1)             // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/id");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QT-2 実行中のタスクidを取得

TOPIC

Function

Direction

taskset/index

実行中のタスクidを取得

Publish

 

データの取得例

json
{
"data": 2 <uint32>          #実行中のタスクid
}

コード参考例 Python

import paho.mqtt.client as paho           #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/index", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
         9076,                                       // Websocketへの接続時は”9076”
        "web_" + (Date.now ()+1)            // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/index");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

QT-3 タスクセットの名前を取得

TOPIC

Function

Direction

taskset/name

タスクセットの名前を取得

Publish

 

データの取得例

json
{
"data": "Pickup and deliver" <string>    #タスクセットの名前
}

コード参考例 Python

import paho.mqtt.client as paho           #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/name", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
         9076,                                       // Websocketへの接続時は”9076”
        "web_" + (Date.now ()+1)             // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/name");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QT-4 タスクセットの状態を取得

TOPIC

Function

Direction

taskset/state

タスクセットの状態を取得

Publish

 

データの取得例

json
{
"timestamp": "2012-04-21T18:25:43-05:00",
"cmdset_id": 1 <int32>, #タスクセットのID
"resume_cmd_id": 1 <int32>,         #タスクセットを再開する時のタスクid
"resume_available": true <bool>,       #タスクセットの再開可否
"executing": true <bool>,          #タスクセット実行中か否か
"completed": false <bool>          #タスクセットを最後まで完了したか否か
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("taskset/state", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
        9076,                                       // Websocketへの接続時は”9076”
       "web_" + (Date.now ()+1)            // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("taskset/state");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QN-1 マシンの位置情報を取得

TOPIC

Function

Direction

nav/amr_pose

 マシンの位置情報を取得

Publish

 

データの取得例

json
{
"data": {
"origin_x": -0.5,
"origin_y": -0.33,
"map_height": 10000,
"x": 0.72,
"y": -1.2,
"resolution": 0.05,
"theta": 1.2
}
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("nav/amr_pose", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
        9076,                                       // Websocketへの接続時は”9076”
       "web_" + (Date.now ()+1)             // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("nav/amr_pose");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QN-2 マップ情報を取得

TOPIC

Function

Direction

nav/map_png

 マップ情報を取得

Publish

 

データの取得例

json
{
"timestamp": "2012-04-21T18:25:43-05:00",
"format": "png" <string>,
"data": [255, 255, 255, 0, 0....] <uint8>
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("nav/map_png", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
        9076,                                       // Websocketへの接続時は”9076”
       "web_" + (Date.now ()+1)             // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("nav/map_png");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

QN-3 マップの名前を取得

TOPIC

Function

Direction

nav/map_name

 マップの名前を取得

Publish

 

データの取得例

json
{
"data": "test_map" <string> #mapの名前
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("nav/map_name", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
        9076,                                       // Websocketへの接続時は”9076”
       "web_" + (Date.now ()+1)             // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("nav/map_name");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>

 

QN-4 マップidを取得

TOPIC

Function

Direction

nav/map_id

 マップidを取得

Publish

 

データの取得例

json
{
"data": 176 <uint32> #mapのid
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。

def on_connect(self,mqttc, obj, rc):
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic + " " + str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_subscribe(self, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))

def on_log(self, obj, level, string):
print(string)

if __name__ == '__main__':
mqttc = paho.Client()#mqtt
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.subscribe("nav/map_id", 0) #TOPIC

mqttc.loop_forever()

 

コード参考例 Javascript

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
// MQTTクライアント生成
let client = new Paho.MQTT.Client(
           "192.XXX.X.XX",                              // Address of broker(IPアドレス)
       9076,                                       // Websocketへの接続時は”9076”
       "web_" + (Date.now ()+1)              // Client ID(単一の任意の値)
);
// 接続
let options = {
useSSL: false,
onSuccess:onConnect, // 接続に成功したときのコールバック
onFailure:doFail // 接続に失敗したときのコールバック
};

// 接続に成功したとき
function onConnect() {
window.alert("onConnect");
// トピックを購読する
client.subscribe("nav/map_id");
// トピックにメッセージを発行してみる
message = new Paho.MQTT.Message("");
message.destinationName = "test";
client.send(message);
}

// 接続に失敗したとき
function doFail(e){
window.alert(e);
}

// 接続が切れたとき
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
window.alert("onConnectionLost:"+responseObject.errorMessage);
}
}
// メッセージを受信したとき
function onMessageArrived(message) {
window.alert("onMessageArrived:"+message.payloadString);
}

// コールバックの定義
client.onConnectionLost = onConnectionLost; // 接続が切れたとき
client.onMessageArrived = onMessageArrived; // メッセージ受信したとき
client.connect(options);
</script>


QC-1 マニュアル操作を行う

TOPIC

Function

Direction

control/joy

マニュアル操作を行う

Subscribe

 

データの送信例

json
{
"data" : 0 <uint32>
# 0:No operation
# 1:forward
# 2:Diagonal right forward(Curve diameter is constant)
# 3:Turn right
# 4:Right back retreat(Curve diameter is constant)
# 5:back
# 6:Left back retreat(Curve diameter is constant)
# 7:Turn left
# 8:Diagonal left forward(Curve diameter is constant)
}

コード参考例 Python

import paho.mqtt.client as paho             #「paho.mqtt.client」ライブラリのインストールが必要です。
import signal
import time

mqttc =None

def on_connect(self,mqttc, obj, rc):
self.subscribe("$SYS/#", 0)
print("rc: "+str(rc))

def on_message(self, obj, msg):
print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))

def on_publish(self, obj, mid):
print("mid: "+str(mid))

def on_log(self, obj, level, string):
print(string)

def scheduler(arg1, args2):
global mqttc
mqttc.publish("control/joy", "{\"data\":5}", 0) #TOPIC (5:back)

if __name__ == '__main__':
mqttc = paho.Client()
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.connect("192.XXX.X.XX", 9075, 60) #IPアドレス, ポート, キープアライブ
mqttc.publish("control/joy", "{\"data\":5}", 0) #TOPIC (5:back)

while True:
signal.signal(signal.SIGALRM, scheduler)
signal.setitimer(signal.ITIMER_REAL, 1, 2) #1sec間、2秒間隔で実行

time.sleep(4000)

mqttc.loop_forever()

 

コード参考例 Javascript

準備中