该项目与 CleverWeather相关,因此强烈建议先检查。实现部分理所当然地认为您已经拥有一个 Azure IoT 中心,至少有一个设备和一个用于可视化数据的 Web 应用程序。
该物联网系统是罗马第一大学物联网课程作业的一部分。两个 RIOT 应用程序将使用 LoRaWAN 协议向 TheThingsNetwork (TTN) 发布具有随机值的消息。连接到 TTN 的网关将接收这些消息并将它们发送到 Azure IoT 中心。最后,nodejs 应用程序允许您在本地可视化数据。
RIOT-OS 应用程序
一个简单的 RIOT-OS 应用程序将用于随机创建值并使用 LoRaWAN(一种用于远程传输的协议)发布它们。
物联网应用
TTN 提供了一套开放工具和全球开放网络来构建物联网应用程序。它将托管应用程序及其设备。
物联网实验室
IoT-LAB 提供了一个非常大规模的基础设施,适用于测试小型无线传感器设备和异构通信对象。我将使用位于 Saclay(法国)并部署在两个预留节点上的无线传感器。
网关
网关使用 MQTT 协议连接到 TTN 应用程序,当收到消息时,它将使用 MQTT 直接实现将其发送到 Azure IoT Hub。我用过python,但你可以选择你喜欢的编程语言。
Azure 物联网中心
IoT 中心将用作 MQTT 代理,但它并不完整,也不支持所有标准行为。
节点
Nodejs 用于运行一个应用程序,让您在本地可视化数据。您还必须安装包@azure/event-hubs。
首先要做的是登录站点,然后您可以转到控制台并单击“添加应用程序”。选择一个明确的名称,最佳做法是使用最近的服务器,因此如果您在欧洲,请使用 ttn-handler-eu。单击添加应用程序以完成。
打开您的应用程序,转到设备部分,然后单击“注册设备”添加一个。选择一个名称并随机创建一个设备EUI,然后点击“注册”完成操作。
对于这个任务,我创建了 2 个与我的 IoT 中心设备同名的设备。现在选择您的设备并获取设备 EUI、应用程序 EUI 和应用程序密钥值,稍后您将使用它们。
登录并配置您对 IoT-LAB 服务器的 SSH 访问权限。打开终端并键入以下命令:
my_computer$ ssh-keygen -t rsa
my_computer$ cat ~/.ssh/id_rsa.pub
它将生成一个公钥和一个私钥。最后一行用于查看您将在门户网站上复制的公钥。
复制此处的值并单击绿色按钮以更新 SSH 密钥。
现在您可以开始部署了。在本教程中,请指明您在 IoT-LAB 中的用户名。打开终端并连接到 Saclay 站点主机:
my_computer$ ssh @saclay.iot-lab.info
使用位于 Saclay 的 2 个节点开始一个名为的实验。riot_ttn
它将持续 60 分钟,并将使用 St-Lrwan1 (Sx1276) 架构:
@saclay:~$ iotlab-auth -u
@saclay:~$ iotlab-experiment submit -n riot_ttn -d 60 -l 2,archi=st-lrwan1:sx1276+site=saclay
最后一个命令将返回实验 ID ,用于检查实验状态是否为“正在运行”并获取节点列表。
@saclay:~$ iotlab-experiment get -i -s
@saclay:~$ iotlab-experiment get -i -r
现在从 GitHub 获取 RIOT 2019.01 版本的代码和我的项目的代码。
@saclay:~$ git clone https://github.com/RIOT-OS/RIOT.git -b 2019.01-branch
@saclay:~$ git clone https://github.com/domitix/CleverWeather
将项目的原始 main.c 替换为我写的开始发布随机值的消息并转到 RIOT 文件夹:
@saclay:~$ cp -a CleverWeather/LoRa/. RIOT/tests/pkg_semtech-loramac
@saclay:~$ cd RIOT
由于此实验在 2 个不同的节点上运行,您可以启动另一个终端并使用 SSH 连接到 IoT-LAB。然后在使用不同 ST LoRa 节点的两个终端中执行相同的程序。
将 arm gcc 版本更改为 IoT-LAB 提供的版本:
@saclay:~/RIOT/$ export PATH=/opt/gcc-arm-none-eabi-7-2018-q2-update/bin:$PATH
构建 LoraWAN 应用程序:
@saclay:~/RIOT/$ make -C tests/pkg_semtech-loramac clean all
使用 CLI-Tools 使用您刚刚构建的 LoRaWAN 固件刷新 ST LoRa 节点。就我而言,我使用了 st-lrwan1-14,但它可能会改变:
@saclay:~/RIOT/$ iotlab-node --update tests/pkg_semtech-loramac/bin/b-l072z-lrwan1/tests_pkg_semtech-loramac.elf -l saclay,st-lrwan1,14
使用 netcat 访问节点上运行的 RIOT shell:
@saclay:~/RIOT/$ nc st-lrwan1-14 20000
现在您可以通过命令与节点上运行的 LoRawAN 堆栈进行交互loramac.
首先您需要设置 TTN 应用程序的设备参数和快速数据速率(5):
> loramac set deveui 00000000000000
> loramac set appeui 00000000000000
> loramac set appkey 0000000000000000000000000000
> loramac set dr 5
现在您可以使用 OTAA 加入网络并开始发布消息:
> loramac join otaa
Join procedure succeeded!
> loramac publisher
如果一切正常,它应该看起来像这样,每 15 秒发送一次消息。
网关是一个 python 程序,它使用 MQTT 协议连接到 TTN 应用程序。当消息到达时,payload 使用 base64 解码,然后由与 TTN 设备同名的 IoT 设备发送到集线器。为此,对于 TTN 部分,您将需要服务器位置、TTN 应用程序名称作为用户名和应用程序访问密钥作为密码。对于 IoT 中心,每个 IoT 设备都需要一个连接字符串。
您只需进入文件夹并在命令行中键入即可运行 Web 应用程序:
npm start
如果网关已连接,您将在命令行中看到传入消息:
在浏览器中打开http://localhost:3000/并可视化这些值。
这些是从第一个设备 (foggia_2) 发送的值的图表:
这些是从第二个设备(rome_2)发送的值的图表:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !