IOTutility 一个轻量级的 IOT 基础操作库

Base utility for IOT devices, networking, controls etc...

IOTutility 的目的是提供一个易用的,轻量级的,能够快速使用的 IOT 编程功能库。

1. 为什么要写一个 IOT 编程库?

对于 IOT 设备而言,本身是功能比较单一,代码量也是越少越好,那么使用原生的库编程看起来应该是最好的选择。但是我在很多项目开发的初期却发现
我总是在做一些重复的编码,比如建立基础的 TCP 和 UDP 通信,设计简单的通信协议来让 IOT 设备和管理服务器之间传递数据等等。其实这些工作可以
相对完整的放在一个模块中,让我们快速的开始实施自己的想法。

2. IOTutility 具有什么功能?

目前对于 IOT 设备最主要的还是网络通信,所以 IOTutility 的主要功能是搭建网络环境和实现基本的通信协议例如 MQTT, IEC61850 等基于 TCP 的
应用层协议

3. IOTutility 有什么特点

IOTutility 是个人业余开发而来,目前仅限于功能正常,没有经过大规模测试,那么唯一的特点就是简单。

IOTutility 实现了哪些功能

目前只实现了基础的 UDP 和 TCP 通信,多线程和基础信号量,以及部分 MQTT 协议。

MQTT protocol implement MQTT 实现

app 目录中包含了一个 MQTT client 的实现,要实现一次 MQTT 通信,只需要以下几个步骤:

1. 创建一个 MQTT_Session

MQTT_Session* Session = MQTT_SessionCreate("198.41.30.241", 1883);

以上是创建一个到 iot.eclipse.org 的 MQTT 通信

2. 连接到服务器

Session->Connect(Session);

直接调用 Connect 接口,连接到创建的服务器地址

3. 订阅感兴趣的主题

Session->Subscribe(Session, "wuhan/#");

这样会订阅所有传递到 iot.eclipse.org 服务器以 wuhan/ 开头的所有消息,如果要处理这些消息,需要调用 Fetch 接口:

Session->Fetch(Session, topic_and_message);

4. 可以通过 Publish 接口直接上传消息给服务器

Session->Publish(Session, "wuhan/test", "hello", 5);

如何使用

1. 下载代码

git clone https://github.com/ruiers/IOTutility.git

2. 编译代码库

cd IOTutility
make

3. 编译示例程序并执行

make mqtt_client.bin
./mqtt_client.bin

4. 输出示例

android@ubuntumysqlserver:~/share/github/IOTutility$ ./mqtt_client.bin
a
topic 10:wuhan/test
message 5:hello
a
topic 10:wuhan/test
message 5:hello
z

按下 ‘a’ 发送一个消息到服务器,按下 ‘z’ 退出程序。 消息发送到 iot.eclipse.org, 我们的接收线程接收后会打印出消息的

主题和消息信息。

最新文章

  1. Vim 资料总结
  2. 教你如何做Lotus Domino的应用开发
  3. 移动混合开发之文件管理Final之总结
  4. python之错误和异常
  5. UR #13 Ernd
  6. 配置Linux数据转发(给其他接口转发一个接口的internet网络)
  7. NGU-学习笔记(1)-动态添加删除图集
  8. QQ 国际版(International version) - 关闭弹出资讯
  9. 使用证书部署出现System.Security.Cryptography.CryptographicException 错误解决方案
  10. 「OC」构造方法和分类
  11. 一款好用的绘图软件gnuplot
  12. ubuntu修改键盘映射
  13. openstack Ocata版本 python
  14. 初窥Java之一
  15. 通俗大白话来理解TCP协议的三次握手和四次断开
  16. 【python】理解循环:for,while
  17. Upload文件时出现"Cannot access a closed file"错误
  18. Codeforces 838B - Diverging Directions - [DFS序+线段树]
  19. dev右下角增加弹框提示信息
  20. Siege(开源Web压力测试工具)——多线程编程最佳实例

热门文章

  1. 为订阅内虚拟机批量安装并配置 Microsoft Anti-Malware 扩展
  2. Azure School 终于上线了,物联网开发课程先走一波~
  3. ProxySQL读写分离
  4. Java中执行.exe文件
  5. MySQL案例05:CPU负载优化
  6. 为什么java中只允许继承一个类?
  7. SQL Server Mobile/Compact Edition 简单介绍
  8. SQL常用
  9. T-SQL批处理
  10. BZOJ4807:車(组合数学,高精度)