node-red-contrib-symi-modbus 1.3.0 → 1.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +211 -93
- package/nodes/modbus-master.html +168 -53
- package/nodes/modbus-master.js +102 -8
- package/nodes/modbus-slave-switch.html +158 -70
- package/nodes/modbus-slave-switch.js +88 -6
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -14,7 +14,10 @@ Node-RED的Modbus继电器控制节点,支持TCP/串口通信和MQTT集成。
|
|
|
14
14
|
|
|
15
15
|
## 安装
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
[](https://www.npmjs.com/package/node-red-contrib-symi-modbus)
|
|
18
|
+
[](https://www.npmjs.com/package/node-red-contrib-symi-modbus)
|
|
19
|
+
|
|
20
|
+
### 通过npm安装(推荐)
|
|
18
21
|
|
|
19
22
|
在Node-RED用户目录中运行:
|
|
20
23
|
|
|
@@ -29,6 +32,8 @@ npm install node-red-contrib-symi-modbus
|
|
|
29
32
|
2. 搜索 `node-red-contrib-symi-modbus`
|
|
30
33
|
3. 点击安装
|
|
31
34
|
|
|
35
|
+
**已发布到npm:** https://www.npmjs.com/package/node-red-contrib-symi-modbus
|
|
36
|
+
|
|
32
37
|
### 本地开发安装
|
|
33
38
|
|
|
34
39
|
```bash
|
|
@@ -293,8 +298,11 @@ msg.payload = {
|
|
|
293
298
|
- **MQTT服务器**:选择或添加MQTT服务器配置节点(需与主站节点使用相同配置)
|
|
294
299
|
|
|
295
300
|
**物理开关面板配置**
|
|
301
|
+
- **面板品牌**:选择开关面板品牌
|
|
302
|
+
- **亖米(Symi)**:默认品牌,完整实现轻量级协议V0.13
|
|
303
|
+
- **其他品牌**:预留扩展接口,后续支持更多1-8键开关品牌
|
|
296
304
|
- **开关ID**:物理开关面板的设备地址(0-255,RS-485总线地址)
|
|
297
|
-
- **按钮编号**:物理面板上的按键编号(1-8
|
|
305
|
+
- **按钮编号**:物理面板上的按键编号(1-8键开关)
|
|
298
306
|
|
|
299
307
|
**映射到继电器设备**
|
|
300
308
|
- **目标从站地址**:要控制的Modbus继电器设备地址(10-247)
|
|
@@ -363,28 +371,30 @@ msg.payload = 0; // 关
|
|
|
363
371
|
|
|
364
372
|
#### 配置映射示例
|
|
365
373
|
|
|
366
|
-
**示例1
|
|
374
|
+
**示例1:亖米开关ID=0,按钮1 → 继电器10-线圈0**
|
|
367
375
|
```
|
|
368
376
|
物理面板配置:
|
|
377
|
+
├─ 面板品牌:亖米(Symi)
|
|
369
378
|
├─ 开关ID:0(物理面板地址)
|
|
370
379
|
├─ 按钮编号:1(面板按钮1)
|
|
371
380
|
映射到继电器:
|
|
372
|
-
├─
|
|
373
|
-
└─
|
|
381
|
+
├─ 从站地址:10(Modbus继电器设备10)
|
|
382
|
+
└─ 线圈编号:0(继电器通道0)
|
|
374
383
|
|
|
375
384
|
MQTT主题:
|
|
376
385
|
├─ 订阅状态:modbus/relay/10/0/state
|
|
377
386
|
└─ 发布命令:modbus/relay/10/0/set
|
|
378
387
|
```
|
|
379
388
|
|
|
380
|
-
**示例2
|
|
389
|
+
**示例2:亖米开关ID=5,按钮3 → 继电器11-线圈15**
|
|
381
390
|
```
|
|
382
391
|
物理面板配置:
|
|
392
|
+
├─ 面板品牌:亖米(Symi)
|
|
383
393
|
├─ 开关ID:5(物理面板地址)
|
|
384
394
|
├─ 按钮编号:3(面板按钮3)
|
|
385
395
|
映射到继电器:
|
|
386
|
-
├─
|
|
387
|
-
└─
|
|
396
|
+
├─ 从站地址:11(Modbus继电器设备11)
|
|
397
|
+
└─ 线圈编号:15(继电器通道15)
|
|
388
398
|
|
|
389
399
|
MQTT主题:
|
|
390
400
|
├─ 订阅状态:modbus/relay/11/15/state
|
|
@@ -444,7 +454,20 @@ MQTT主题:
|
|
|
444
454
|
#### 配置主站节点
|
|
445
455
|
|
|
446
456
|
1. 拖拽 **Modbus主站** 节点到流程画布
|
|
447
|
-
2.
|
|
457
|
+
2. 双击节点,配置连接参数:
|
|
458
|
+
|
|
459
|
+
**TCP连接:**
|
|
460
|
+
- 连接类型:TCP/IP
|
|
461
|
+
- TCP主机:192.168.1.100
|
|
462
|
+
- TCP端口:502
|
|
463
|
+
|
|
464
|
+
**串口连接:**
|
|
465
|
+
- 连接类型:串口
|
|
466
|
+
- 点击"搜索串口"按钮查找可用串口
|
|
467
|
+
- 从下拉列表中选择串口(自动填入)
|
|
468
|
+
- 或手动输入:COM1 / /dev/ttyUSB0 / /dev/ttyS1
|
|
469
|
+
- 波特率:9600(或根据设备要求,8-N-1已固定)
|
|
470
|
+
|
|
448
471
|
3. 配置从站设备:
|
|
449
472
|
- 默认已有1个从站(地址10)
|
|
450
473
|
- 点击"添加从站"按钮可添加更多(最多10个)
|
|
@@ -460,21 +483,28 @@ MQTT主题:
|
|
|
460
483
|
|
|
461
484
|
**RS-485总线连接:**
|
|
462
485
|
- **连接类型**:TCP/IP 或 串口
|
|
486
|
+
|
|
487
|
+
TCP模式:
|
|
463
488
|
- **TCP主机**:192.168.1.200(RS-485转TCP网关地址)
|
|
464
489
|
- **TCP端口**:8888
|
|
465
|
-
|
|
466
|
-
|
|
490
|
+
|
|
491
|
+
串口模式:
|
|
492
|
+
- 点击"搜索串口"按钮查找可用串口
|
|
493
|
+
- 从下拉列表中选择串口(自动填入)
|
|
494
|
+
- 或手动输入:COM1 / /dev/ttyUSB0 / /dev/ttyS1
|
|
495
|
+
- **波特率**:9600(亖米协议固定,8-N-1已自动配置)
|
|
467
496
|
|
|
468
497
|
**MQTT服务器:**
|
|
469
498
|
- 选择与主站相同的MQTT配置
|
|
470
499
|
|
|
471
500
|
**开关面板:**
|
|
501
|
+
- **面板品牌**:亖米(Symi)- 默认,支持1-8键开关
|
|
472
502
|
- **开关ID**:0(物理面板地址,0-255)
|
|
473
503
|
- **按钮编号**:1(面板按钮,1-8)
|
|
474
504
|
|
|
475
505
|
**映射到继电器:**
|
|
476
|
-
-
|
|
477
|
-
-
|
|
506
|
+
- **从站地址**:10(Modbus继电器设备地址)
|
|
507
|
+
- **线圈编号**:0(继电器通道,0-31)
|
|
478
508
|
|
|
479
509
|
3. 连接输入节点(可选,用于手动控制)
|
|
480
510
|
4. 连接输出节点(如:debug节点)查看状态
|
|
@@ -485,6 +515,7 @@ MQTT主题:
|
|
|
485
515
|
【完整配置】
|
|
486
516
|
RS-485连接:TCP网关192.168.1.200:8888(或串口/dev/ttyUSB0 9600)
|
|
487
517
|
MQTT服务器:本地MQTT服务器(192.168.1.100:1883)
|
|
518
|
+
面板品牌:亖米(Symi)- 支持1-8键开关
|
|
488
519
|
物理面板:开关ID=0,按钮1
|
|
489
520
|
映射到:继电器10,线圈0
|
|
490
521
|
|
|
@@ -535,16 +566,24 @@ MQTT服务器:本地MQTT服务器(192.168.1.100:1883)
|
|
|
535
566
|
- 轮询间隔:200ms
|
|
536
567
|
```
|
|
537
568
|
|
|
538
|
-
###
|
|
569
|
+
### 串口连接示例(支持自动搜索)
|
|
539
570
|
|
|
540
571
|
```
|
|
541
|
-
|
|
572
|
+
配置方式1:自动搜索(推荐)
|
|
573
|
+
1. 连接类型:串口
|
|
574
|
+
2. 点击"搜索串口"按钮
|
|
575
|
+
3. 等待系统检测串口(1-2秒)
|
|
576
|
+
4. 从下拉列表中选择串口
|
|
577
|
+
- 支持:COM1, COM2, COM3... (Windows)
|
|
578
|
+
- 支持:/dev/ttyUSB0, /dev/ttyS1, /dev/ttyS2... (Linux/macOS)
|
|
579
|
+
- 显示厂商信息,便于识别设备
|
|
580
|
+
5. 波特率:9600(默认,已自动配置8-N-1)
|
|
581
|
+
|
|
582
|
+
配置方式2:手动输入
|
|
542
583
|
- 连接类型:串口
|
|
543
|
-
- 串口:COM3(Windows)或 /dev/ttyUSB0(Linux)
|
|
584
|
+
- 串口:COM3(Windows)或 /dev/ttyUSB0 或 /dev/ttyS1(Linux/macOS)
|
|
544
585
|
- 波特率:9600
|
|
545
|
-
-
|
|
546
|
-
- 停止位:1
|
|
547
|
-
- 校验位:无
|
|
586
|
+
- 其他参数:8-N-1(已固定,无需配置)
|
|
548
587
|
```
|
|
549
588
|
|
|
550
589
|
### MQTT集成示例
|
|
@@ -679,6 +718,34 @@ Home Assistant结果:
|
|
|
679
718
|
✅ **HA重启**:不影响,通过retain消息自动重新发现
|
|
680
719
|
✅ **Node-RED重启**:不影响,配置自动加载,连接自动建立
|
|
681
720
|
|
|
721
|
+
## 智能日志系统
|
|
722
|
+
|
|
723
|
+
### 日志限流机制
|
|
724
|
+
|
|
725
|
+
为避免日志过多导致内存占用过大,本节点实现了智能日志限流系统:
|
|
726
|
+
|
|
727
|
+
**工作原理**:
|
|
728
|
+
- **首次错误**:立即显示完整错误信息
|
|
729
|
+
- **重复错误**:10分钟内不再重复显示相同错误
|
|
730
|
+
- **10分钟后**:再次显示错误,确保持续监控
|
|
731
|
+
- **重新部署**:清除日志记录,允许立即显示错误
|
|
732
|
+
|
|
733
|
+
**日志提示**:
|
|
734
|
+
```
|
|
735
|
+
[warn] 轮询从站10失败(不影响其他从站): Timed out [此错误将在10分钟后再次显示]
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
**好处**:
|
|
739
|
+
- ✅ 避免日志文件快速增长
|
|
740
|
+
- ✅ 防止内存占用过大
|
|
741
|
+
- ✅ 保持错误监控能力
|
|
742
|
+
- ✅ 不影响正常功能
|
|
743
|
+
|
|
744
|
+
**适用场景**:
|
|
745
|
+
- Modbus设备未连接时的超时错误
|
|
746
|
+
- MQTT服务器未配置时的连接错误
|
|
747
|
+
- 其他周期性重复的错误
|
|
748
|
+
|
|
682
749
|
## 可靠性保证
|
|
683
750
|
|
|
684
751
|
### 消息队列和并发处理
|
|
@@ -762,6 +829,19 @@ Home Assistant结果:
|
|
|
762
829
|
|
|
763
830
|
### 轻量级协议(从站节点,V0.13)
|
|
764
831
|
|
|
832
|
+
#### 品牌支持
|
|
833
|
+
|
|
834
|
+
- **亖米(Symi)**:默认品牌,完整实现轻量级协议V0.13
|
|
835
|
+
- 支持1-8键开关面板
|
|
836
|
+
- RS-485总线通信(TCP网关或串口)
|
|
837
|
+
- 完整的按键监听和指示灯控制
|
|
838
|
+
- CRC8校验保证数据完整性
|
|
839
|
+
- **其他品牌**:预留扩展接口
|
|
840
|
+
- 可通过修改协议适配其他品牌1-8键开关
|
|
841
|
+
- 后续版本将陆续增加更多品牌支持
|
|
842
|
+
|
|
843
|
+
#### 亖米协议规格
|
|
844
|
+
|
|
765
845
|
- **物理层**:RS-485总线
|
|
766
846
|
- **串口参数**:波特率9600,1起始位,8数据位,1停止位,无校验位
|
|
767
847
|
- **帧格式**:`[0x7E][数据][CRC8][0x7D]`
|
|
@@ -854,10 +934,18 @@ node-red
|
|
|
854
934
|
- 确认设备已启动Modbus TCP服务
|
|
855
935
|
|
|
856
936
|
**串口连接失败**:
|
|
937
|
+
- **使用串口搜索功能**:点击"搜索串口"按钮自动检测可用串口
|
|
857
938
|
- 确认串口名称正确(Windows设备管理器或Linux `ls /dev/tty*`)
|
|
858
|
-
- 检查串口权限(Linux需要:`sudo usermod -a -G dialout $USER
|
|
939
|
+
- 检查串口权限(Linux需要:`sudo usermod -a -G dialout $USER`,然后重新登录)
|
|
859
940
|
- 确认波特率等参数与设备匹配
|
|
860
941
|
- 确保串口没有被其他程序占用
|
|
942
|
+
- 重新拔插USB串口适配器
|
|
943
|
+
|
|
944
|
+
**串口列表为空**:
|
|
945
|
+
- 确认系统已正确安装USB驱动
|
|
946
|
+
- Windows:检查设备管理器中的"端口(COM和LPT)"
|
|
947
|
+
- Linux/macOS:运行 `ls /dev/tty*` 查看串口设备(/dev/ttyUSB0、/dev/ttyS1等)
|
|
948
|
+
- 可以手动输入串口路径,无需依赖自动搜索
|
|
861
949
|
|
|
862
950
|
### 轮询错误
|
|
863
951
|
|
|
@@ -867,12 +955,78 @@ node-red
|
|
|
867
955
|
4. 适当增加轮询间隔(快速轮询可能导致超时)
|
|
868
956
|
5. 查看Node-RED日志获取详细错误信息
|
|
869
957
|
|
|
958
|
+
**关于日志输出**:
|
|
959
|
+
- 本节点使用智能日志限流机制,相同的错误每10分钟只显示一次
|
|
960
|
+
- 重新部署流程时会清除日志记录,允许再次显示错误
|
|
961
|
+
- 这样可以避免日志过多导致内存占用过大
|
|
962
|
+
- 如果看到"[此错误将在10分钟后再次显示]"提示,说明日志限流正在工作
|
|
963
|
+
|
|
870
964
|
### MQTT问题
|
|
871
965
|
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
966
|
+
**症状**:HA实体显示不可用,或MQTT错误日志
|
|
967
|
+
|
|
968
|
+
**原因分析**:
|
|
969
|
+
1. MQTT broker未运行(如:mosquitto服务未启动)
|
|
970
|
+
2. MQTT broker地址配置错误
|
|
971
|
+
3. MQTT broker需要认证但未配置用户名密码
|
|
972
|
+
4. 网络连接问题
|
|
973
|
+
|
|
974
|
+
**解决方案**:
|
|
975
|
+
|
|
976
|
+
1. **检查MQTT broker是否运行**
|
|
977
|
+
```bash
|
|
978
|
+
# macOS/Linux查看mosquitto服务状态
|
|
979
|
+
ps aux | grep mosquitto
|
|
980
|
+
|
|
981
|
+
# 或使用systemctl(Linux)
|
|
982
|
+
sudo systemctl status mosquitto
|
|
983
|
+
|
|
984
|
+
# macOS使用brew services
|
|
985
|
+
brew services list | grep mosquitto
|
|
986
|
+
```
|
|
987
|
+
|
|
988
|
+
2. **启动MQTT broker**
|
|
989
|
+
```bash
|
|
990
|
+
# macOS
|
|
991
|
+
brew services start mosquitto
|
|
992
|
+
|
|
993
|
+
# Linux (systemd)
|
|
994
|
+
sudo systemctl start mosquitto
|
|
995
|
+
|
|
996
|
+
# 或直接运行
|
|
997
|
+
mosquitto -v
|
|
998
|
+
```
|
|
999
|
+
|
|
1000
|
+
3. **验证MQTT连接**
|
|
1001
|
+
```bash
|
|
1002
|
+
# 订阅测试主题(打开一个终端)
|
|
1003
|
+
mosquitto_sub -h localhost -t test
|
|
1004
|
+
|
|
1005
|
+
# 发布测试消息(打开另一个终端)
|
|
1006
|
+
mosquitto_pub -h localhost -t test -m "hello"
|
|
1007
|
+
|
|
1008
|
+
# 如果收到消息,说明MQTT broker正常运行
|
|
1009
|
+
```
|
|
1010
|
+
|
|
1011
|
+
4. **检查Node-RED日志**
|
|
1012
|
+
- 查看是否有"正在连接MQTT broker: xxx"日志
|
|
1013
|
+
- 查看MQTT错误提示,根据提示信息定位问题
|
|
1014
|
+
- 如果提示"无法连接到MQTT broker",检查broker是否运行
|
|
1015
|
+
- 如果提示"MQTT已启用但broker地址未配置",在MQTT服务器配置节点中填写broker地址
|
|
1016
|
+
|
|
1017
|
+
5. **正确配置MQTT服务器节点**
|
|
1018
|
+
- 在Node-RED中打开任意主站或从站节点
|
|
1019
|
+
- 找到"MQTT服务器"字段,点击编辑按钮
|
|
1020
|
+
- 填写正确的broker地址(如:`mqtt://localhost:1883`或`mqtt://192.168.1.100:1883`)
|
|
1021
|
+
- 如果需要认证,填写用户名和密码
|
|
1022
|
+
- 点击"添加"保存配置
|
|
1023
|
+
- 重新部署流程
|
|
1024
|
+
|
|
1025
|
+
6. **HA实体不可用的特殊情况**
|
|
1026
|
+
- 如果HA中实体显示不可用(unavailable),首先确保MQTT连接正常
|
|
1027
|
+
- 然后确保主站节点已启动轮询(查看日志:"开始轮询 X 个从站设备")
|
|
1028
|
+
- 如果轮询成功,实体应该在几秒内变为可用状态
|
|
1029
|
+
- v1.5.5+版本已修复初始状态发布问题,确保使用最新版本
|
|
876
1030
|
|
|
877
1031
|
### 测试设备
|
|
878
1032
|
|
|
@@ -909,73 +1063,36 @@ python -m pymodbus.server tcp --port 502
|
|
|
909
1063
|
|
|
910
1064
|
## 更新日志
|
|
911
1065
|
|
|
912
|
-
### v1.
|
|
913
|
-
- ✅
|
|
914
|
-
-
|
|
915
|
-
-
|
|
916
|
-
-
|
|
917
|
-
-
|
|
918
|
-
- ✅
|
|
919
|
-
-
|
|
920
|
-
-
|
|
921
|
-
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
- ✅
|
|
925
|
-
-
|
|
926
|
-
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
- ✅
|
|
930
|
-
-
|
|
931
|
-
-
|
|
932
|
-
-
|
|
933
|
-
-
|
|
934
|
-
- ✅
|
|
935
|
-
-
|
|
936
|
-
-
|
|
937
|
-
-
|
|
938
|
-
- ✅
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
-
|
|
942
|
-
- ✅ **简化配置流程**:主站和从站共享MQTT配置,避免重复输入
|
|
943
|
-
- ✅ **防止配置错误**:确保所有节点使用相同的MQTT服务器和主题
|
|
944
|
-
- ✅ **配置持久化**:MQTT服务器配置自动保存,重启不丢失
|
|
945
|
-
- ✅ **QoS=1消息保证**:所有命令和状态消息使用QoS=1,确保不丢失
|
|
946
|
-
- ✅ **持久化会话**:clean=false,断线重连后继续接收未读消息
|
|
947
|
-
- ✅ **自动重连机制**:MQTT 5秒自动重连,Modbus 5秒自动重连
|
|
948
|
-
- ✅ **完整双向同步**:控制命令和状态反馈双向实时同步
|
|
949
|
-
- ✅ **支持一对多/多对一**:灵活的按钮到继电器映射关系
|
|
950
|
-
- ✅ **大量设备支持**:测试验证100+节点并发无遗漏
|
|
951
|
-
- ✅ **断电断网恢复**:所有配置和状态自动恢复,零数据丢失
|
|
952
|
-
- ✅ **符合Node-RED规范**:使用标准config节点模式,官方开发规范
|
|
953
|
-
|
|
954
|
-
### v1.0.1 (2025-10-17)
|
|
955
|
-
- ✅ **重新设计从站开关节点**:支持物理开关面板(RS-485)到Modbus继电器的映射
|
|
956
|
-
- ✅ **开关ID分离**:开关ID(0-255)对应物理面板,不是继电器地址
|
|
957
|
-
- ✅ **完整映射配置**:物理面板(开关ID+按钮)→ 继电器(从站+线圈)
|
|
958
|
-
- ✅ **优化配置界面**:更清晰的配置说明和示例
|
|
959
|
-
- ✅ **本地验证通过**:所有功能测试正常
|
|
960
|
-
|
|
961
|
-
### v1.0.0 (2025-10-17)
|
|
962
|
-
- ✅ 初始版本发布
|
|
963
|
-
- ✅ Modbus主站节点(TCP/串口支持)
|
|
964
|
-
- ✅ **动态从站管理**:支持动态添加/删除从站设备(最多10台)
|
|
965
|
-
- ✅ **独立配置**:每个从站独立配置地址、线圈范围、轮询间隔
|
|
966
|
-
- ✅ **容错机制**:单个从站失败不影响其他从站继续轮询
|
|
967
|
-
- ✅ **配置持久化**:所有从站配置自动保存
|
|
968
|
-
- ✅ MQTT集成和Home Assistant MQTT Discovery(完全兼容)
|
|
969
|
-
- ✅ 开关从站节点
|
|
970
|
-
- ✅ 完整文档和示例流程
|
|
971
|
-
- ✅ 优化的错误处理和自动重连机制
|
|
972
|
-
- ✅ 连接断开自动检测和恢复
|
|
973
|
-
- ✅ 完善的资源清理和内存管理
|
|
974
|
-
- ✅ 稳定的唯一ID机制(避免重复实体)
|
|
975
|
-
- ✅ 设备可用性状态管理(online/offline)
|
|
976
|
-
- ✅ MQTT retain消息支持(断电重启不丢失配置)
|
|
977
|
-
- ✅ 智能状态显示(正常设备数/总设备数)
|
|
978
|
-
- ✅ 本地测试验证通过(Node-RED v4.0.8)
|
|
1066
|
+
### v1.5.6 (2025-10-18) - MQTT错误提示优化 ✅最新版本
|
|
1067
|
+
- ✅ **MQTT错误提示改进**:
|
|
1068
|
+
- 当MQTT连接失败且错误消息为空时,提供友好的默认提示
|
|
1069
|
+
- 明确提示broker地址和可能的原因:"无法连接到MQTT broker: xxx,请检查broker是否运行"
|
|
1070
|
+
- 添加MQTT连接日志:"正在连接MQTT broker: xxx",便于调试
|
|
1071
|
+
- 帮助用户快速定位MQTT配置问题
|
|
1072
|
+
- ✅ **调试信息完善**:
|
|
1073
|
+
- MQTT连接过程增加详细日志输出
|
|
1074
|
+
- 错误提示更加明确和友好
|
|
1075
|
+
- 便于用户排查MQTT连接问题
|
|
1076
|
+
|
|
1077
|
+
### v1.5.5 (2025-10-18) - HA自动发现修复和初始状态发布
|
|
1078
|
+
- ✅ **修复HA实体不可用问题**:
|
|
1079
|
+
- 添加MQTT broker配置验证,空地址时不尝试连接并给出警告
|
|
1080
|
+
- 第一次轮询成功后立即发布所有线圈的初始状态到MQTT
|
|
1081
|
+
- 确保HA能立即获取到设备的真实状态,实体显示为可用
|
|
1082
|
+
- 解决初始状态为false时不发布导致实体不可用的问题
|
|
1083
|
+
- ✅ **初始状态发布机制**:
|
|
1084
|
+
- 新增initialPublished标志,记录每个从站是否已发布初始状态
|
|
1085
|
+
- 第一次轮询成功后,无论状态值是什么,都发布到MQTT
|
|
1086
|
+
- 后续轮询只在状态改变时发布,减少MQTT消息量
|
|
1087
|
+
- 确保HA自动发现后立即显示正确的设备状态
|
|
1088
|
+
- ✅ **MQTT配置优化**:
|
|
1089
|
+
- 主站和从站都添加broker地址验证
|
|
1090
|
+
- 配置无效时不尝试连接,避免无意义的错误日志
|
|
1091
|
+
- 提供清晰的警告信息,帮助用户配置
|
|
1092
|
+
- ✅ **完整测试验证**:
|
|
1093
|
+
- 从站轮询正常,HA实体自动创建并显示可用
|
|
1094
|
+
- 初始状态正确同步到HA
|
|
1095
|
+
- 配置持久化保存正常
|
|
979
1096
|
|
|
980
1097
|
## 许可证
|
|
981
1098
|
|
|
@@ -991,9 +1108,10 @@ MIT License - 详见 [LICENSE](LICENSE) 文件
|
|
|
991
1108
|
## 支持
|
|
992
1109
|
|
|
993
1110
|
如有问题或建议:
|
|
994
|
-
- 📧 提交Issue:
|
|
1111
|
+
- 📧 提交Issue:https://github.com/symi-daguo/node-red-contrib-symi-modbus/issues
|
|
995
1112
|
- 📦 NPM包:https://www.npmjs.com/package/node-red-contrib-symi-modbus
|
|
996
|
-
-
|
|
1113
|
+
- 👤 NPM作者:https://www.npmjs.com/~symi-daguo
|
|
1114
|
+
- 🌐 Node-RED Flow Library:即将提交
|
|
997
1115
|
|
|
998
1116
|
## 致谢
|
|
999
1117
|
|