查看: 1742|回复: 0

氦氪云入门教程10-聊聊产品接入协议

[复制链接]
  • TA的每日心情
    开心
    2016-11-11 12:32
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2017-8-17 10:27 | 显示全部楼层 |阅读模式
    本帖最后由 lawrencedon 于 2017-8-17 10:38 编辑

    在开发者控制台建立产品时,会选择接入协议。
    1.png
    目前有4种接入协议:
    JSON透传协议
    JSON主控协议
    48透传协议
    JSON透传协议不校验raw

    这些协议可以分为两大类:
    1.指令是JSON格式
    JSON透传协议是JSON主控协议的特例,JSON透传协议不校验raw是JSON透传协议的特例。


    JSON透传协议:
    云端会校验JSON数据中data部分的raw字段的值是否符合在控制台中设置的产品协议。
    选择JSON透传协议时,一般使用我们的官方透传固件,产品采用WiFi模块+单片机的方式,单片机作为主控芯片,WiFi模块只作为一个功能模块接入。使用该协议时,也可以不外接单片机,但是需要你自己编写固件。
    我们的官方透传固件使用JSON透传协议且实现了串口透传协议

    相关文档:
    2.4 APP发送数据到设备 2.4.2 设备使用JSON透传协议时
    2.5 设备发送数据到APP 2.5.2 设备使用JSON透传协议时


    JSON主控协议:
    云端会校验JSON数据中data部分的K-V键值对是否符合在控制台中设置的产品协议。
    选择JSON主控协议时,一般使用基于我们设备端的SDK编写的固件,只使用WiFi模块,不外接单片机,WiFi模块作为主控芯片。使用该协议时,也可以外接单片机,至于WiFi模块和单片机之间的通信协议,你可以自己制定。

    相关文档:
    2.4 APP发送数据到设备 2.4.1 设备使用JSON主控协议时
    2.5 设备发送数据到APP 2.5.1 设备使用JSON主控协议时


    JSON透传协议不校验raw:
    顾名思义,云端不会校验JSON数据中data部分的raw字段的值,选择该接入协议时,控制台中不会出现产品协议设置页面。
    选择JSON透传协议不校验raw时,如果使用我们的官方透传固件,需要遵循串口透传协议的格式规范,业务数据可以随便填,云端不校验业务数据。
    如果是自己写固件,所有的数据都可以随便填,不需要遵循我们的串口透传协议,而且JSON数据中data部分里不仅可以有raw字段,还可以有其他的K-V键值对,但是一定要有raw字段。
    使用该协议时,开发者不用在控制台设置产品协议,云端也不校验收发的数据,所以数据代表的意义对云端是透明的,云端无法提供数据统计分析,告警推送,设备联动等高级功能。

    自己编写设备端固件,可以按照我们的文档全部自己做,也可以基于我们设备端的SDK

    2.指令是48开头的字符串格式
    48透传协议:
    主要针对移动模块,保证在相同的有效载荷数据下,尽量减少附属数据的数量,以节省流量。
    具体协议规范请参看移动模块接入方案

    最后,我们利用开发者控制台中的虚拟设备调试页面,来看看JSON透传协议和JSON主控协议有什么不同。
    使用JSON透传协议,APP下发数据:
    2.png

    3.png
    使用JSON透传协议,设备上报数据:
    4.png

    5.png

    使用JSON主控协议,APP下发数据:
    6.png

    7.png

    使用JSON主控协议,设备上报数据:
    8.png

    9.png

    从以上的截图,我们可以发现JSON透传协议和JSON主控协议最大的不同是JSON数据中data部分的内容:
    JSON透传协议中data部分的内容形式是 {"raw":"48xxxxxx"}
    JSON主控协议中data部分的内容形式是 {"cmdId":x,"K1":"V1","K2":"V2",...}



    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    arduino首次编译通过第二次编译必报错
    arduino首次编译通过第二
    如题: 刚打开ide 首次编译 上传都没问题 不管你改不改代码 直接进行 编译 或者上传
    【Arduino】108种传感器系列实验(06)---声音传感器模块
    【Arduino】108种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    旧版本ide中 ino文件名不能以数字开头,不能有中文?
    旧版本ide中 ino文件名不
    最近下载了站长编著的ARDUINO程序设计基础一书的配套例程。发现用arduino ide打开 里
    用Blinker获取天气信息并用ArduinoJson6分析数据(arduino D1)
    用Blinker获取天气信息并
    在Blinker最新版本的库中我们看到它用了ArduinoJson6,图中的两个类是ArduinoJson6的类
    一波三折,分享我的esp32编译环境搭建arduino
    一波三折,分享我的esp32
    买了个esp-wroom32开发板,想用熟悉的arduino敲代码。 但是上网查遍了所有办法,要么
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表