先说一下什么是动态注册,它有啥用处:
1. 动态注册:开启动态注册后设备无需一一烧录设备证书/密钥,同一产品下的所有设备可烧录相同的产品密钥(ProductId 和 ProductSecret);意思就是产品开启动态注册功能后,STM32作为新的设备接入时,不需要再去云平台获取三元组,只需要修改代码中的设备名称就在云平台自动创建新的设备。
2. 动态注册的好处:使用动态注册的好处就在于,不需要在自己去云平台创建新的设备,我们在STM32代码里修改设备名称就可以在腾讯云物联网开发平台上创建相应的设备,并且连接。
开启后的产品,可以不创建设备,只要把产品ID和ProductSecret(产品密钥)复制下来就可以了。
工程代码的修改就在昨天工程的基础上做修改的(详情请移步:【STM32+ESP8266连接腾讯云物联网开发平台 2】STM32+ESP8266-01S连接腾讯云),本次的源码也会给大家开源出来。
设备三元组的宏我放在了ESP8266.h 文件中。
#define PRODUCT_ID " ***** " //产品ID 修改成自己的产品ID
#define DEVUICE_NAME "LED" //设备名称 新设备只需要修改这个即可
#define DEVICE_SECRET " ******** "//产品密钥 修改成自己产品密钥
#define PRODUCT_REGION "ap-guangzhou" //地域名称
之前静态的连接,是把DeviceName(设备名称)、PRODUCT_ID(产品ID)和DEVICE_SECRET(设备密钥)给8266进行连接,用的指令是:
AT+TCDEVINFOSET=,,,[,]
属于设备级的信息,而动态注册属于产品级,所以我们要用产品信息设置指令:
AT+TCPRDINFOSET=,,,,
最后一个参数可以不用填写,即使用默认:“ap-guangzhou”,设置完了使用动态注册指令:
AT+TCDEVREG
//设置产品信息
case 8:
sprintf((char *)device_massage, "AT+TCPRDINFOSET=1,\"%s\",\"%s\",\"%s\"\r\n", PRODUCT_ID, DEVICE_SECRET,DEVUICE_NAME);
HAL_UART_Transmit(&huart2, device_massage, strlen((const char *)device_massage), 5000);
osDelay(500);
break;
//动态注册
case 9:
case 10:
HAL_UART_Transmit(&huart2, "AT+TCDEVREG\r\n", strlen("AT+TCMQTTDISCONN\r\n"), 5000); //动态注册
osDelay(2000);
break;
//开始连接
case 11:
HAL_UART_Transmit(&huart2, "AT+TCMQTTCONN=1,5000,240,0,1\r\n", strlen("AT+TCMQTTCONN=1,5000,240,0,1\r\n"), 5000);//开始连接
osDelay(100);
break;
其他代码保持不变就可以进行动态注册了,
这三篇博文会同步到安信可科技官方博文当中!!
源码:https://pan.baidu.com/s/1rOEzEuz9XeIe3tAPIz1d0g 提取码:4sg4