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

 找回密码
 立即注册
查看: 8812|回复: 4

[技术探讨] HA中的MODBUS只能读取线圈吗,怎么读取离散输入?(已解决)

[复制链接]

20

主题

250

帖子

1437

积分

论坛DIY达人

积分
1437
金钱
1182
HASS币
40
发表于 2020-2-24 12:51:13 | 显示全部楼层 |阅读模式
本帖最后由 zxlch 于 2020-2-26 16:34 编辑

现在有个简单的解决办法,在系统中查找modbus,然后拷贝出来,放入custom_components里面
修改__init__.py文件,在最后面添加如下代码
    def read_discrete_inputs(self, unit, address, count):
        """Read input inputs."""
        with self._lock:
            kwargs = {"unit": unit} if unit else {}
            return self._client.read_discrete_inputs(address, count, **kwargs)



然后修改binary_sensor.py文件,把
result = self._hub.read_coils(self._slave, self._coil, 1)

替换成
result = self._hub.read_discrete_inputs(self._slave, self._coil, 1)


然后保存重启,这样二进制传感器读取的就是离散输入。
因为我二进制传感器不需要读取线圈,所以就把这个功能改了










==================================================
在modbus中,命令码01是读线圈命令,02为读取离散输入命令。
我在HA的文档查了下好像只能read coils?但是我现在还要read discrete inpus,要怎么操作呢?在NR上是有的(那个FC选项)




回复

使用道具 举报

20

主题

250

帖子

1437

积分

论坛DIY达人

积分
1437
金钱
1182
HASS币
40
 楼主| 发表于 2020-2-24 14:11:01 | 显示全部楼层
HA论坛也有人有同样的问题,唉。。。https://community.home-assistant ... crete-input/38063/3
回复

使用道具 举报

20

主题

250

帖子

1437

积分

论坛DIY达人

积分
1437
金钱
1182
HASS币
40
 楼主| 发表于 2020-2-26 16:10:25 | 显示全部楼层
刚才修改了一下内置的modbus,把读取离散加进去了,等下如果写入和读取都没问题,就发到论坛上来,也许有人用的上
回复

使用道具 举报

20

主题

250

帖子

1437

积分

论坛DIY达人

积分
1437
金钱
1182
HASS币
40
 楼主| 发表于 2020-2-27 12:58:35 | 显示全部楼层
最新106版已经支持读取离散输入了,这个帖子作废。。。浪费我好多时间查资料
回复

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
金钱
4
HASS币
0
发表于 2021-7-9 02:30:21 | 显示全部楼层
现在加上 input_type: discrete_input 就会读取离散输入了
QQ截图20210709022813.png
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 08:36 , Processed in 0.633191 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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