描述
该项目使用现成的硬件和软件建立一个专用LoRaWAN物联网传感器网络。详细介绍了软件包括Machinechat的JEDI Pro SSE (Seeed Studio Edition)应用软件和ChirpStack LoRaWAN网络服务器应用程序。硬件包括Seeed的Odyssey x86 mini PC、一个SenseCAP户外LoRaWAN网关和两个户外SenseCAP环境传感器。
Machinechat和ChirpStack应用程序安装在运行Ubuntu Linux的Odyssey mini PC上,并且不需要云元素来实现私有LoRaWAN传感器网络。
硬件
-
Seeed Odyssey蓝x86 mini PC
四核Celeron J4105 mini PC 128GB外置SSD -
Seeed SenseCAP户外网关- LoRaWAN US915MHz
SenseCAP LoRaWAN网关基于LoRaWAN协议,适用于低功耗、远距离的环境数据采集和监控。 -
Seeed SenseCAP无线空气温湿度传感器- LoRaWAN US915MHz
SenseCAP无线空气温湿度传感器是电池供电的,在IP66外壳中测量大气温度和湿度。 -
SenseCAP无线光强传感器- LoRaWAN US915MHz
SenseCAP无线光强传感器是电池供电的,在IP66外壳中测量环境光强度。
软件
-
JEDI Pro SSE
用于物联网数据收集、可视化、监控和数据存储的应用软件,可集成到物联网解决方案中。 -
ChirpStack
ChirpStack开源LoRaWAN网络服务器堆栈为LoRaWAN网络提供开源组件。模块化的架构使得在现有的基础设施内集成成为可能。 -
Ubuntu LTS18.04.6
安全企业Linux服务器,桌面,云,开发人员和东西。版本- Ubuntu 18.04。6 LTS(长期支持)
背景
LoRa是由Semtech公司开发的一种远程、低功耗无线技术,它利用了源自chirp扩频(CSS)技术的扩频调制技术。LoRaWAN是由LoRa联盟®管理的互操作性标准。LoRa设备和LoRaWAN标准为无线传感器网络应用提供了许多优点和功能,包括长距离、低功耗和安全数据传输。
几家网络运营商在全球范围内提供基于云的LoRaWAN网络,供客户订阅和连接。客户的另一个选择是建立自己的私有、基于边缘的LoRaWAN远程物联网传感器网络。专用网络的好处包括维护端到端的隐私和对数据的控制,对软件和基础设施更新和升级的控制,不需要互联网连接,也不需要经常性的服务/订阅网络费用。
实现
在这个项目中,LoRa硬件包括Seeed的户外LoRaWAN网关和两个电池供电的户外传感器。服务器硬件由Seeed运行Ubuntu LTS18.04的Odyssey mini pc组成。Machinechat的JEDI Pro SSE软件和ChirpStack网络服务器安装在Odyssey mini pc上。LoRaWAN网关和Ubuntu服务器都连接到同一个以太网络。实现的专用LoRaWAN物联网传感器网络的框图如下所示。
该网络的组成要素是:
- JEDI Pro SSE—JEDI Pro SSE应用软件能够收集传感器数据,并能够通过仪表板、规则、动作、通知和网络监控对其进行操作,并安装在Ubuntu服务器上。JEDI Pro SSE有一个内置的数据采集器,可以与ChirpStack网络服务器无缝通信,从Seeed的SenseCAP传感器接收LoRaWAN数据。
- ChirpStack网络服务器—ChirpStack是一个开源的LoRaWAN网络服务器,安装在Ubuntu服务器上,收集从SenseCAP网关转发的传感器数据。ChirpStack对数据进行重复数据删除、解密和转换为通用数据格式,并通过集成(包括MQTT和HTTP)使其可用。ChirpStack还提供了一个基于web的界面,可以快速板载和管理设备和网关。
- LoRaWAN网关——LoRaWAN网关从传感器等网络设备收集无线信息,并通过IP网络(如以太网)转发给网络服务器软件。Seeed Studio的SenseCAP户外网关具有IP66外壳,并支持扩展的工作温度范围。
- LoRaWAN传感器- Seeed Studio的SenseCAP系列LoRaWAN传感器有一个内置电池,可以使用长达3年(使用默认配置,每小时发送一次消息)。在这个项目中,使用了湿度/温度传感器和光强度传感器。
设置Ubuntu服务器硬件
1 - 如果尚未安装,请下载并安装Ubuntu LTS18.04.6见下载链接
注:对于ODYSSEY - X86J4105 mini pc安装信息请参见Creating Bootable USB and Installing OS (Ubuntu Desktop 18.04)
建立ChirpStack LoRaWAN网络服务器
ChirpStack提供了下载、安装和设置ChirpStack网络服务器 https://www.chirpstack.io/project/guides/debian-ubuntu/ 的详细说明和背景信息。下面是我在Odyssey mini pc Ubuntu服务器上设置ChirpStack时所遵循的步骤的演练。
1 - 安装dependencies (Mosquitto MQTT broker,Redis数据库,PostgreSQL数据库)
使用包管理器 apt
安装这些 dependencies
sudo apt install mosquitto mosquitto-clients redis-server redis-tools postgresql
2 - 通过关闭安全性和允许匿名用户来配置Mosquitto 进行初始测试。一旦系统启动并运行,将在下面的步骤保护MQTT通信。
创建一个名为“ chirstack .conf ” 的文件,其中包含以下内容 :
listener 1883
allow_anonymous true
将创建的文件保存在下面的目录中 :
/etc/mosquitto/conf.d
现在,重启服务器 :
sudo shutdown -r now
3 - 设置PostgreSQL数据库和用户
进入 PostgreSQL 的命令行工具 :
sudo -u postgres psql
在这个提示符中,执行以下查询来设置ChirpStack堆栈组件使用的数据库。建议修改用户名和密码。请记住在更新chirstack -network-
server时使用新的用户名和密码值。
toml
和chirstack -application-server
。
Toml
配置文件。
设置用户和密码
create role chirpstack_as with login password 'dbpassword';
create role chirpstack_ns with login password 'dbpassword';
为服务器创建数据库
create database chirpstack_as with owner chirpstack_as;
create database chirpstack_ns with owner chirpstack_ns;
更改为 ChirpStack 应用服务器数据库
\c chirpstack_as
启用 pq_trgm 和 hstore 扩展名
create extension pg_trgm;
create extension hstore;
退出 psql
\q
4 - 设置ChirpStack软件存储库
确保安装了 dirmngr 和 apt-transport-https:
sudo apt install apt-transport-https dirmngr
设置这个新存储库的密钥 :
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1CE2AFD36DBCCA00
( 注意 : 上面的 keyserver 不适合我,所以我使用下面的 )
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1CE2AFD36DBCCA00
通过创建新文件将存储库添加到存储库列表中 :
sudo echo "deb https://artifacts.chirpstack.io/packages/3.x/deb stable main" | sudo tee /etc/apt/sources.list.d/chirpstack.list
更新 apt 包缓存 :
sudo apt update
5 - 安装ChirpStack网关桥
使用 apt 安装软件包 :
sudo apt install chirpstack-gateway-bridge
ChirpStack网关网桥配置文件位于/etc/ chirstack -gateway-bridge/ chirstack -gateway-bridge
。
toml
。这个项目的默认配置就足够了。
启动 ChirpStack Gateway Bridge 服务 :
sudo systemctl start chirpstack-gateway-bridge
设置 ChirpStack Gateway Bridge 服务在引导时启动 :
sudo systemctl enable chirpstack-gateway-bridge
6 — 安装ChirpStack网络服务器
使用 apt 安装软件包 :
sudo apt install chirpstack-network-server
ChirpStack网络服务器配置文件位于/etc/ chirstack -network-server/ chirstack -network-server。Toml和必须更新以匹配数据库和频带配置。参见下面这个项目使用的US915示例。更多信息和示例可以在安装ChirpStack Network Server中找到。(注意:chirstack -network-server。toml文件基于美国版本chirstack -network-server-us915。更新配置后
,您需要重新启动ChirpStack Network Server并验证没有错误。
启动 ChirpStack Network Server 服务 :
sudo systemctl start chirpstack-network-server
设置 ChirpStack Network Server 服务在引导时启动 :
sudo systemctl enable chirpstack-network-server
打印 ChirpStack Network Server 日志输出以检查错误 :
sudo journalctl -f -n 100 -u chirpstack-network-server
US915 *配置例子sub-band 2 (125kHz 通道 8 - 15 和 500kHz 通道 65)
[general]
log_level=4
[postgresql]
dsn="postgres://chirpstack_ns:dbpassword@localhost/chirpstack_ns?sslmode=disable"
[network_server]
net_id="000000"
[network_server.band]
name="US_902_928"
[network_server.network_settings]
enabled_uplink_channels=[8, 9, 10, 11, 12, 13, 14, 15, 65]
7 - 安装ChirpStack应用服务器
使用 apt 安装软件包 :
sudo apt install chirpstack-application-server
ChirpStack应用服务器配置文件位于/etc/ chirstack -application-server/ chirstack -application-server。Toml和必须更新以匹配数据库配置。下面是一个配置示例,它与前面步骤中创建的数据库相匹配。
[general]
log_level=4
[postgresql]
dsn="postgres://chirpstack_as:dbpassword@localhost/chirpstack_as?sslmode=disable"
[application_server.integration] marshaler="json"
[application_server.external_api]
jwt_secret="verysecret"
注意 : 必须 将jwt_secret
替换为一个安全的secret!
你可以使用下面的命令来生成一个随机的秘密
openssl rand -base64 32
启动 ChirpStack 应用服务器服务 :
sudo systemctl start chirpstack-application-server
将 ChirpStack 应用服务器服务设置为开机启动 :
sudo systemctl enable chirpstack-application-server
打印 ChirpStack 应用服务器日志输出以检查错误 :
sudo journalctl -f -n 100 -u chirpstack-application-server
保护MQTT通信
ChirpStack网络服务器和应用服务器不处理MQTT身份验证和授权,因为这是MQTT broker的责任。对于这个项目,Mosquitto 是MQTT broker,基本的安全级别是设置用户名和密码(这在MQTT authentication & authorization 中有详细描述)。
1 - 设置密码
使用mosquitto_passwd命令,可以创建一个用于身份验证的密码文件。下面是创建密码文件并添加用户名的示例(只在第一次使用-c,因为它会创建一个新文件):
*创建一个密码文件,用户为chirpstack_gw, chirpstack_ns和chirpstack_as
sudo mosquitto_passwd -c /etc/mosquitto/passwd chirpstack_gw
sudo mosquitto_passwd /etc/mosquitto/passwd chirpstack_ns
sudo mosquitto_passwd /etc/mosquitto/passwd chirpstack_as
保护密码文件
sudo chmod 600 /etc/mosquitto/passwd
2 - 设置acl(访问控制列表文件)
访问控制列表文件将用户名映射到一组主题。将此文件写入/etc/ mosquito /acls
。请看下面的例子:
user chirpstack_gw
topic write gateway/+/event/+
topic read gateway/+/command/+
user chirpstack_ns
topic read gateway/+/event/+
topic write gateway/+/command/+
user chirpstack_as
topic write application/+/device/+/event/+
topic read application/+/device/+/command/+
3 - Mosquitto 配置
添加一个新的配置文件/etc/ mosquito /conf.d/auth.conf
,
配置如下:
allow_anonymous false
password_file /etc/mosquitto/passwd
acl_file /etc/mosquitto/acls
4 - 更新ChirpStack配置文件
编辑三个ChirpStack配置文件/etc/ chirstack -gateway-bridge/ chirstack -gateway-bridge
。
toml
,/etc/ chirstack -network-server/ chirstack -network-server
。
Toml
,和/etc/ chirstack -application-server/ chirstack -application-server
。
toml
来添加新的凭据:
例如 chirstack -application-server .toml
[application_server.integration.mqtt]
# Connect with the given username (optional)
username="chirpstack_as"
# Connect with the given password (optional)
password="your_password"
连接并配置SenseCAP LoRaWAN网关
登录 SenseCAP 网关,找到网关
的IP地址,然后进入“ipaddress:8000”。默认用户为“sensecap”,密码为“sensecap!!”
进入仪表板上的“LoRa”选项卡,设置“数据包调度配置”指向运行ChirpStack的Ubuntu服务器的IP地址。
上行和下行端口默认为1700,所以保留1700的设置。像下图一样配置它,但将IP地址更改为ChirpStack服务器。
将SenseCAP LoRa网关添加到ChirpStack
添加网关到ChirpStack的详细信息请参见Connecting a gateway to ChirpStack
1 - 登录到ChirpStack GUI
使用 ChirpStack 服务器的 IP 地址和 8080 端口进入登录界面 : 示例:
http://192.168.1.23:8080
(注意:默认凭据为用户名:admin密码:admin)
2 - 添加Network Server
2 - 创建组织
命名组织并勾选“ Gateways ” 框
3 - 创建服务配置文件
名称服务配置文件和复选框
4 - 创建网关
名称网关,输入网关 ID ,选择网络服务器
(注意:网关ID为EUI:来自SenseCAP网关标签)
5 - 创建设备配置文件
命名设备配置文件并选择此设置显示的值
6 - 在设备配置文件中编辑CODEC
编辑 CODEC ,使用 CODEC 从机械技术文章 参见 Seeed SenseCAP LoRaWAN ChirpStack CODEC
将SenseCAP LoRa传感器添加到ChirpStack
1 - 创建应用程序
名称应用程序,并选择服务配置文件显示此设置
2 - 添加设备(SenseCAP传感器)
添加终端设备需要输入EUI(打印在产品标签上)和必须在线检索的应用程序密钥;参见 https://sensecap-docs.seeed.cc/pdf/Guide-for-SenseCAP-Adaption-to-3rd-Party-Gateways-Servers-V1.2.pdf .的4.1节。
在ChirpStack创建设备
为设备添加应用程序密钥
在ChirpStack中启用JEDI Pro SSE的HTTP集成
在ChirpStack集成的HTTP
集成
选项卡中选择“Add”
将编组程序设置为“JSON”,并将端点设置为运行JEDI Pro SSE的机器的IP地址,即“http://192.168.1.101:8090”。确保ChirpStack HTTP集成和JEDI Pro SSE数据收集器配置中的端口号(在本例中为8090)相同。它应该是一个唯一的、未使用的端口号(不是80、8080等)。
设置JEDI Pro SSE数据采集器
在JEDI Pro SSE上显示SenseCAP LoRa传感器数据
温度/湿度和光强度SenseCAP传感器的示例数据仪表板
结论
Machinechat的JEDI Pro SSE应用软件、ChirpStack LoRaWAN网络服务器和Seeed的SenseCAP LoRa硬件相结合,形成了一个强大的基于边缘的物联网无线传感器网络,而不需要云连接或互联网连接。
参考文献
- Seeed 110991465
单板计算机 2.5GHz 4 内核 8GB/0GB RAM Intel Celeron J4105 - Seeed 102991155
4G LoRa 网关 以太网,RJ-45 - Seeed 114991731
光学传感器 模块 - Seeed 114991730
湿度温度传感器 0 ~ 100% 相对湿度 ±1.5% RH 用户自定义 - Seeed - Guide for SenseCAP Adaption to 3rd Party Gateways Servers
- 开始使用 machinechat 的 JEDI One 物联网平台
- 用树莓派、PyPortal Titano和machinechat JEDI One设置和测试MQTT broker服务器
- Machinechat - Building a private, edge-based LoRaWAN IoT sensor network