|
|
@@ -2,6 +2,9 @@
|
|
|
|
|
|
本文件记录本项目开发/维护时需要注意的关键信息,方便下次快速上手。
|
|
|
|
|
|
+
|
|
|
+注意每次改动需要更新本文件,这非常重要!!!!!!!!
|
|
|
+
|
|
|
## 项目概览
|
|
|
|
|
|
- **设备**:Rockchip RK3588 嵌入式开发板(`hostname=ido`,aarch64),作为 DTU(数据传输单元)运行。
|
|
|
@@ -26,6 +29,7 @@
|
|
|
- 服务:`systemctl status frpc` / `systemctl restart frpc`
|
|
|
|
|
|
frpc 配置摘要:
|
|
|
+
|
|
|
```toml
|
|
|
serverAddr = "device.wenhq.top"
|
|
|
serverPort = 8580
|
|
|
@@ -41,6 +45,7 @@ secretKey = "149-ssh-sk"
|
|
|
```
|
|
|
|
|
|
**访问端(你的电脑)需要配置 visitor** 才能连:
|
|
|
+
|
|
|
```toml
|
|
|
serverAddr = "device.wenhq.top"
|
|
|
serverPort = 8580
|
|
|
@@ -54,11 +59,13 @@ serverName = "149-ssh"
|
|
|
sk = "149-ssh-sk"
|
|
|
bindPort = 6000
|
|
|
```
|
|
|
+
|
|
|
然后 `ssh root@127.0.0.1 -p 6000`(密码 `123456`)即可连到 149 的 22 端口。
|
|
|
|
|
|
### 方式 2:FRP http 域名映射 80 端口
|
|
|
|
|
|
frpc 里已有 http 代理,把本地 80 端口映射成 `pxj` 子域名:
|
|
|
+
|
|
|
```toml
|
|
|
[[proxies]]
|
|
|
name = "149-http"
|
|
|
@@ -67,6 +74,7 @@ localIP = "127.0.0.1"
|
|
|
localPort = 80
|
|
|
subDomain = "pxj"
|
|
|
```
|
|
|
+
|
|
|
通过 `http://pxj.<frps主域名>` 访问(具体子域解析规则由 frps 端配置决定)。
|
|
|
|
|
|
### 方式 3:EasyTier VPN 组网
|
|
|
@@ -85,13 +93,14 @@ subDomain = "pxj"
|
|
|
读取优先走 **C 语言读取器**,Python gpiod 只作回退。
|
|
|
|
|
|
1. **C 二进制读取器**:`/root/dzxj_dtu/backend/scripts/dht11_reader`
|
|
|
+
|
|
|
- 源码:`backend/scripts/dht11_reader.c`(用 libgpiod C API,open-drain + 高速采样)
|
|
|
- 编译命令:`gcc -O2 -o dht11_reader dht11_reader.c -lgpiod`(设备已装 `libgpiod-dev`)
|
|
|
- 用法:`dht11_reader [chip] [line]`,默认 `gpiochip0 19`
|
|
|
- 输出 JSON:`{"valid":true,"humidity":43,"temperature":31,"raw":[...],"checksum":76}`(温湿度为整数,无小数)
|
|
|
- **二进制必须存在**,否则回退到 Python gpiod,而 venv 里的 gpiod API 不兼容,会读取失败(症状:日志报 `module 'gpiod' has no attribute 'Chip'` 或读到 0.0)
|
|
|
-
|
|
|
2. **Python gpiod 回退**:`backend/modules/dht11_sensor.py`
|
|
|
+
|
|
|
- 设备 venv 装的是 pip `gpiod 1.5.4`,**API 与系统 apt 的 python3-libgpiod 1.4.x 完全不同**:
|
|
|
- `gpiod.Chip(...)`(1.4.x) vs `gpiod.chip(...)`(1.5.x)
|
|
|
- `gpiod.LINE_REQ_DIR_OUT` vs `gpiod.line_request.DIRECTION_OUTPUT`
|
|
|
@@ -101,13 +110,13 @@ subDomain = "pxj"
|
|
|
|
|
|
### 配置(环境变量,无默认值则使用 config.py 默认)
|
|
|
|
|
|
-| 变量 | 默认 | 说明 |
|
|
|
-|---|---|---|
|
|
|
-| `DHT11_ENABLED` | `true` | 是否启用 |
|
|
|
-| `DHT11_GPIO_PIN` | 无 | GPIO line 号(设备上为 `19`)|
|
|
|
-| `DHT11_GPIO_CHIP` | `gpiochip0` | GPIO chip |
|
|
|
-| `DHT11_POLL_INTERVAL` | `5` | 读取间隔秒 |
|
|
|
-| `DHT11_SIMULATE` | `false` | 是否模拟数据 |
|
|
|
+| 变量 | 默认 | 说明 |
|
|
|
+| ----------------------- | ------------- | ------------------------------ |
|
|
|
+| `DHT11_ENABLED` | `true` | 是否启用 |
|
|
|
+| `DHT11_GPIO_PIN` | 无 | GPIO line 号(设备上为`19`) |
|
|
|
+| `DHT11_GPIO_CHIP` | `gpiochip0` | GPIO chip |
|
|
|
+| `DHT11_POLL_INTERVAL` | `5` | 读取间隔秒 |
|
|
|
+| `DHT11_SIMULATE` | `false` | 是否模拟数据 |
|
|
|
|
|
|
- GPIO 19(RK 平台 GPIO0_C3 系)接 DHT11 data 脚,DHT11 需上拉电阻(模块自带)。
|
|
|
- 若 `DHT11_ENABLED=true` 但未配 GPIO_PIN 且非模拟,会跳过传感器启动并打 warning。
|
|
|
@@ -156,13 +165,13 @@ journalctl -u dzxj_dtu | grep -E 'DHT11|环境传感器'
|
|
|
|
|
|
## 排障速查
|
|
|
|
|
|
-| 症状 | 排查 |
|
|
|
-|---|---|
|
|
|
-| SSH 连不上 149 | 先 `ping 192.168.199.149`;再试 `ssh -p 6000 root@127.0.0.1`(frp stcp);若直接 IP 通但 6000 不通,查 `systemctl status frpc` |
|
|
|
-| frpc 起不来 | `journalctl -u frpc`;注意 stcp 配置字段是 `secretKey`(不是 `sk`),老版本报 `unknown field "sk"` |
|
|
|
-| 温湿度读到 0.0 或报 gpiod 错 | 确认 `dht11_reader` 二进制存在且可执行;`dht11_reader gpiochip0 19` 手测 |
|
|
|
-| easytier 组网后虚拟 IP 不通 | `--no-tun` 模式限制,虚拟 IP 不进路由表,只能走 port-forward |
|
|
|
-| MQTT 重启后没自动连 | 确认 `/root/dzxj_dtu/backend/mqtt_config.json` 存在;存在则看 `auto_connect_mqtt` 日志 |
|
|
|
+| 症状 | 排查 |
|
|
|
+| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
|
+| SSH 连不上 149 | 先`ping 192.168.199.149`;再试 `ssh -p 6000 root@127.0.0.1`(frp stcp);若直接 IP 通但 6000 不通,查 `systemctl status frpc` |
|
|
|
+| frpc 起不来 | `journalctl -u frpc`;注意 stcp 配置字段是 `secretKey`(不是 `sk`),老版本报 `unknown field "sk"` |
|
|
|
+| 温湿度读到 0.0 或报 gpiod 错 | 确认`dht11_reader` 二进制存在且可执行;`dht11_reader gpiochip0 19` 手测 |
|
|
|
+| easytier 组网后虚拟 IP 不通 | `--no-tun` 模式限制,虚拟 IP 不进路由表,只能走 port-forward |
|
|
|
+| MQTT 重启后没自动连 | 确认`/root/dzxj_dtu/backend/mqtt_config.json` 存在;存在则看 `auto_connect_mqtt` 日志 |
|
|
|
|
|
|
## 注意事项(重要)
|
|
|
|