Arduino、安卓、ESB

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

在谈论 物联网 时,我们指的是一组连接在一起并可以交换信息的智能对象。例如,通过这种方式可以创建一组传感器,我们可以通过智能手机使用它们。在这个世界上, Arduino 扮演着重要的角色,因为它是一个低成本的系统,可以在多种情况下使用,并且可以连接到互联网。

在上一篇文章中,我们讨论了一个使用 Arduino 和 Android 来控制远程 LED 的 简单项目。这篇文章展示了一种不同的方法, Android 智能手机 不直接连接到 Arduino 及其传感器,而是使用一个组件来分离 Android 客户端和信息源 (Arduino)。

物联网架构

最近我看到一篇 解释物联网架构的有趣文章 。该架构非常复杂且用途广泛,我想仅使用一些组件来简化它。

此图显示了简化的架构:


我没有将 Android 智能手机直接连接到 Arduino ,而是使用了一个名为 ESB(企业服务总线) 的组件。在这种情况下,我更喜欢 WSO2 ESB ,因为它是一个完全开源的项目,并且非常适合 IoT 生态系统。此外,WSO2 还提出了参考架构。



为什么我们应该在物联网中使用 ESB

首先,如果您不了解 ESB 功能,我建议您看一下 这里 。我们应该使用企业服务总线有几个原因:

  • 我们可以连接到多个 Arduino 板,我们希望有一个入口点可以将请求路由到正确的板。
  • 我们可能需要将一些数据从 Arduino 数据转换为其他格式,以便我们可以连接智能手机以外的其他设备
  • 我们想实现一些身份验证逻辑,以便只有经过身份验证的客户端才能访问数据
  • 我们想在将数据从 Arduino 发送回客户端之前实现一些业务逻辑
  • 我们不想直接在互联网上公开 Arduino 开发板

使用 ESB ,我们可以将一些逻辑从 Arduino 板转移到 ESB ,只将“电子”任务留给 Arduino。例如,我们可以使用 Arduino 来监控室内温度,但我们不想添加身份验证逻辑或其他一些控件。



项目:带有 ESB 的 Android 和 Arduino

作为测试项目,我们想使用连接到 Arduino 的传感器监测室内温度。在第一个示例中, Android 智能手机连接到 ESB 并请求当前温度 。一般的物联网上下文如下所示:


在图中,在 ESB 内部实现了一个 自定义代理 。代理是位于 ESB 内部并处理来自外部资源的传入请求的组件。

使用代理,可以转换传入的请求,将其发送到目的地,然后读取响应并将其转换回来。

在我们的例子中,创建请求的源是将请求发送到代理 (ESB) 的 Android 智能手机 ,目标是 Arduino 板。



在下一篇文章中,我们将开始分析如何创建所有组件以及如何让它们说话。

到目前为止,如果你想设置 WSO2 ESB,你可以到 这里 安装应用程序。