『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1464|回复: 1

[技术探讨] ESP modbus 求助

[复制链接]

11

主题

78

帖子

794

积分

高级会员

Rank: 4

积分
794
金钱
711
HASS币
20
发表于 2022-10-17 17:51:07 | 显示全部楼层 |阅读模式
我也碰到同样的问题,一个ESP32s读取address: 0xd6 或者address: 0xd7 着两个同一总线上的两个不同地址设备,读取任意一个都没有问题但是读取两个设备,ESP直接挂了连接不上API。目前采取的办法是使用了两个ESP分别读取单个设备的办法解决,但着终究不是个事总不能增加一个MODBUS设备就占用一个ESP硬件把,那位大神帮忙看看那里出问题了!
modbus:
  id: esp485_modbus
  send_wait_time: 2000ms

modbus_controller:
  - id: esp485_modbus_controller
    modbus_id: esp485_modbus
    address: 0xd6
    command_throttle: 2000ms
    setup_priority: -8
    update_interval: 5s

  - id: esp485_modbus_controller_01
    modbus_id: esp485_modbus
    address: 0xd7
    command_throttle: 1500ms
    setup_priority: -10
    update_interval: 10s

sensor:
  #母排电压
  - platform: modbus_controller
    modbus_controller_id: esp485_modbus_controller
    id: esp485_modbus_HWMP_Voltage
    name: "HWMP_Voltage"
    address: 0x0000
    unit_of_measurement: "V"
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 2
    filters:
    - multiply: 0.01
    device_class: voltage
#电池01
  - platform: modbus_controller
    modbus_controller_id: esp485_modbus_controller_01
    id: esp485_modbus_HWMP_Voltage_01
    name: "HWMP_Voltage_1"
    address: 0x0000
    unit_of_measurement: "V"
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 2
    filters:
    - multiply: 0.01
    device_class: voltage

回复

使用道具 举报

1

主题

41

帖子

298

积分

中级会员

Rank: 3Rank: 3

积分
298
金钱
257
HASS币
0
发表于 2022-12-10 18:01:28 | 显示全部楼层
本帖最后由 msavi 于 2022-12-10 18:05 编辑

我也遇到现样的问题,家里有8个mudbus温控器,都设置成不同的地址码,接入1个没问题,接入2个只能显示一个,你的问题解决了吗?我的代码如下:

## 配置mod_bus
#  配置mod_bus设置
uart:   
  - id: mod_bus
    baud_rate: 9600 # speed to STC15L101EW
    stop_bits: 1
    tx_pin: GPIO1
    rx_pin: GPIO3

# 配置mod_bus日志文件   
    debug:   
      direction: BOTH
      dummy_receiver: false
      after:
        delimiter: "\n"
      sequence:
        - lambda: UARTDebug::log_string(direction, bytes);  ##  UARTDebug::log_hex(direction, bytes, char separator)  将字节记录为字符串值

modbus:

   - id: mod_bus_1
     send_wait_time: 200ms  

   - id: mod_bus_2
     send_wait_time: 200ms

   - id: mod_bus_3
     send_wait_time: 200ms

   - id: mod_bus_4
     send_wait_time: 200ms

   - id: mod_bus_5
     send_wait_time: 200ms

   - id: mod_bus_6
     send_wait_time: 200ms

   - id: mod_bus_7
     send_wait_time: 200ms

   - id: mod_bus_8
     send_wait_time: 200ms

   - id: mod_bus_10
     send_wait_time: 200ms                                         

modbus_controller:

  - id: elex_1                     #客厅空调温控器
    address: 0x1
    modbus_id: mod_bus_1
    setup_priority: -10
    update_interval: 2s   

  - id: elex_2                     #餐厅空调温控器
    address: 0x2
    modbus_id: mod_bus_2
    setup_priority: -10
    update_interval: 2s

  - id: elex_3                     #主卧空调温控器
    address: 0x3
    modbus_id: mod_bus_3
    setup_priority: -10
    update_interval: 2s

  - id: elex_4                     #次卧空调温控器
    address: 0x4
    modbus_id: mod_bus_4
    setup_priority: -10
    update_interval: 2s

  - id: elex_5                     #客卧空调温控器
    address: 0x5
    modbus_id: mod_bus_5
    setup_priority: -10
    update_interval: 2s

  - id: elex_6                     #书房空调温控器
    address: 0x6
    modbus_id: mod_bus_6
    setup_priority: -10
    update_interval: 2s

  - id: elex_7                     #地暖控制器
    address: 0x7
    modbus_id: mod_bus_7
    setup_priority: -10
    update_interval: 2s

  - id: elex_8                     #新风控制器
    address: 0x8
    modbus_id: mod_bus_8
    setup_priority: -10
    update_interval: 2s

  - id: elex                      #机柜测试温控器
    address: 0xA
    modbus_id: mod_bus_10
    setup_priority: -10
    update_interval: 2s


switch:

## 设置温控器开关   

  - platform: modbus_controller
    modbus_controller_id: elex_1
    id: kt_air
    name: "客厅空调开关"
    register_type: holding
    address: 0x1
    bitmask: 1

  - platform: modbus_controller
    modbus_controller_id: elex_2
    id: ct_air
    name: "餐厅空调开关"
    register_type: holding
    address: 0x1
    bitmask: 1


#读取温控器设置
sensor:

  - platform: modbus_controller
    modbus_controller_id: elex_1
    id: kt_tem
    name: "客厅温度"
    address: 0x06
    unit_of_measurement: "°C"
    register_type: holding
    value_type: S_WORD
    accuracy_decimals: 1
    skip_updates: 1   
#    filters:
#      - multiply: 0.01


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 14:52 , Processed in 0.056356 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表