大家好,今天小编给大家介绍一些机智云通信协议相关的基础知识,欢迎一起交流学习。

1、gagent目录

该目录下的文件为机智云设备接入协议库文件,包括mqttlib.o,mqttgat.o等mqtt(Message Queuing Telemetry Transport,遥信消息队列传输协议)相关的协议实现。

2、gizwits目录介绍

gizwits_product.c,该文件为平台相关处理文件,存放事件处理API接口函数,即 gizwitsEventProcess();

gizwits_product.h,该文件为 gizwits_product.c 的头文件,存放产品相关宏定义如: HARDWARE_VERSION 、SOFTWARE_VERSION

gizwits_protocol.c,该文件为协议实现文件,存放 SDK API 接口函数

gizwits_protocol.h,该文件为 gizwits_protocol.c 对应头文件,协议相关宏定义以及 API 接口声明均在此文件中。

3、控制协议流程

与控制型协议相关的函数调用流程如下:

                 

相关API介绍:

giziIssuedProces,该函数被gagent调用,接收来自云端或app端下发的相关协议数据

ACTION_CONTROL_DEVICE,进行“控制型协议”的相关处理

gizDataPoint2Event,根据协议生成“控制型事件”,并完成相应数据类型的转换

gizwitsEventProcess,根据已生成的“控制型事件”进行相应事件处理(即调用相应的驱动函数)

4、上报协议流程

与上报协议相关的函数调用流程如下:

                  

相关API介绍

userTimerFunc,获取用户区的上报型数据

gizwitsHandle,用户调用该接口可以完成设备数据的变化上报

gizCheckReport,判断是否上报当前状态的数据

gizDataPoints2ReportData,完成用户区数据到上报型数据的转换

gagentUploadData,将上报数据发送给bg96模组

并不是每次获取到的数据都需要上报,而是满足如下条件:(满足其中之一即上报)

a. 控制型数据发生状态变化,立刻主动上报当前状态

b. 用户触发或环境变化所产生的, 其发送的频率不能快于6秒每次

具体判断逻辑可以参考gizwits_protocol.c文件中的gizCheckReport接口。

5、只读型数据处理

获得到用户区的原始数据后,在传输到云端前要进行相应的数据转换,所以要在gizDataPoints2ReportData中完成相应的数据的转换。

相关API

gizDataPoints2ReportData,完成传输数据的压缩处理。(gizwits_protocol.c)

gizY2X,将用户区数据转化为传输数据。(Utils/dataPointTools.c)

a. 机智云为使设备功能定义更加简单直接,使用户输入的数值转换成设备能够识别的uint类型,这套算法的核心公式是:y=kx+m (y:显示值;x:传输值;k:分辨率;m:增量

对于:gizY2X:x=(y - m)/k,可知是将用户区数据转化为传输数据。

gizX2Y: y=kx+m ,可知是将传输数据转换成APP UI界面的显示值。

b. 数据压缩与解压缩处理

设备端与自云端的数据交互过程中,一些特殊类型(bool和enum类型)的数据点原始数据只有被特殊处理后才可被云端解析,所以设备端在接收云端数据时要进行数据的解压处理;在向云端发送数据时进行数据的压缩处理。

相关API: (Utils/dataPointTools.c)

gizStandardCompressValue, bool和enum类型数据点数据解压。

gizCompressValue, bool和enum类型数据点数据压缩。

详细逻辑可以查看源码中APi定义。

6. 总结

本篇主要介绍gizwits相关的控制协议和上报协议的大致流程,更多具体细节可以查看代码流程。

机智云相关的控制协议和上报协议简介相关推荐

  1. 实操案例:机智云调试APP控制云端虚拟设备

    本文通过<机智云调试APP控制云端虚拟设备>实操案例,快速理解和体验机智云接入服务,完成新手入门. 机智云自助开发平台 机智云自助开发平台提供一套模拟软件开发工具,其中包括虚拟设备和机智云 ...

  2. leach协议c++代码_入门教程4:教你STM32F407标准库移植机智云代码(控制LED灯)

    我们知道,使用机智云自助开发平台会根据产品定义的数据点生成对应产品的设备端代码即MCU代码包.自动生成的代码实现了机智云通信协议的解析与封包.传感器数据与通信数据的转换逻辑,并封装成了简单的API,且 ...

  3. 【物联网开发】正点原子STM32战舰v3+机智云AIoT+APP控制

    第一步:进入到机智云开发者中心,注册开发者账号,然后开始创建新产品. 图1创建新产品 图2创建新产品以及产品分类 设置好后点击保存,这个时候会跳转到开发向导界面,选择去添加数据点. 图3开发向导 图4 ...

  4. 微信硬件平台结合机智云,实现微信控制硬件设备

    随着微信公众号及微信小程序的崛起,手机app的缺点开始凸显出来,尤其像一些功能不多,画面也不用很绚的app,完全是可以用微信公众号或者小程序替代的.因此公司也打算往微信公众号这块发展,此篇文章将实现一 ...

  5. 基于机智云自助开发平台的智能水产养殖之鱼塘控制系统设计

    本设计针对传统鱼塘的养殖和管理现状,面向中小型鱼塘养殖户设计开发了一套鱼塘智能控制系统,满足鱼塘养殖环境的数据采集.无线传输.实时显示.远近程手动控制和自动控制等功能上的需求,可及时检测和控制影响鱼类 ...

  6. 国内外物联网平台初探(篇五:机智云平台)

    国内外物联网平台初探(篇五:机智云平台) ------ [导读]------ 物联网智库将在每周五下午的第二篇文章推送由马智先生研究撰写的系列文章--<国内外物联网平台初探>. 物联网智库 ...

  7. 五分钟了解机智云自助接入流程

    机智云平台是致力于物联网.智能硬件云服务的开放平台.机智云专注于提供智能云服务及物联网的软硬件一体化解决方案,帮助传统硬件厂商产品升级,快速实现硬件智能化. 要实现硬件的智能化,除了硬件本身外,还需要 ...

  8. 基于机智云物联网平台的智能电梯管理系统

    摘要: 随着科技的发展与电梯的普及,为解决传统电梯舒适性与安全性不足的问题,智能电梯管理系统解决方案应运而生.介绍了以STC89C52RC单片机为核心,使用数码管和LED.矩阵键盘.电机驱动.WiFi ...

  9. 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台

    国内物联网平台(5) --机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测. ...

最新文章

  1. 卧槽!新基建背景下,这些姿势架构师必须懂!
  2. java spring 服务器关闭_通过springboot怎么停止服务器??
  3. 表名含有后缀 mysql 怎么删除_mysql批量删除指定前缀或后缀表
  4. JS 中判断一个对象是否为数组对象?
  5. Autofac之自动装配
  6. Java服务器 dm Server
  7. Bootstrap 面包屑导航
  8. mysql 树形结构_结合RBAC模型讲解权限管理系统需求及表结构创建
  9. QT 框架搭建,用最原始的方法实现简单的塔防游戏 | 原力计划
  10. Sklearn——用Sklearn实现线性回归(LinearRegression)
  11. 元气森林海外负责人柳甄离职:是柳传志侄女 柳青堂姐妹
  12. hbase snappy 安装_hbase自带snappy压缩测试出错
  13. iptables 一些命令
  14. 微信小程序之校园二手交易系统app毕业设计ssm
  15. 网页设计基础教程(1) PS篇
  16. VS2008 工程运行时候的一个R6034问题
  17. com.google.guava maven依赖
  18. 【机器学习】Scikit-Learn数据预处理文档翻译+笔记记录 - 1
  19. 算法系列之九:计算几何与图形学有关的几种常用算法(二)
  20. 百度云云虚拟主机新用户体验活动:6元购买3个月香港主机

热门文章

  1. 向日葵控制服务器显示颜色不对,使用向日葵控制软件后电脑窗口的外观就改变了还不透明了。怎么办?...
  2. 架构可细分为业务架构、应用架构、技术架构
  3. 澳大利亚各大城市生活成本
  4. 学android逆向能干,教我兄弟学Android逆向04
  5. windows下的makefile教程
  6. Java面向对象程序设计笔记 • 【目录】
  7. 简析京东、当当、红孩子平台B2C的品牌策略
  8. 红雪iOS6.1.3不完美越狱教程
  9. xp计算机服务器名称,如何查看服务器名称?
  10. 三国志5剧本修改器 1.1