6个版本
0.3.5 | 2021年5月7日 |
---|---|
0.3.4 | 2020年10月31日 |
0.3.2 | 2020年6月25日 |
0.2.0 | 2020年5月31日 |
0.1.3 | 2019年4月6日 |
#15 in #meter
每月21次下载
46KB
750 行
mbus-httpd
一个HTTP微服务,暴露(有线)M-Bus功能,允许您扫描M-Bus和查询M-Bus从设备。
您需要一个串行-M-Bus设备,以便将您的服务器连接到M-Bus。
如果您想使用Raspberry Pi并需要一个M-Bus主帽,请参阅此处。或者
- 从ebay或aliexpress购买USB M-Bus主设备。
- 使用广泛可用的原理图自行组装。
快速入门
运行mbus-httpd的最简单方法是使用预构建的容器,使用docker。一个支持x86_64、ARMv6 & ARMv7(覆盖所有Raspberry Pi型号)的mbus-httpd docker清单可用。
- x86_64
- ARMv6 & ARMv7
如果您需要docker,最简单的方法是运行
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
安装docker后(您可能需要在安装后注销并重新登录),您可以使用以下命令运行mbus-httpd(将ttyAMA0替换为您的串行设备)
docker run --name mbus \
-d -p 8080:8080 \
-e RUST_LOG=INFO \
--device /dev/ttyAMA0:/dev/ttyAMA0 \
packom/mbus-release
这将启动监听8080端口的mbus-httpd网络服务器。
如果您使用的是M-Bus主帽,请按以下方式运行容器
docker run --name mbus \
-d -p 8080:8080 \
-e RUST_LOG=INFO \
--device /dev/ttyAMA0:/dev/ttyAMA0 \
-v /proc/device-tree/hat:/proc/device-tree/hat \
--privileged \
packom/mbus-release
要检查是否工作正常,在另一个shell中运行
curl -v -X GET http://127.0.0.1:8080/mbus/api
或者,根据需要修改并粘贴到浏览器中
http://<your_host_name>:8080/mbus/mbus_api
应该返回YAML API文档。
使用
如果您使用的是M-Bus主帽,您可以通过运行以下命令来检查它是否正确物理安装
curl -v -X GET http://127.0.0.1:8080/mbus/hat
您应该得到如下响应
{
"product":"M-Bus Master",
"productId":"0x0001",
"productVer":"0x0002",
"uuid":"abcdef12-abcd-abcd-abcd-123456abcdef",
"vendor":"packom.net"
}
如果您使用M-Bus主帽,则需要通过以下方式给M-Bus供电
curl -v -X POST http://127.0.0.1:8080/mbus/hat/on
要扫描连接到设备/dev/ttyAMA0的M-Bus(波特率为2400)
curl -v -X POST http://127.0.0.1:8080/mbus/scan/ttyAMA0/2400
从设备地址48(0x30)获取信息
curl -v -X POST http://127.0.0.1:8080/mbus/get/ttyAMA0/2400/48
构建
要构建,您需要安装Rust。如果您不想费心安装Rust,您可以使用支持Rust的构建容器,例如这个,它适用于x86_64、ARMv6和ARMv7(因此所有Raspberry Pi型号)。
docker run --rm -ti -v some_local_dir:/home/build/builds piersfinlayson/build
安装Rust后运行
cd ~
git clone https://github.com/packom/mbus-httpd
cd mbus-httpd
cargo build
您还需要libmbus。在Ubuntu上,您可以这样安装:
sudo apt install libtool autoconf
cd ~
git clone https://github.com/rscada/libmbus
cd libmbus
./build.sh
sudo make install
运行
要运行
cd ~/mbus-httpd
cargo run
由于mbus-httpd设计为在容器中运行,所有配置都通过环境变量完成。您几乎肯定需要
LIBMBUS_PATH=<limbus binary path e.g. ~/libmbus/bin>
LD_LIBRARY_PATH<path libmbus.so is installed to e.g. /usr/local/lib>
您可能还需要
SERVER_IP=<IP to listen on>
SERVER_PORT=<port to listen on>
RUST_LOG=<log level, e.g. INFO>
例如
cd ~/mbus-httpd
env SERVER_IP=localhost \
env SERVER_PORT=8080 \
env LIBMBUS_PATH=~/libmbus/bin \
env LD_LIBRARY_PATH=/usr/local/lib \
env RUST_LOG=INFO \
cargo run
客户端
提供了一个用Rust实现的mbus-httpd客户端示例。要构建和运行
cargo run --example hat-tester
这是为对M-Bus Master Hat进行功能性和烧录测试而设计的,并且相当直观。
要运行,对M-Bus Master Hat进行一系列完整测试
cargo run --example hat-tester -- \
--host localhost \
--port 8080 \
--address 48 \
--baudrate 2400 \
--device ttyAMA0 \
--reps 10 \
--get-reps 100 \
--hat \
--scan \
--check-scan \
--product-ver 0x0002 \
--uuid=148f8981-033b-407a-a13f-72405d08e0fe
要在其他类型的M-Bus Master上运行,连接到设备/dev/ttyUSB0,使用如下命令
cargo run --example hat-tester -- \
--host localhost \
--port 8080 \
--address 48 \
--baudrate 2400 \
--device ttyUSB0 \
--scan \
--check-scan
要获取帮助并查看其他命令行选项
cargo run --example hat-tester -- --help
调试
要查看日志,请确保RUST_LOG设置为INFO或DEBUG(见上文)。如果在shell中运行,日志将输出到stdout。如果在docker中运行,您可以使用以下命令查看日志
docker logs -f mbus
许可证
mbus-httpd的许可证为GPL v3.0或更高版本。
依赖关系
~28–42MB
~705K SLoC