1、esp32接入阿里云物联网平台,实现天猫精灵语音控制;
2、esp8266直连接入阿里云物联网平台,实现天猫精灵找队友零配网功能和语音控制;
3、esp32 sdk 直连接入天猫精灵IOT开放平台,实现天猫精灵找队友零配网功能和语音控制;
4、如何在天猫精灵IOT开放平台二次开发智能设备的 H5控制面板;
5、分享可商用的ESP8266 SDK连接阿里云物联网生活平台的在线远程升级OTA笔记。
6、ESP8266接入阿里生活飞燕平台国际版,实现亚马逊Alexa Echo音响语音控制。
7、阿里云物联网平台的网关-子设备理论协议说明,支持Zigbee/ble等没上云能力的设备;;
我写过很多物联网控制的博文系列,包括微信公众号、微信小程序控制硬件,私有云对接天猫精灵服务器,抑或是硬件端 esp8266/esp32
等系列博文,这是一个一个专题是写下我们如何在阿里云物联网上全栈开发我们的应用专题,让我们无须企业账号也可以体验设备-云端-App” 的过程;让我们变得更强,一个人担任一个公司的全部职责,全栈开发物联网攻城狮前进;
我会带领大家轻轻松松地把自己的设备接入天猫精灵,告别 “单机时代”,走进语音控制物联网时代。 有疑问请留言区留言,或者加群大伙们讨论;写总结,写博文不容易,望大家多多体谅!
java
、vue.js
开发语言,AndroidStudio
环境;在很多物联网场景中,终端设备本身没有连接互联网能力,那么数据如何上阿里云呢?
IoT物联网平台支持设备MQTT直连,也支持的设备挂载到网关上,作为网关的子设备,由网关代理接入IoT物联网平台。
这时候网关设备除了自身作为IoT网关设备(拥有身份三元组)与IoT物联网平台建立MQTT连接,收发数据,还要负责子设备的管理,包括:
网关和子设备通信的协议由本地网络决定,可以是http,mqtt,ZigBee,Modbus,BLE等,这部分逻辑由网关实现,IoT SDK不包含这部分功能。
创建网关产品时,需要选择节点类型:网关,即指可以挂载子设备的直连设备。网关可以管理子设备、可以维持与子设备的拓扑关系,并将该拓扑关系同步到云端。
这里我选择为标准品类,Alink JSON协议:
网关连接阿里云物联网协议和普通设备连接上云的协议一致,就是对三元组计算得到MQTT的连接参数,这里不再累赘!
/sys/${网关productKey}/${网关deviceName}/thing/topo/add
/sys/${网关productKey}/${网关deviceName}/add_reply
deviceName
,productKey
,timestamp
,比如下面这个:deviceNameDevice01productKeya1bMLJS7Lxstimestamp1524448722000
{
"id": "123",
"version": "1.0",
"params": [
{
"deviceName": "Device01",
"productKey": "a1bMLJS7Lxs",
"sign": "aa2eb49753b7cbbcfda5a425623cc5190aXXXXXX",
"signmethod": "hmacSha1",
"timestamp": "1524448722000"
}
],
"method": "thing.topo.add"
}
/sys/${网关productKey}/${网关deviceName}/thing/topo/add
/ext/${网关productKey}/${网关deviceName}/combine/login_reply
clientId
,deviceName
,productKey
,timestamp
,比如下面这个:clientId123deviceNameDevice01productKeya1bMLJS7Lxstimestamp1524448722000
{
"id": "123",
"params": {
"deviceName": "Device01",
"productKey": "a1bMLJS7Lxs",
"clientId":"xuhong",
"timestamp": "1596124085",
"sign": "12d0a20622c466e71a05d079defac13e",
"signMethod": "hmacmd5",
"cleanSession": "true"
}
}
由于子设备没有网络环境上报数据,所以这项操作由网关替子设备上报数据,上报数据的格式与普通设备的协议一致!
发布topic:/sys/${子设备productKey}/${子设备deviceName}/thing/event/property/post
订阅topic:/sys/${子设备productKey}/${子设备deviceName}/thing/event/property/post_reply
比如Alink协议上报属性WaterLeachState
为1,BatteryLevel
数值为68,则 最后得到 payload
:
{
"id": "123",
"method": "thing.event.property.post",
"params": {
"WaterLeachState": 1,
"BatteryLevel": 68
}
}
由于子设备没有网络环境接收数据,所以这项操作由网关替子设备接收数据,接收数据的格式与普通设备的协议一致!
云端发布topic:/${子设备productKey}/${子设备deviceName}/user/get
订阅topic:/${子设备productKey}/${子设备deviceName}/user/get
内容可以自定义,比如这样 payload
:
{
"error": 123
}
/ext/session/${网关productKey}/${网关deviceName}/combine/logout
/ext/session/${网关productKey}/${网关deviceName}/combine/logout_reply
{
"id": 123,
"params": {
"productKey": "子设备的productKey",
"deviceName": "子设备的deviceName"
}
}
{"code":200,"data":{"productKey":"a1bMLJS7Lxs","deviceName":"Device01"},"id":"123","message":"success"}
/sys/${网关productKey}/${网关deviceName}/thing/topo/delete
/sys/${网关productKey}/${网关deviceName}/thing/topo/delete_reply
{
"id": "123",
"version": "1.0",
"params": [
{
"productKey": "子设备的productKey",
"deviceName": "子设备的deviceName"
}
],
"method": "thing.topo.delete"
}
{"code":200,"data":[{"productKey":"解绑成功的子设备的productKey","deviceName":"解绑成功的子设备deviceName"}],"id":"123","message":"success","method":"thing.topo.delete","version":"1.0"}