本帖最后由 ms2 于 2022-1-13 20:32 编辑
家里的燃气热水器坏了,因为也用了7年了,所以干脆换一个,想着反正都是买,那就搞个支持HA的吧,虽然好像接入HA也没什么用处。然后就在论坛里找看哪家的支持,看来看去,还是云米的有点希望。我想着应该能行吧,然后就入手了一个。
--------------------------------------------------------------------------------------------------------
已完美解决,anlong大神(miot auto插件作者)一出马,就几行代码的事,看二楼,加上这几行代码,直接整个面板就出来了(此代码应该也适用其它小米设备的调用,这太牛了),如下图:
1月12日anlong大神插件最新更新:我测试了上面的温度设置,改不了温度,今天跟大神沟通了,大神几分钟就把插件更新了,解决了这个问题,然后还问了模式设置怎么改成中文,大神以前的文档里有,但当时没看明白,现在搞明白了,更新后如下:
注意看:模式-自定义 这几个字,以前是英文的,可以直接改成中文的。全部代码如下:
--------------------------------------------------------------------------------------------------------
下面这些可看可不看了:上面anlong已给出了代码,有了这几行代码,所有的事情都变得简单了。
买回来才发现,这插件对我的热水器,用不了,然后看到另一个大神做的小米插件:https://bbs.hassbian.com/thread-12007-1-1.html,这真是神一般的存在,我一开始以为这个是HA原生的集成呢,真是太好用了。
用了这个小米的miot auto插件后,直接在HA的集成界面里,就把我的热水器接入了,现在说说我碰到的问题,请教一下大家。接入后,在开发者工具,状态里得到2个东西:
接入后,直接可用的是:热水器开关,以及热水器当前的水温,开关直接用是没问题的,但默认的水温,如果想做自动化是用不了的,因为不是数值的属性,然后我就做了一个sensor 如下:
sensor:
- platform: template
sensors:
yunmi_waterheater_temp: #热水器小温
friendly_name: 云米温度
value_template: "{{ states.water_heater.viomi_u27_47a2_water_heater.attributes.current_temperature }}"
unit_of_measurement: °C
这样水温也搞定了,输出的是数值属性,可以直接做自动化调用了。
然后问题来了,其它几个重要的属性在HA里可以看到(一键即热、当前模式、目标温度、巡航预约),但是不知道怎么拿出来用,对应的数据如下:
min_temp: 30 #最低水温
max_temp: 65 #最高水温
operation_list: Custom, AI, Children, Comfortable, Old Man, Kitchen #可设置操作模式列表
current_temperature: 23 #当前热水器水温,如果在用的过程中,显示实时水温
temperature: 42 #已设置的水温
target_temp_high: 65 #目标最高水温
target_temp_low: 30 #目标最低水温
operation_mode: Custom #已设定的操作模式
model: viomi.waterheater.u27
lan_ip: 192.168.1.38
mac_address: xx:xx:xx:xx:xx:xx
entity_class: MiotWaterHeaterEntity
miot_type: urn:miot-spec-v2:device:water-heater:0000A02A:viomi-u27:1
water_heater.fault: 0 #热水器错误状态,0应该是正常
water_heater.target_temperature: 42 #目标水温,可在服务里用set_property设置
water_heater.temperature: 23 #当前水温
water_heater.mode: 0 #,可在服务里用set_property设置,设置模式,0是Custom(Custom, AI, Children, Comfortable, Old Man, Kitchen)
water_heater.status: 2 # 这个会随热水器总开关变化,如果是关的,这里会显示0,如果一键即热打开,这里显示4
water_heater.on: true #热水器开关,可在服务里用set_property设置
cruise_appointment.on: false #自动巡航预约开关,可在服务里用set_property设置
cruise_appointment.start_hours: 19 #设置的自动巡航预约开始时间-小时,可在服务里用set_property设置
start_minutes-5-3: 0 #设置的自动巡航预约开始时间-分钟,可在服务里用set_property设置
cruise_appointment.end_hours: 21 #设置的自动巡航预约结束时间-小时,可在服务里用set_property设置
cruise_appointment.end_minutes: 0-5-6: 0 #设置的自动巡航预约结束时间-分钟,可在服务里用set_property设置
function.water_velocity: 0 #当前热水流速,这个重要,我很需要
function.preheating: false #一键即热开关,可在服务里用set_property设置
function.cruise_press: true #自动巡航相关的,不懂作用
state_updater: lan
sub_entities: water_heater-2.on-6
friendly_name: Xiaomi Miot Water Heater
supported_features: 3
首先,我当时看到插件作者写的可以调用小米设备的siid,piid来得到值,我当时在想这我怎么知道,后来认真看了一下作者的帖子,原来作者还帖心的把所有的小米设备的这些值都做成表了,我的热水器值如下表:https://home.miot-spec.com/spec/viomi.waterheater.u27
下面开始说说插件作者牛逼的东西了,首先我试了一下设置水温如下:
转换成代码是这样的:
service: water_heater.set_temperature
data:
temperature: 42
target:
entity_id: water_heater.viomi_u27_47a2_water_heater
这样直接点调试,是可以设置温度的,说明这方法可行了,那第一个问题来了,把这个服务转成lovelace可输入温度的界面怎么写,各位大神有懂的麻烦回复一下。
然后就是更复杂的了,那就是怎么样得到水流速传感器值了,测试如下:
转换成代码:
service: xiaomi_miot.get_properties
data:
entity_id: water_heater.viomi_u27_47a2_water_heater
throw: true
mapping:
function:
siid: 2
piid: 1
点击调试后,会在通知里得到如下结果:
Miot properties
[{'did': 'prop.2.1', 'siid': 2, 'piid': 1, 'code': 0, 'value': 0}]
注意最后那个'value': 0,这个0就是得到的水流速,上面这个表在python里是一个二维的表,怎么样才能得到我只里要的最后一个value': 0的值呢。
这是第二个问题,这个传感器要怎么写,才能得到这个水流速的值,麻烦懂的大神帮个忙告诉我。
剩下就是第三个问题了,上面我问的只是怎么设置温度(目标温度),还有一键即热、当前模式、巡航预约这些,在属性表里都是可以调用的,其它这些要怎么写,各位大神,发挥你们才能的时候到了,麻烦大家回复了,谢谢。
现在总结一下我具体需要的界面及开关:
0、热水器总开关(这个接入就有了,可以直接用)
1、当前水温(这个自己搞定了)
2、当前水流速(这个可以通过服务调用出来值 ,但不知道怎么写传感器,得到的是python的二维表,不是单一的值,python我刚学,水平不够)
3、当前模式(这个在属性里有select值,但不知道怎么写到界面里)
4、一键即热(这个用服务可以调出来属性,但不知道怎么写成开关-已解决,直接写个开关模板,后面有代码)
5、目标温度(这个在服务里可以调用,但不知道怎么写到界面里)
6、巡航预约开关(这个属性在服务里也可以调用出来---已解决,跟一键即热开关一样写个开关模板,后面有代码)
7、巡航预约设定时间(这个是打开巡航预约开关后,会有输入时间的界面,在服务里也可以调用出值 ,但不知道怎么写界面)
----------------------------------------------------------------------------------------------------
热水器各种设置,可以在开发者工具里用这个服务,所有有关开,关,或者温度值,都可以这样设置:
刚搞定“一键即热”跟“零冷水预约”这2个开关,我家没有热水回水管,我没用这功能,但看网上有些朋友很需要这开关,所以折腾了一下,感觉好像能用调用这些,都可以正常用了,代码如下:目前折腾到这个程度,好像也差不多够用了:
后面的继续折腾,还有一个水流速再折腾一下,待续。。。。。。
|