oauth相关流程图

1 正常流程

1.1 oauth流程

Created with Raphaël 2.1.2oauth流程IoT设备接入平台app博联h5网关博联云第三方云平台第三方云博联云发现设备,开始接收probe request报文处于配网模式发送probe request广播报文(dst全为0xFF),150ms发送一包,每个信道停留300ms后续所用交互报文,都是采用单播的形式返回应答probe单播报文(dst为IoT设备mac),包含channel信息锁定信道发送probe request单播报文,通知网关锁定信道成功上报设备信息(mac/vendorId/productId/deviceId/deviceInfo)透传网关上报的数据返回设备详细信息TTS语音播报,发现设备等待用户确认开始配网,假设用户确认开始配网发送probe单播报文,开始配网发送probe request单播报文,包含challenge数据透传devChallenge数据透传devChallenge数据返回cloudChallenge和cloudSignature数据透传cloudChallenge和cloudSignature数据发送probe单播报文,包含cloudChallenge和cloudSignature数据校验cloudSignature,并根据cloudChallenge计算devSignature数据,计算sharedkey发送probe request单播报文,包含devSignature数据透传devSignature数据透传devSignature数据校验devSignature数据发送sharedkey数据透传sharedkey数据使用sharedkey对ssid和password进行对称加密(aes 128bit cbc pkcs7 padding)发送probe单播报文,包含加密数据使用sharedkey解密数据,保存ssid和password,同时生成token数据,使用sharedkey进行加密发送probe request单播报文,包含加密的token数据token是后续用来控制IoT设备密钥,每次复位都会改变(20Bytes)使用sharedkey进行解密获取token数据发送token数据发送设备注册请求,包含token数据返回设备列表数据需要缓存返回的数据,超时时间为60s左右token bind成功发送probe单播报文,token bind成功开始连接AP成功连接AP设备上线设备上线通知将缓存的数据保存到数据库中

1.1 控制流程

Created with Raphaël 2.1.2正常控制流程IoT设备IoT设备第三方云平台第三方云平台博联云博联云控制参数,带上token信息转成二进制透传数据执行控制命令返回控制结果返回控制结果

2 异常流程

2.1 IoT设备配网超时异常流程

Created with Raphaël 2.1.2IoT设备配网超时异常流程IoT设备IoT设备外界环境外界环境处于配网模式发送probe request广播报文(dst全为0xFF),150ms发送一包,每个信道停留300ms从配网模式开始超过10min没有开始配网流程,退出配网模式,停止发送probe request广播报文

2.2 配网过程中IoT设备出现丢包异常流程

Created with Raphaël 2.1.2配网过程中IoT设备出现丢包异常流程1IoT设备IoT设备网关网关第三方云平台第三方云平台博联云博联云发现设备,开始接收probe request报文处于配网模式省略省略发送probe request单播报文,包含challenge数据透传devChallenge数据透传devChallenge数据返回cloudChallenge和cloudSignature数据透传cloudChallenge和cloudSignature数据网关没有发送probe单播报文,或者网关发送的probe单播报文没有被IoT设备接收到距离上一次收到网关发送的报文时间超过2s,IoT设备开始执行重试流程重新发送包含challenge数据的probe request单播报文,并将重试次数加一最大重试次数为5次,超过次数后判定为配网失败发送probe request单播报文,包含重试失败的错误码重新回到切换信道发包状态配网流程结束,此次配网失败
Created with Raphaël 2.1.2配网过程中IoT设备出现丢包异常流程2IoT设备IoT设备网关网关第三方云平台第三方云平台博联云博联云发现设备,开始接收probe request报文处于配网模式省略省略发送probe request单播报文,包含devSignature数据透传devSignature数据透传devSignature数据校验devSignature数据发送sharedkey数据透传sharedkey数据使用sharedkey对ssid和password进行对称加密(aes 128bit cbc pkcs7 padding)网关没有发送probe单播报文,或者网关发送的probe单播报文没有被IoT设备接收到距离上一次收到网关发送的报文时间超过2s,IoT设备开始执行重试流程重新发送包含challenge数据的probe request单播报文,并将重试次数加一最大重试次数为5次,超过次数后判定为配网失败发送probe request单播报文,包含重试失败的错误码重新回到切换信道发包状态配网流程结束,此次配网失败
Created with Raphaël 2.1.2配网过程中IoT设备出现丢包异常流程3IoT设备IoT设备网关网关第三方云平台第三方云平台博联云博联云发现设备,开始接收probe request报文处于配网模式省略省略发送probe request单播报文,包含加密的token数据使用sharedkey进行解密获取token数据发送token数据发送设备注册请求,包含token数据返回设备列表数据需要缓存返回的数据,超时时间为60s左右token bind成功网关没有发送probe单播报文,或者网关发送的probe单播报文没有被IoT设备接收到距离上一次收到网关发送的报文时间超过2s,IoT设备开始执行重试流程重新发送包含challenge数据的probe request单播报文,并将重试次数加一最大重试次数为5次,超过次数后判定为配网失败发送probe request单播报文,包含重试失败的错误码重新回到切换信道发包状态配网流程结束,此次配网失败缓存数据超时,丢弃

2.3 博联云校验devSignature失败异常流程

Created with Raphaël 2.1.2博联云校验devSignature失败异常流程IoT设备IoT设备网关网关第三方云平台第三方云平台博联云博联云发现设备,开始接收probe request报文处于配网模式省略省略发送probe request单播报文,包含devSignature数据透传devSignature数据透传devSignature数据校验devSignature数据校验devSignature数据失败校验devSignature数据失败配网流程结束,此次配网失败超过10min后退出配网模式

2.4 IoT设备校验cloudSignature失败异常流程

Created with Raphaël 2.1.2IoT设备校验cloudSignature失败异常流程IoT设备IoT设备网关网关第三方云平台第三方云平台博联云博联云发现设备,开始接收probe request报文处于配网模式省略省略返回cloudChallenge和cloudSignature数据透传cloudChallenge和cloudSignature数据发送probe单播报文,包含cloudChallenge和cloudSignature数据校验cloudSignature失败发送probe request单播报文,包含检验cloudSignature失败错误码重新回到切换信道发包状态配网流程结束,此次配网失败

2.4 IoT设备连接AP失败异常流程

Created with Raphaël 2.1.2IoT设备连接AP失败异常流程IoT设备IoT设备网关网关第三方云平台第三方云平台博联云博联云发现设备,开始接收probe request报文处于配网模式省略省略发送probe单播报文,token bind成功开始连接AP没有连上AP超过30s,判定为连AP失败发送probe request单播报文,包含连接AP失败错误码配网流程结束,此次配网失败重新回到切换信道发包状态

3 网关SDK调用流程

Created with Raphaël 2.1.2网关SDK调用接口IoT设备IoT设备SDKSDK网关网关第三方云平台第三方云平台博联云博联云发现设备,开始接收probe request报文sdk_init(channel/gateway_mac/...)处于配网模式发送probe request广播报文(dst全为0xFF),150ms发送一包,每个信道停留300mssdk_pkt_process()sdk_raw_pkt_send_t()返回应答probe单播报文(dst为IoT设备mac),包含channel信息锁定信道发送probe request单播报文,通知网关锁定信道成功sdk_pkt_process()sdk_found_device_t(product_info)上报设备信息(mac/vendorId/productId/deviceId/deviceInfo)透传网关上报的数据返回设备详细信息TTS语音播报,发现设备等待用户确认开始配网,假设用户确认开始配网sdk_user_auth_to_start_config()sdk_raw_pkt_send_t()发送probe单播报文,开始配网发送probe request单播报文,包含challenge数据sdk_pkt_process()sdk_challenge_post_t(devChallenge)透传devChallenge数据透传devChallenge数据返回cloudChallenge和cloudSignature数据透传cloudChallenge和cloudSignature数据sdk_challenge_and_signature_set(cloudChallenge/cloudSignature)sdk_raw_pkt_send_t()发送probe单播报文,包含cloudChallenge和cloudSignature数据校验cloudSignature,并根据cloudChallenge计算devSignature数据,计算sharedkey发送probe request单播报文,包含devSignature数据sdk_pkt_process()sdk_signature_post_t(devSignature)透传devSignature数据透传devSignature数据校验devSignature数据发送sharedkey数据透传sharedkey数据使用sharedkey对ssid和password进行对称加密(aes 128bit cbc pkcs7 padding)sdk_wlan_params_set(ssid/password/sharedkey)sdk_raw_pkt_send_t()发送probe单播报文,包含加密数据使用sharedkey解密数据,保存ssid和password,同时生成token数据,使用sharedkey进行加密发送probe request单播报文,包含加密的token数据sdk_pkt_process()sdk_device_token_post_t(token)发送token数据发送设备注册请求,包含token数据返回设备列表数据需要缓存返回的数据,超时时间为60s左右token bind成功发送probe单播报文,token bind成功开始连接AP成功连接AP设备上线将缓存的数据保存到数据库中当IoT设备出现10min超时/重试超时/校验cloudSignature失败/连接AP失败等异常时,流程如下发送probe request单播报文,包含错误码数据sdk_pkt_process()sdk_config_result_post_t(errno)配网流程结束,此次配网失败,并根据不同的errno进行相应处理