在英特尔Edison平台上建造与执行MosquittoMQT

2020-06-27  阅读 942 次

在英特尔Edison平台上建造与执行MosquittoMQT
A WowWee robot is seen at the SIdO, the Connected Business trade show in Lyon April 7, 2015. The new professional event dedicated to the Internet of Thingstakes place in Lyon on April 7 and 8. REUTERS/Robert Pratta - RTR4WETL
简介

英特尔 Edison 板子的一个最大特色就是它不仅仅是一个 Arduino 兼容开发板,它也是一个可以提供基础 linux 存取能力给 Arduino sketch 的 linux 单板电脑。

在这个一系列的部落格中,我将探究不同种方式将 linux 能力整合到 Arduino sketch 当中,并且如何借用既有的程式码来让物联网开发更加简单。

我们将开始建造一个简单的感测器结点,包含温度感测器,光感测器和 LED 与开关。之后我们会使用 MQTT 发布资料到网际网路。使用 Node-Red 来触发事件,并且传送命令回到我们的感测器端点,藉此证明某些初步的资料分析。

Edison 板子的 linux 分支是来自于 Yocto 专案  。 Yocto 是一个为了有限资源的嵌入式系统所设计的小型的 Linux 核心。

MQTT

MQTT 是一个机器与机器间沟通的轻巧协定。 MQTT 基于 TCP/IP 协定之上,使用了 publish/subscribe 讯息 转传模式。 MQTT 协定的中心是一个 MQTT 伺服器或代理人,它可以让 publisher 或是 subscriber 来存取。使用 MQTT 可以建置一个感测网路,各种感测器可以用其独特的讯息格式发布它的感测值给其他的感测器。促动器也可以附注它所产生的功用到不同的讯息中。 MQTT 代理人将负责将讯息从 publishers 转送到 subscribers 。

範例:

微处理器 A 可以读取开关的状态,并且以"switch = on" 的讯息模式发布开关状态的讯息到 MQTT 伺服器。网路上的微处理器 B 订阅 MQTT 讯息"switch"。一但使用者拨动开关,微处理器 A 将发布一个讯息到 MQTT 代理人。这个代理人将转发这个讯息到列表上的订阅者。当微处理器 B 收到这个讯息,它可以分析这个内容,决定开关的状态并且决定电灯开或关。

更详细的 MQTT 可以在 http://mqtt.org 找到。

Edison 平台的 Yocto 作业系统 OS 伴随着一个小型的 MQTT 代理人,称之为 RSMB  。不幸的是,为了测试目的的用户端 MQTT 并没有包含在内。 在这篇文章中,我们将建置另一个 MQTT 代理人,称之为 Mosquitto ,大部分主要是当用户端的角色。在后续的文章中,我们将使用这些用户连接到我们的 Arduino sketches 。

在 Edison 平台建置 Mosquitto

预先假设读者已经架设好他们的 Edison 板子,并且熟悉标準的 Linux 操作。

建造 Mosquitto 是十分直觉的,并不需要思考太多。以下是在 Edison 平台上建造 Mosquitto 的步骤:

1. 从 org 下载 mosquitto

在英特尔Edison平台上建造与执行MosquittoMQT
2. 解压缩档案
在英特尔Edison平台上建造与执行MosquittoMQT
3. 编译
在英特尔Edison平台上建造与执行MosquittoMQT

4. 测试并安装您所编译的 mosquitto

在英特尔Edison平台上建造与执行MosquittoMQT

在 mosquitto 的根目录也有一个测试目标物。这个目标物需要安装 Python3,但它并没有包含在 Edison 作业系统中,所以后续的某些测试将会失败。而在 test/broker 目录里的目标物并不需要安装 Python3,而且它可以涵盖所有的 MQTT 操作。

测试您的客户端与伺服器端 mosquitto

Edison 作业系统预设会自动启动 rsmb 代理人。所以预设的 TCP 1883 埠以经被 rsmb 使用。我们将使用预设的 MQTT 埠测试用户端 mosquitto 到 rsmb  代理者。之后我们将会设置 mosquitto 代理人在不同的埠上并再测试一次。

开启两个 ssh  连线到 Edison 平台来测试用户端 mosquitto。

在第一个 ssh 连线,执行一个订阅'test' 主题的用户端程式 amosquitto_sub,并在 Edison 端执行。

在英特尔Edison平台上建造与执行MosquittoMQT

在第二个 ssh  连线,发布一个'Hello World!' 的讯息到同一个本地伺服器。

您应该可以看到在视窗中执行 mosquitto_sub  程式的讯息。请注意用户端 mosquitto_sub 程式是持续在运作,并会持续监听从伺服器端传来的新讯息直到终止执行。

在英特尔Edison平台上建造与执行MosquittoMQT

上面的测试显示出我们编译的用户端 mosquitto_sub 和 mosquitto_pub 正与本地端的 rsmb MQTT 伺服器正常的工作。

我们可以利用执行在不同埠上的 mosquitto  代理人来执行同样的测试。

在英特尔Edison平台上建造与执行MosquittoMQT
在英特尔Edison平台上建造与执行MosquittoMQT
使用同上的命令但是加上参数 -p 1993 给 mosquito_sub 和 mosquitto_pub,在埠 1993 上测试 mosquito 代理人。
在英特尔Edison平台上建造与执行MosquittoMQT
总结

我们在英特尔 Edison 平台上建造并执行伺服器与用户端 mosquitto 。在后续的文章中,我将开始利用我们建置的用户端 MQTT 开发 Arduino sketches 。

参考 :

Mosquitto 文件可以在这找到 http://mosquitto.org/documentation

英特尔 Edison 板子的详细资讯可以在这找到 http://www.intel.com/edison

欢迎加入「Inside」Line 官方帐号,关注最新创业、科技、网路、工作讯息
在英特尔Edison平台上建造与执行MosquittoMQT
在英特尔Edison平台上建造与执行MosquittoMQT

上一篇:
下一篇: