使用MQTT连接的设备可采用MQTT认证。需将设备凭证类型从\u201cAccessToken\u201d改为\u201cMQTTBasic\u201d。 BasicMQTT凭证包含可选的clientid、username和password。详见MQTTAPI。
下面说明如何修改设备凭证以及客户端如何用这些凭证连接设备。 可选方案包括:
仅基于clientid的认证
启用此方式时,只需在设备凭证中填写clientid。MQTT客户端在指定正确clientid后即可连接。
以下示例命令仅使用MQTT clientid向ThingsBoard发布telemetry读数。 命令使用plainMQTT,不启用TLS:
1
mosquitto_pub -d -q 1 -h "YOUR_TB_HOST" -p "1883" -t "v1/devices/me/telemetry" -i "YOUR_CLIENT_ID" -m {"temperature":25}
其中:
- YOUR_TB_HOST with the host of your ThingsBoard instance;
- YOUR_CLIENT_ID替换为您的clientid。
ThingsBoard提供\u201cCheckConnectivity\u201d功能,会根据host和您提供的设备凭证自动生成命令,您只需复制并执行即可。
以下示例仅使用MQTT clientid发布telemetry。首先,将设备凭证类型从\u201cAccessToken\u201d改为\u201cMQTTBasic\u201d:
- 进入「设备」页面,点击设备打开详情窗口,再点击「管理凭据」按钮;
- 在「设备凭据」窗口中,选择「MQTT Basic」凭据类型并填写 Client ID。点击「保存」。
修改设备凭证后,使用\u201cCheck connectivity\u201d功能发布telemetry:
- 点击\u201cCheck connectivity\u201d按钮打开对应窗口;
- 在弹出窗口中选择操作系统;
- 按指南命令安装客户端工具;
- 复制并执行发布telemetry的命令;
命令执行成功后,应能看到已发布的temperature读数。
基于username和password的认证
只需在凭证表单中填写username和password。 MQTT客户端在指定正确的username和password后即可连接。
以下示例命令使用MQTT clientusername和password向ThingsBoard发布telemetry读数。命令使用plainMQTT,不启用TLS:
1
mosquitto_pub -d -q 1 -h "YOUR_TB_HOST" -p "1883" -t "v1/devices/me/telemetry" -u "YOUR_CLIENT_USERNAME" -P "YOUR_CLIENT_PASSWORD" -m {"temperature":25}
其中:
- YOUR_TB_HOST with the host of your ThingsBoard instance;
- YOUR_CLIENT_USERNAME、YOUR_CLIENT_PASSWORD替换为您的clientusername和password。
\u201cCheckConnectivity\u201d会根据您提供的host和设备凭证自动生成命令,您只需复制并执行即可。
以下示例使用MQTT clientusername和password发布telemetry。首先,将设备凭证类型从\u201cAccessToken\u201d改为\u201cMQTTBasic\u201d:
- 进入「设备」页面,点击设备打开详情窗口,再点击「管理凭据」按钮;
- 在「设备凭据」窗口中,选择「MQTT Basic」凭据类型并填写用户名和密码。点击「保存」。
修改设备凭证后,使用\u201cCheck connectivity\u201d功能发布telemetry:
- 点击\u201cCheck connectivity\u201d按钮打开对应窗口;
- 在弹出窗口中选择操作系统;
- 按指南命令安装客户端工具;
- 复制并执行发布telemetry的命令;
命令执行成功后,应能看到已发布的temperature读数。
基于clientid、username和password的认证
在此选项中,需填写ClientID、Username和Password。MQTT客户端在指定正确的clientid、username和password组合后可连接。
以下示例命令使用MQTT clientid、username和password向ThingsBoard发布telemetry读数。命令使用plainMQTT,不启用TLS:
1
mosquitto_pub -d -q 1 -h "YOUR_TB_HOST" -p "1883" -t "v1/devices/me/telemetry" -i "YOUR_CLIENT_ID" -u "YOUR_CLIENT_USERNAME" -P "YOUR_CLIENT_PASSWORD" -m {"temperature":25}
其中:
- YOUR_TB_HOST with the host of your ThingsBoard instance;
- YOUR_CLIENT_ID替换为您的clientid;
- YOUR_CLIENT_USERNAME、YOUR_CLIENT_PASSWORD替换为您的clientusername和password。
\u201cCheckConnectivity\u201d会根据您提供的host和设备凭证自动生成命令,您只需复制并执行即可。
以下示例使用MQTT clientid、username和password发布telemetry。首先,将设备凭证类型从\u201cAccessToken\u201d改为\u201cMQTTBasic\u201d:
- 进入「设备」页面,点击设备打开详情窗口,再点击「管理凭据」按钮;
- 在「设备凭据」窗口中,选择「MQTT Basic」凭据类型并填写 Client ID、用户名和密码。点击「保存」。
修改设备凭证后,使用\u201cCheck connectivity\u201d功能发布telemetry:
- 点击\u201cCheck connectivity\u201d按钮打开对应窗口;
- 在弹出窗口中选择操作系统;
- 按指南命令安装客户端工具;
- 复制并执行发布telemetry的命令;
命令执行成功后,应能看到已发布的temperature读数。
MQTTS(MQTT over TLS)
单向SSL认证是标准模式,客户端通过服务器证书验证服务器身份。
按MQTT over SSL指南为自有ThingsBoard实例配置服务器证书。该证书用于MQTT客户端验证服务器证书。
配置完成后,使用\u201cCheckConnectivity\u201d下载CA根证书到工作目录并发布telemetry。首先,将设备凭证类型从\u201cAccessToken\u201d改为\u201cMQTTBasic\u201d:
- 进入「设备」页面,点击设备打开详情窗口,再点击「管理凭据」按钮;
- 在「设备凭据」窗口中,选择「MQTT Basic」凭据类型并填写设备凭据。点击「保存」。
- 点击\u201cCheckConnectivity\u201d按钮。在弹出窗口中选择操作系统,并按指南命令安装客户端工具;
- 切换到\u201cMQTTs\u201d协议。复制并执行第一条命令下载有效CA证书;
- 从工作目录(证书保存位置)复制并执行第二条命令发布telemetry。该命令使用root-ca.pem证书与ThingsBoard建立安全连接,并使用您为设备配置的凭证进行认证。
命令执行成功后,应能看到已发布的temperature读数。
以下为使用root-ca.pem证书、ThingsBoard实例host(YOUR_TB_HOST)、clientid(YOUR_CLIENT_ID)以及所选设备的clientusername和password(YOUR_CLIENT_USERNAME/YOUR_CLIENT_PASSWORD)发布telemetry的示例命令:
1
mosquitto_pub -d -q 1 --cafile root-ca.pem -h YOUR_TB_HOST -p 8883 -t v1/devices/me/telemetry -i "YOUR_CLIENT_ID" -u "YOUR_CLIENT_USERNAME" -P "YOUR_CLIENT_PASSWORD" -m {"temperature":25}