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

目录

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

    • 1. 为什么要写一个 IOT 编程库?
    • 2. IOTutility 具有什么功能?
    • 3. IOTutility 有什么特点
    • IOTutility 实现了哪些功能
    • MQTT protocol implement MQTT 实现
      • 1. 创建一个 MQTT_Session
      • 2. 连接到服务器
      • 3. 订阅感兴趣的主题
      • 4. 可以通过 Publish 接口直接上传消息给服务器
    • 如何使用
      • 1. 下载代码
      • 2. 编译代码库
      • 3. 编译示例程序并执行
      • 4. 输出示例

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. 输出示例

[email protected]untumysqlserver:~/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, 我们的接收线程接收后会打印出消息的

主题和消息信息。

原文地址:https://www.cnblogs.com/chiang-tech/p/9662170.html

时间: 2024-08-29 08:49:51

IOTutility 一个轻量级的 IOT 基础操作库的相关文章

inifile 一个轻量级的INI文件解析库

ini文件是一种常见的配置文件.它以简单的文字与简单的结构组成.INI文件会以不同的扩展名,如".ini.",".cfg",".conf"等. INI文件的格式 INI文件由3个重要的部分组成:参数(parameters),段(sections)和注释(comments).其格式如下: 段(sections) [section] 参数(parameters) name=value 注释(comments) ;comments 每个段包括段名,注释

zBase --轻量级DOM操作库

项目地址:ZengTianShengZ-github zBase-1.2.0 --v3 修复部分bug,添加AMD规范测试 zBase-1.1.0 --v2 对 v1 版本做了升级,优化DOM查找,简化API,提高代码可读性,支持模块化 支持 AMD & CommonJS zBase-1.0.0 --v1 没有任何依赖 轻量级的Dom操作库,封装一些常用的css选择器和事件操作等 Quick start $ npm install $ gulp scripts 使用npm安装 zBase: $

科学计算库Numpy基础操作

pycharm,python3.7,numpy版本1.15.1 2018年9月11日04:23:06 """ 科学计算库Numpy基础操作 时间:2018\9\11 0011 """ import numpy print("""\n------以矩阵的方式读取数据------\n ------------genfromtxt函数('文件路径',delimiter = '分隔符',dtype = 读取方式)------

[开源] gnet: 一个轻量级且高性能的 Golang 网络库

Github 主页 https://github.com/panjf2000/gnet 欢迎大家围观~~,目前还在持续更新,感兴趣的话可以 star 一下暗中观察哦. 简介 gnet 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络库.这个库直接使用 epoll 和 kqueue 系统调用而非标准 Golang 网络包:net 来构建网络应用,它的工作原理类似于两个开源的网络库:libuv 和 libevent. 这个项目存在的价值是提供一个在网络包处理方面能和 Redis.Hap

Zepto是一个轻量级的针对现代高级浏览器的JavaScript库

参考文献:http://www.html-5.cn/Manual/Zepto/ Source code on Github Zepto是一个轻量级的针对现代高级浏览器的JavaScript库

WPF: WpfWindowToolkit 一个窗口操作库的介绍

在 XAML 应用的开发过程中,使用MVVM 框架能够极大地提高软件的可测试性.可维护性.MVVM的核心思想是关注点分离,使得业务逻辑从 View 中分离出来到 ViewModel 以及 Model 中,从逻辑上来讲,这也是业务逻辑应该处的位置. 具体来说,借助于数据绑定 (Data Binding) 以及命令 (Command) 等这些XAML 平台自身所提供的机制,使得 MVVM 在 XAML 平台上很容易实现.但是,如果你对 XAML 应用开发以及 MVVM 的使用有一定的经验,你会发现,

Cookie 详解以及实现一个 cookie 操作库

Cookie 详解以及实现一个 cookie 操作库 cookie 在前端有着大量的应用,但有时我们对它还是一知半解.下面来看看它的一些具体的用法 Set-Cookie 服务器通过设置响应头来设置客户端的 cookie,形如: Set-Cookie: <cookie名>=<cookie值> 可以同时添加多个 Set-Cookie,从而设置多个 cookie 的值. Set-Cookie 有几个可选项: Expires/Max-Age Expires/Max-Age 可以设置过期时间

Logan:美团点评的开源移动端基础日志库

前言 Logan是美团点评集团移动端基础日志组件,这个名称是Log和An的组合,代表个体日志服务.同时Logan也是"金刚狼"大叔的名号,当然我们更希望这个产品能像金刚狼大叔一样犀利. Logan已经稳定迭代了一年多的时间.目前美团点评绝大多数App已经接入并使用Logan进行日志收集.上传.分析.近日,我们决定开源Logan生态体系中的存储SDK部分(Android/iOS),希望能够帮助更多开发者合理的解决移动端日志存储收集的相关痛点,也欢迎更多社区的开发者和我们一起共建Logan

(C/C++)基于SharpUI控件库的插件式框架开发--第三篇框架基础服务库

一个框架基础的东西,一般也是操作的最基础的类,比如char.int.bool等,有时出现内存泄露的问题导致错误的抛出,但是C++开发有的时候就算是抛出异常,那也是靠经验来积累才能非常快速准确的找出错误所在,这就需要在框架中需要添加日志管理的接口,日志管理的好处就是开发者自身在找异常时提供参考,另一个就是如果用户操作时出现问题,也可将日志反馈,帮助快速解决问题:总之了为了更好的扩展完善我的框架,我详细列一下这个基础服务库(XPCore)包含内容: 虽说sharpui控件库内封闭好string类,但