Frimurare/radex-mr107-reader

GitHub: Frimurare/radex-mr107-reader

从 RADEX MR107 氡气监测仪读取数据并通过 Web 仪表板或家庭自动化系统实现本地存储和可视化。

Stars: 0 | Forks: 0

# RADEX MR107 Linux Reader 从 Quarta-Rad RADEX MR107 氡气监测仪在 Linux 上读取氡气(Bq/m3)、温度和湿度数据 — **无需专有软件**。 支持 SQLite 存储、带有历史图表的 Web 仪表板、CSV 导出以及 Homey Pro 集成。 ## 原因 RADEX MR107 仅附带 Windows 软件(Radex Data Center)。本工具可直接通过 USB 串口读取传感器,使您能够将氡气监测集成到基于 Linux 的家庭自动化系统中,如 **Homey Pro**、**Home Assistant** 或任何基于 MQTT 的设置。 ## 功能 - **实时读数** — 氡气(Bq/m3)、温度(℃)、湿度(%),以及设备平均值/最小值/最大值 - **SQLite 数据库** — 所有读数的持久本地存储 - **Web 仪表板** — 使用 Chart.js 图表的深色主题仪表板,支持自动刷新和颜色编码的氡气等级 - **CSV 导出** — 下载所有历史数据以便在 Excel/Google Sheets 中分析 - **Homey Pro 集成** — 通过本地 API 将读数推送到 Homey Logic 变量 - **MQTT 支持** — 将 JSON 输出发送到任何 MQTT broker - **冷启动检测** — 识别设备是否仍在预热中 - **Systemd 就绪** — 作为后台服务运行,支持自动重启 ## 需求 - Python 3.6+ - `pyserial`(`pip install pyserial`) - 通过 USB 连接的 RADEX MR107 - Linux(已在 Debian 13 和 Ubuntu 24.04 上测试) ## 安装 ``` git clone https://github.com/Frimurare/radex-mr107-reader.git cd radex-mr107-reader pip install pyserial ``` ### USB 权限 MR107 设备显示为 `/dev/ttyACM0`。将您的用户添加到 `dialout` 组: ``` sudo usermod -aG dialout $USER # 注销并重新登录以使更改生效 ``` 验证设备已连接: ``` lsusb | grep ABBA # 应显示:ID abba:a004 QUARTA-RAD MR107 ``` ## 使用方法 ### 单次读数 ``` python3 mr107_reader.py ``` 输出: ``` [2026-04-04 16:35:00] Radon: 218.0 Bq/m3 | Temp: 21.0C | Humidity: 35.8% | Avg: 195.2 Max: 312.0 Min: 87.0 ``` ### JSON 输出 ``` python3 mr107_reader.py --json ``` ``` { "radon_bq": 217.9, "temperature_c": 20.9, "humidity_pct": 35.8, "radon_avg": 195.2, "radon_max": 312.0, "radon_min": 87.0, "countdown_s": 3421, "cold_start": false, "timestamp": "2026-04-04 16:35:00" } ``` ### 带数据库的持续监控 ``` python3 mr107_reader.py --loop 60 --db radon.db ``` 这会每 60 秒轮询一次 MR107 并将每次读数存储到 SQLite 数据库中。 ### 所有选项 | 选项 | 描述 | 默认值 | |--------|-------------|---------| | `--port` | 串口 | `/dev/ttyACM0` | | `--loop N` | 每 N 秒轮询一次(0 = 单次读取) | `0` | | `--json` | JSON 格式输出 | 关闭 | | `--db PATH` | SQLite 数据库路径 | 无 | | `--homey IP` | Homey Pro IP 地址 | 无 | | `--homey-token TOKEN` | Homey API bearer 令牌 | 无 | | `--homey-device ID` | Homey 虚拟设备 ID | 无 | ## Web 仪表板 内置 Web 仪表板,可在浏览器中查看氡气统计数据。 ``` python3 dashboard.py --db radon.db --port 8088 ``` 然后在浏览器中打开 `http://YOUR_IP:8088`。 ### 仪表板功能 - **实时传感器卡片** — 氡气、温度、湿度、设备平均值 - **颜色编码的氡气等级** — 绿色(<100)、黄色(100-200)、红色(>200 Bq/m3) - **表情符号指示器** — 😊 安全、😬 升高、🧟 高 - **历史图表** — 可在 6 小时、24 小时、3 天、7 天、30 天之间切换 - **温度和湿度** — 双轴趋势图 - **统计数据** — 总读数、平均值、最小值/最大值 - **CSV 导出** — 将所有数据下载为 CSV 文件 - **数据库信息** — 显示数据库大小和总读数 - **自动刷新** — 每 60 秒更新一次 - **WHO 和瑞典指南** — 参考线位于 100 和 200 Bq/m3 ### 仪表板选项 | 选项 | 描述 | 默认值 | |--------|-------------|---------| | `--db PATH` | SQLite 数据库路径 | `radon.db` | | `--port N` | Web 服务器端口 | `8088` | | `--bind ADDR` | 绑定地址 | `0.0.0.0` | ## 作为系统服务运行 创建两个 systemd 服务以实现 24/7 监控: ### 读取器服务 ``` sudo tee /etc/systemd/system/radon-reader.service << 'EOF' [Unit] Description=RADEX MR107 Radon Reader After=network.target [Service] Type=simple User=YOUR_USER ExecStart=/usr/bin/python3 /path/to/mr107_reader.py --loop 60 --db /path/to/data/radon.db Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF ``` ### 仪表板服务 ``` sudo tee /etc/systemd/system/radon-dashboard.service << 'EOF' [Unit] Description=RADEX MR107 Radon Dashboard After=network.target radon-reader.service [Service] Type=simple User=YOUR_USER ExecStart=/usr/bin/python3 /path/to/dashboard.py --db /path/to/data/radon.db --port 8088 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF ``` ### 启用并启动 ``` sudo systemctl daemon-reload sudo systemctl enable radon-reader radon-dashboard sudo systemctl start radon-reader radon-dashboard # 检查状态 sudo systemctl status radon-reader sudo systemctl status radon-dashboard ``` ## Homey Pro 集成 将氡气读数推送到您的 Homey Pro(2023 或更高版本)通过本地 REST API。无需自定义 Homey 应用 — 它使用内置的 Logic 变量,您可以在 Flows 中使用。 ### 步骤 1:获取您的 Homey API 令牌 1. 访问 https://tools.developer.homey.app/ 2. 使用您的 Athom 账户登录 3. 选择您的 Homey 4. 复制 API 令牌(Bearer 令牌) ### 步骤 2:使用 Homey 启动读取器 ``` python3 mr107_reader.py --loop 60 --db radon.db \ --homey 192.168.1.50 \ --homey-token YOUR_API_TOKEN_HERE ``` 将 `192.168.1.50` 替换为您的 Homey IP 地址(可在 Homey 应用中的设置 > 常规下找到)。 ### 步骤 3:在 Homey 中验证 打开 Homey 应用并进入 **更多 > Logic**。您应该看到三个自动更新的变量: | 变量 | 描述 | |----------|-------------| | `radon_bq` | 当前氡气水平,单位 Bq/m3 | | `radon_temperature` | 温度,单位 ℃ | | `radon_humidity` | 湿度,单位 % | ### 步骤 4:创建警报 Flows 示例:当氡气超过 200 Bq/m3(瑞典行动等级)时获取推送通知: 1. 打开 Homey 应用 > **Flows** > 创建新 Flow 2. **当...** > Logic > "数值变量更改" > 选择 `radon_bq` 3. **并且...** > Logic > "数字大于" > `200` 4. **那么...** > 通知 > "发送推送通知" > `"警告:氡气超过 200 Bq/m3!"` 其他有用的 Flow 创意: - 当氡气 > 100 Bq/m3 时警报(WHO 指南) - 当氡气 > 300 Bq/m3 时警报(危险等级) - 每天 08:00 发送当前氡气水平的每日摘要 - 当氡气高时(通过智能插头)开启通风 ### 带有 Homey 的 Systemd 将 Homey 标志添加到您的 systemd 服务: ``` ExecStart=/usr/bin/python3 /path/to/mr107_reader.py --loop 60 --db /path/to/data/radon.db --homey 192.168.1.50 --homey-token YOUR_API_TOKEN_HERE ``` ### 虚拟设备模式 — Homey 仪表板磁贴(推荐) 要在 Homey 中获得正确的传感器磁贴(
标签:Chart.js, Home Assistant, Homebrew安装, Homey Pro, Python, radon monitor, SQLite, Systemd服务, USB设备, Web Dashboard, 串口通信, 传感器读取, 无后门, 智能家居, 氡气监测, 物联网, 环境监测, 网络调试, 自动化, 逆向工具