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

 找回密码
 立即注册
楼主: zhf883680

[基础教程] Xiaomi Gateway 3添加不在支持列表中的设备

  [复制链接]

3

主题

84

帖子

359

积分

中级会员

Rank: 3Rank: 3

积分
359
金钱
275
HASS币
0
发表于 2024-5-23 10:21:10 | 显示全部楼层
本帖最后由 louwu 于 2024-5-23 15:48 编辑

原先抄了8键的代码,现在改了之后还是多出来其他几个不可用的按键,如何删除@flyibeat D99052E3-7243-4e2a-9489-ECB8772122A5.png
回复

使用道具 举报

3

主题

133

帖子

1045

积分

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
912
HASS币
0
发表于 2024-5-23 10:40:46 | 显示全部楼层
louwu 发表于 2024-5-23 09:59
最后这个"ttl": "7d"是什么意思

部分设备长时间不操作不触发后在ha会变成不可用。添加ttl参数可以定期通讯保持连接。
没有上述问题可以不添加ttl
回复

使用道具 举报

3

主题

84

帖子

359

积分

中级会员

Rank: 3Rank: 3

积分
359
金钱
275
HASS币
0
发表于 2024-5-23 15:51:27 | 显示全部楼层
flyibeat 发表于 2024-5-23 10:40
部分设备长时间不操作不触发后在ha会变成不可用。添加ttl参数可以定期通讯保持连接。
没有上述问题可以不 ...

学习了,感谢。这些代码都是从哪里学的,我对比了一圈还有好多不明白
回复

使用道具 举报

3

主题

133

帖子

1045

积分

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
912
HASS币
0
发表于 2024-5-23 16:17:40 | 显示全部楼层
louwu 发表于 2024-5-23 15:51
学习了,感谢。这些代码都是从哪里学的,我对比了一圈还有好多不明白

把作者的GitHub库每个文件都翻一遍,屡一下就清楚了
回复

使用道具 举报

0

主题

1

帖子

16

积分

新手上路

Rank: 1

积分
16
金钱
15
HASS币
0
发表于 6 天前 | 显示全部楼层
请教一下大佬,这spec里说明书链接里没有pdid咋整呀?
xiaomi_gateway3.py里的pdid能瞎填不?
回复

使用道具 举报

3

主题

84

帖子

359

积分

中级会员

Rank: 3Rank: 3

积分
359
金钱
275
HASS币
0
发表于 昨天 10:34 | 显示全部楼层
huanghe95 发表于 2024-6-22 22:04
请教一下大佬,这spec里说明书链接里没有pdid咋整呀?
xiaomi_gateway3.py里的pdid能瞎填不? ...

同问,有些找不到pdid
回复

使用道具 举报

3

主题

84

帖子

359

积分

中级会员

Rank: 3Rank: 3

积分
359
金钱
275
HASS币
0
发表于 昨天 10:35 | 显示全部楼层
Each device has a specification:

    {
        "<model>": ["<brand>", "<name>", "<market model>", "<other model>"],
        "spec": [<list of converters>],
        "ttl": <time to live>
    }

- model - `lumi.xxx` for Zigbee devices, number (pdid) for BLE and Mesh devices
- spec - list of converters
- ttl - optional available timeout

Each converter has:

    Converter(<attribute name>, <hass domain>, <mi name>)

- attribute - required, entity or attribute name in Hass
- domain - optional, hass entity type (`sensor`, `switch`, `binary_sensor`...)
- mi - optional, item name in:
   - Lumi spec `mi="8.0.2012"`
   - MIoT spec `mi="2.p.1"` or `mi="2.e.1"` or `mi="3.e.1012.p.1"`
   - MiBeacon spec `mi=4100`

Old Zigbee devices uses Lumi format, new Zigbee 3 and Mesh devices uses MIoT format.

Converter may have different types:

- BaseConv - default, don't change/convert value
- BoolConv - converts int to bool on decode and bool to int on encode
- MapConv - translate value using mapping: `{0: "disarmed", 1: "armed_home"}`
- MathConv - support multiply, round value and min/max borders
- and many others...

For MIoT bool properties you should use `BaseConv`. For MIoT uint8 properties you
should use `BoolConv`.

If converter has `entity=ENTITY_LAZY` - it will work, but entity will setup only with
first data from device. Useful if we don't know exact spec of device. Example, battery
not exist on some firmwares of some devices.

The name of the attribute defines the device class, icon and unit of measure.
Recommended attributes names:

- `motion` - the sensor can only send motion detection (timeout in Hass)
- `occupancy` - the sensor can send motion start and motion stop
- `plug` - for sockets with male connector
- `outlet` - for sockets with only female connector (wall installation)
- `switch` - for relays and switches with buttons (wall installation, remotes)
- `led` - control device led light
- `wireless` - change mode from wired to wireless (decoupled)
- `power_on_state` - default state when electricity is supplied
- `contact` - for door/windor sensor (zigbee2mqtt - contact, hass - door or window)
- `water_leak` - for water leak sensor (zigbee2mqtt - water_leak, hass - moisture)

Nice project with MIoT spec description: https://home.miot-spec.com/
"""
from .converters.base import *
from .converters.const import *
from .converters.lumi import *
from .converters.mesh import *
from .converters.mibeacon import *
from .converters.zigbee import *

# Disable Black formatter and ignore line width
# fmt: off

# Gateways (lumi and miot specs)

回复

使用道具 举报

3

主题

84

帖子

359

积分

中级会员

Rank: 3Rank: 3

积分
359
金钱
275
HASS币
0
发表于 昨天 10:36 | 显示全部楼层
每个设备都有一个规格:
 
    {
        "<model>": ["<brand>", "<name>", "<market model>", "<other model>"],,
        "spec": [<转换器列表>],,
        “ttl”:生存时间
    }
 
- 型号 - Zigbee 设备的“lumi.xxx”,BLE 和 Mesh 设备的编号 (pdid)
-规格-转换器列表
- ttl - 可选可用超时
 
每个转换器具有:
 
    转换器(<属性名称>, <哈斯域>, <mi名称>)
 
- 属性 - 必需,哈斯中的实体或属性名称
- 域 - 可选,哈斯实体类型(“传感器”、“开关”、“二进制传感器”...)
- mi - 可选,项目名称:
   - 发光亮度规格 `mi="8.0.2012"`
   - MIoT规范“mi=“2.p.1””、“mi=“2.e.1””或“mi=“3.e.1012.p.1””
   - 米高兰丁显示规范 `mi=4100`
 
旧Zigbee设备使用Lumi格式,新Zigbee 3和Mesh设备使用MIoT格式。
 
转换器可能有不同的类型:
 
- BaseConv - 默认值,不要更改/转换值
- BoolConv - 在解码时将int转换为bool,在编码时将bool转换为int
- MapConv - 使用映射转换值:`{0: "disarmed", 1: "armed_home"}`
- MathConv - 支持乘法、舍入值和最小/最大边界
- 还有许多其他。。。
 
对于 MIoT bool 属性,你应该使用 `BaseConv`。对于 MIoT uint8 属性,你应该
应使用“BoolConv”。
 
如果转换器具有“entity=ENTITY_LAZY” - 它将工作,但实体将仅使用以下设置
来自设备的第一批数据。如果我们不知道设备的准确规格,这很有用。例如,电池
在某些设备的某些固件上不存在。
 
属性的名称定义了设备类、图标和度量单位。
建议的属性名称:
 
- `motion` - 传感器只能发送运动检测(Hass 中的超时)
-“占用”-传感器可以发送运动开始和运动停止
-“插头”-用于带有公连接器的插座
-“插座”-用于仅带母连接器的插座(壁装)
- `开关` - 用于继电器和带按钮的开关(壁装、远程)
- `led` - 控制装置LED灯
-“无线”-将模式从有线更改为无线(解耦)
- `power_on_state` - 通电时的默认状态
- `contact` - 用于门/窗传感器(zigbee2mqtt - contact,hass - 门或窗)
- `water_leak` - 用于漏水传感器(zigbee2mqtt - water_leak,hass - moisture)
 
具有MIoT规范描述的优秀项目:https://home.miot-spec.com/
"""
从 .converters.base 导入 *
从 .converters.const 导入 *
从 .converters.lumi 导入 *
从 .converters.mesh 导入 *
从 .converters.mibeacon 导入 *
from .converters.zigbee import *
 
# 禁用黑色格式化程序并忽略行宽
# 关闭格式化
 
#网关(lumi和miot规格)
回复

使用道具 举报

3

主题

84

帖子

359

积分

中级会员

Rank: 3Rank: 3

积分
359
金钱
275
HASS币
0
发表于 昨天 10:38 | 显示全部楼层

百度翻译的,还不很理解
回复

使用道具 举报

3

主题

18

帖子

180

积分

注册会员

Rank: 2

积分
180
金钱
162
HASS币
0
 楼主| 发表于 昨天 14:05 | 显示全部楼层
louwu 发表于 2024-6-27 10:38
百度翻译的,还不很理解

或者你在homeassistant 查看到设备 下载下来诊断日志 应该也能看到id
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-6-28 09:30 , Processed in 0.107446 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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