Luat开源硬件

LUAT实践 – 消息机制让我们的功能组件更解耦

2018-03-27  本文已影响25人  Luat物联网通信模块

本实践目标

相关资料

场景需求

好遗憾,难倒不需要硬件连接了吗 >_<

硬件当然是必须的,因为我们需要运行在luat平台上嘛,只是硬件的准备会更加简化,只需要一个air202的实验板 + micro usb线就够啦:)

我们假定我们的产品功能特性如下:
场景一: 特性,外设是需要支持选配的
场景二: 针对某定制项目需要增加当前产品不包含的特性
针对以上的特性要求和场景,我们的目标

接下来我们就看看luat的事件处理可以给我们带来什么令人惊喜的体验 :)
这当然不会是唯一的方式,希望可以有更多的讨论,让我们找到更多更优雅的办法
初心依旧,抛砖引玉:)

要点分析及其说明

传感器模块 sensor
-   温湿度检测
-   CO2浓度检测
设备显示模块 display(UI)
-   led
-   单色lcd
-   彩色lcd
-   串口屏
业务上报模块 reporter
-   socket
-   mqtt
-   http
报警模块 alarm
-   继电器处理
-   短信报告

针对这些功能特性的实现,我们可以考虑的方式应该会有很多种

首先我们将模块进行简单的分类,生产者和消费者, 生产者负责生产商品,消费者负责消费商品,luat的事件机制在其中充当销售员的角色,生产者和消费者无需进行直接的对话

生产者
此处生产者是唯一的, 传感器模块 sensor

消费者
此处的消费者是开放的,设备显示 display(UI), 业务上报(reporter), 报警模块(alarm)
也许将来会有我们现在不会考虑的,将数据记录最新1000条到SD卡(recorder)

此处连接生产者和消费者的商品是什么呢?

luat的事件(event)

在此基础上,我们就可以将事件(event)作为一个规约设计的入口,各个模块间通过event进行交互
而event在各个模组间的交互,就完全托管给luat平台 :)

sys.dispatch('SENSOR_EVENT')
local function consume()
     print("//TODO consume logic")
end
local procer = {
     SENSOR_EVENT = consume,
}
sys.regapp(procer)

我们将以上的设想用简单的描述如下 :


image

代码地址

https://github.com/wingpengfei/luatcookie/tree/master/air20x/src/event
这里的代码很简化,就是简单体验了event的生产与消费。
希望和大家互相学习,一起进步:)

上一篇 下一篇

猜你喜欢

热点阅读