4.3 haas506问题汇总-关于动态注册失败
最新案例教程点击下方链接跳转,CSDN已停止更新
点
击
跳
转
1.失败原因
动态注册失败原因大致有以下几种:
(1)未在产品的详情页打开“动态注册”功能
(2)该硬件设备已经被动态注册过了,设备被动态注册过一次后,会将阿里云物联网平台中的产品–设备中的devicesecret值保存在本地。如果不切换产品的话,联云是不会出现问题的;但是在切换产品时,即A设备在A产品下注册过一次,然后将A设备放到B产品下,再次动态注册,就会出现问题。
2.若设备已经被动态注册过
问题复现:
先创建一个产品,然后在产品的详情页上找到“动态注册”并“开启”,最后在该产品下创建一个设备
在产品的详情页中,找到产品证书
将产品的productKey和productSecret这两个值复制到代码的相应位置
烧录代码,然后打开串口助手查看日志信息。如下图所示,虽然串口助手上打印的日志显示“动态注册成功”,但是在阿里云物联网平台可以看到,新创建的设备并没有被激活。
回到串口助手上,按下ctrl+c终止当前程序运行,输入下面的代码查询一下:
2.0以上固件版本操作
import kv
kv.get('_amp_customer_devicesecret')
kv.remove('_amp_customer_devicesecret')
1.17固件版本操作
>>> from driver import KV
>>> kv=KV()
>>> kv.getStorageSync('_amp_customer_devicesecret')
{'_amp_customer_devicesecret': 'a98379cff70992578cee9dbacbbe7165'}
>>>
可以知道当前设备的devicesecret是a98379cff70992578cee9dbacbbe7165,是之前一次动态注册成功后,保存在本地的值。而我们新创建的设备的devicesecret却是36c287a3f1ae25bb6d47d0e1d292a58b,所以密钥对应不上,导致动态注册失败。
3.解决办法
在串口助手上,输入下面代码:
(1)先查询该设备在本地是否保存devicesecret值,若存在且与当前设备的devicesecret值不一致,则删除该值
>>> from driver import KV
>>> kv=KV()
>>> kv.getStorageSync('_amp_customer_devicesecret')
{'_amp_customer_devicesecret': 'a98379cff70992578cee9dbacbbe7165'}
>>> kv.removeStorageSync('_amp_customer_devicesecret')
0
(2)顺便将阿里云物联网平台创建的设备也删除掉,然后再新建一个设备
删除
再建
(3)重新烧录一下代码,看看结果
设备已被激活