本文介绍了使用腾讯云物联网开发平台 IoT Explorer
创建物联网 IoT 设备,其中包括了新建项目产品、定义产品物模型、新建设备。关于 IoT 设备端的配置和硬件可以参见这两篇文章(尚未完成)。
登录腾讯物联网平台创建设备
访问腾讯云物联网开发平台 Iot Explorer https://console.cloud.tencent.com/iotexplorer。
新建项目和产品
点击 创建实例
–> 项目列表
–> 新建项目
,此处需要填写项目名称和项目描述,新建项目 xdshcn_IoTE
。创建完项目、进入项目之后,点击 产品开发
–> 新建产品
。
- 在
新建产品
的表单里面创建产品的名称,产品品类中选择“自定义品类”,通信方式选择“WiFi”; - 在认证方式中选择密钥认证(注意:密钥认证只适用于
ws
、tcp
协议;而证书认证可以支持wss
协议); - 数据协议中选择“物模型”,以方便我们之后的配置和数据转发;
- 其他参数可参照图示填写。
定义产品的物模型
在新建产品之后会出现如下界面,在此处分别有5个步骤:物模型
–> 设备开发
–> 交互开发
–> 设备调试
–> 批量生产
。由于在本例中仅介绍最简单的 IoT 设备产品的创建,所以其中设备开发、交互开发和批量生产在本文中将会被忽略。
首先,要在物模型中新建自定义功能,如下图所示,在本例中将新建一个可以检测环境湿度和温度的传感器设备(该设备使用 D1 mini
和 DHT11
组成,详细内容可以查看此篇文章;有关 D1 mini
可以查看此篇文章),这里新建两个需要测量的变量,分别是温度
和湿度
。
具体的设置样例可以参见下图,数据类型均选择浮点型
。由于温湿度传感器只会发送数据供我们读取,而我们并不需要将数据写入设备进行设备的控制,所以此处选择只读
即可;数值范围可以自行设定,此处仅供参考;步长作为数据的显示精度,可以自行调整。
在下一步“设备开发”中,可以选择相应的 SDK,本例中我们默认跳过。可以点击 Topic列表
,在物模型 Topic
中有两条在本例中需要用到的 Topic,分别对应着发布
和订阅
,其实也就是对应着数据的发布和数据的订阅。此处我们什么也不用做,记着有这两条即可,之后将会在设备中用到。
在第三步“交互开发”中,我们可以选择接入腾讯连连官方小程序,但是如果真的需要任意一位用户在使用我们自己开发的 IoT 设备时,通过“腾讯连连”小程序激活、访问和控制该设备,那么我们所建的产品需要通过腾讯云的审核才行。所以,此处为了进一步简化流程,将该页面上的两个按钮均关闭,之后将在其他文章中详细展开。
新建设备
在第四步“设备调试”中,我们需要新建设备:此处的设备就是文中提到的 IoT 设备,点击新建设备,给设备命名即可。在本例中新建两个设备,一个设备叫做Sensor1
,用于读取温度和湿度数据;另一个设备叫做SerialScreen
,用于显示读取的设备温湿度数据(这两个设备的详情可以查看这两篇文章:暂未完成)。此时,设备状态这一栏将会显示设备正处于未激活
状态,下一步将获取设备的登录密钥以激活并上线设备。
生成MQTT登录参数
物联网通信 设备基于 TCP 的 MQTT 接入-开发者手册-文档中心-腾讯云-腾讯云
为了获取设备的登录密钥以激活并上线设备,我们需要直接在上一步的界面中点击设备名称,在新页面中得到设备名称
、设备密钥
、产品ID
(如下图所示)。将这三个参数分别填入到下方的 Python 脚本并点击运行之后,即可获得ClientID
、用户名
、设备密钥
,然后将会使用这三个参数将设备接入腾讯云物联网开发平台。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import base64
import hashlib
import hmac
import random
import string
import time
import sys
# 生成指定长度的随机字符串
def RandomConnid(length):
return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(length))
# 生成接入物联网通信平台需要的各参数
def IotHmac(productID, devicename, devicePsk):
# 1. 生成 connid 为一个随机字符串,方便后台定位问题
connid = RandomConnid(5)
# 2. 生成过期时间,表示签名的过期时间,从纪元1970年1月1日 00:00:00 UTC 时间至今秒数的 UTF8 字符串
expiry = int(time.time()) + 30*24*60 * 60
# 3. 生成 MQTT 的 clientid 部分, 格式为 ${productid}${devicename}
clientid = "{}{}".format(productID, devicename)
# 4. 生成 MQTT 的 username 部分, 格式为 ${clientid};${sdkappid};${connid};${expiry}
username = "{};12010126;{};{}".format(clientid, connid, expiry)
# 5. 对 username 进行签名,生成token
secret_key = devicePsk.encode('utf-8') # convert to bytes
data_to_sign = username.encode('utf-8') # convert to bytes
secret_key = base64.b64decode(secret_key) # this is still bytes
token = hmac.new(secret_key, data_to_sign, digestmod=hashlib.sha256).hexdigest()
# 6. 根据物联网通信平台规则生成 password 字段
password = "{};{}".format(token, "hmacsha256")
return {
"clientid" : clientid,
"username" : username,
"password" : password
}
if __name__ == '__main__':
# 参数分别填入: 产品ID,设备名称,设备密匙;下方参数为虚构,请勿使用。
print(IotHmac("F2IXXXXXXX","ultxxxxxnic1","IvUqrHxgbixxxxxoQBs3Q=="))
关于 Projet IoTE
从本文起,发现可以单独列一个 Projet IoTE
的分类来记录有关物联网硬件产品开发的一些事情,顺便可以将之前的一些文章串起来备用。
- 如何安装Arduino IDE?添加附加开发板?以 ESP32 为例 2023/4/18
- 基于立创EDA如此顺畅(第四篇)第一次小批量PCBA 生产!自制ESP32-C3开发板 带有充放电和直流电机驱动 2023/4/1
- 基于立创EDA如此顺畅(第三篇)新升级!自制ESP32-C3开发板 带有充放电和直流电机驱动 并首次尝试 SMT 贴片 2023/3/10
- 基于立创EDA如此顺畅(第二篇)整出一块带有充放电的 ESP32-C3 开发板 2023/1/29
- 使用 MH-CD42 模块管理锂电池充放电🔋 2022/10/11
- Micro USB 公头转 Type-C 母头转接器制作 2022/10/11
- 使用腾讯云物联网 IoT Explorer 创建 IoT 设备 ☁️ 2022/6/18
- 性价比 + WIFI + Arduino:开发板 D1 mini 2021/10/11