请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居第一站

 找回密码
 立即注册
查看: 1095|回复: 61

[插件发布] 弃之博联,转向ESP8266-IRHeatpump-MQTT空调遥控

  [复制链接]

10

主题

252

帖子

1224

积分

论坛技术达人

积分
1224
金钱
962
HASS币
20
发表于 2018-9-27 22:21:21 | 显示全部楼层 |阅读模式
本帖最后由 huex 于 2018-9-28 20:08 编辑

 自从IRremoteESP8266 更新后,大量的空调红外编码,让irhvac看到了希望,大量品牌国货得以支持,虽然目前主流固件espeasy,tasmota仅仅支持了几个品牌,但相信透过IRremoteESP8266,后面会越来越多。此前一直使用博联,但是使用过程中也遇到非常多的问题,ha频繁的升级带来的问题存在于好几个版本,当然这是次要的,最主要的是一直以来需要自行读取遥控码,无论是论坛还是GAYHUB上插件都存在支持参数少,风量要么不完整,要么模式不完整,对于支持风口定位的机器,抱歉,根本不存在支持,你要用就得自己完全的自己录入,以下内容会解决这些问题.

 当然它可能会带来更多的工作量,单说如果你自己使用,品牌单一,可以做到的功能可以说很全,但是兼容插件没有办法去顾及所有的品牌功能,这就g带来了不必要的工作量 ,就个人使用感受来说比博联强太多。部分仅存于国内的品牌可能没有支持,不要灰心,你要知道ESPEasy和Tasmota项目都有PR空调哦,今天就带来两个IRHVAC项目的内容

ESPEASY-Heatpump

这个项目比较久,似乎源自mysensor 328P,也就是P115_HeatpumpIR.ino,项目Tonia/ESPEasy,目前支持了以下品牌的空调:

•PANASONIC DKE, JKE, NKE CKP (PROBABLY ALSO OTHER PANASONIC MODEL FAMILIES)
•CARRIER CARRIER_NQV CARRIER_MCA QLIMA_1 QLIMA_2
•MIDEA (ALSO SOLD AS 'ULTIMATE' IN FINLAND)
•FUJITSU
•MITSUBISHI ELECTRIC FD, FE
•MITSUBISHI_HEAVY_ZJ MITSUBISHI_HEAVY_ZM MITSUBISHI_HEAVY_ZMP
•MITSUBISHI_SEZ
•SAMSUNG
•SHARP / IVT
•AUX
•AIRWAY 
•DAIKIN DAIKIN_ARC417
•BALLU
•BGH_AUD
•FUEGO
•GREE GREEYAN GREEYAA
•HISENSE_AUD
•HITACHI
•HYUNDAI
•R51M
•TOSHIBA TOSHIBA_DAISEIKAI

项目并未与ESPEasy同步,我也试过使用P115文件重译,遇到的错误太多,所以没有进行下去,直接使用此项目生成

下载/编译文件

在此提供已经编译好[1M espeasy-heatpump]文件,请使用FlashESP8266.exe刷写

配置ESPEasy

配置ESPEASY-controllers,添加OpenHAB MQTT Controller Subscribe以及Controller Publish默认即可

添加Heatpump IR transmitter设备,指定对应的GPIO,填写name后其它荐默认即可!

测试遥控

WEB和MQTT测试遥控

上述例中,从panasonic_ckp起即为空调参数,此处为panasonic_ckp遥控码, 后面6个逗号对应的数字分别为【 空调开/关,模式,风量,温度,上下风,左右风】

第一位 对应1为开0为关

第二位 对应0-auto 1-heat 2-cool 3-dry 4-fan_only 5-swing 

第三位 对应0-auto 1-quiet 2-low 3-mid 4-high

第四位 对应温度值

第五位 对应 0 auto 1 up 2...(此处空调基本没有共同值,有的是无定位调节,有的只有开和关,此处松下是有5个可定位值)

第六位 对应 同上(大部分空调没有默认0即可)

如何查找品牌

除了个别品牌没有子项,比如midea,直接使用midea即可,大部分都有子项,推荐去源码查看,比如空调为海信,直接使用Hisense,web会返回错误,查看HeatpumpIR.cpp文件

HisenseHeatpumpIR::HisenseHeatpumpIR() : HeatpumpIR()
{
  static const char PROGMEM model[] PROGMEM = "hisense_aud";
  static const char PROGMEM info[]  PROGMEM = "{\"mdl\":\"hisense_aud\",\"dn\":\"Hisense AUD\",\"mT\":18,\"xT\":32,\"fs\":3}";

  _model = model;
  _info = info;
}

得知子项为hisense_aud,故使用web打开http://192.168.0.61/control?cmd=heatpumpir,hisense_aud,1,1,0,22,0,0 页面返回P115: Heatpump IR code transmitted发送成功

如何确定品牌支持的值

上例中海信,查看HisenseHeatpumpIR.h文件,

// Operating modes
// Hisense codes
#define HISENSE_AIRCON1_MODE_AUTO  0x04 // Not available 0x00
#define HISENSE_AIRCON1_MODE_HEAT  0x00
#dHISENSE_AIRCON1_MODE_COOL  0x02
#define HISENSE_AIRCON1_MODDDDEDDE_DRY   0x03
#define HISENSE_AIRCON1_MODE_FAN   0x04
#define HISENSE_AIRCON1_MODE_MAINT 0x04 // Power OFF

// Fan speeds. Note that some heatpumps have less than 5 fan speeds

#define HISENSE_AIRCON1_FAN_AUTO   0x00 // Fan speed
#define HISENSE_AIRCON1_FAN1       0x03 // * low
#define HISENSE_AIRCON1_FAN2       0x02 // * med
#define HISENSE_AIRCON1_FAN3       0x01 // * high
#define HISENSE_AIRCON1_FAN4       0x01 // * high Not available
#define HISENSE_AIRCON1_FAN5       0x01 // * high Not available

// Not available in this model.
// Vertical air directions. Note that these cannot be set on all heat pumps
#define HISENSE_VDIR_AUTO   0
#define HISENSE_VDIR_MANUAL 0
#define HISENSE_VDIR_SWING  0
#define HISENSE_VDIR_UP     0
#define HISENSE_VDIR_MUP    0
#define HISENSE_VDIR_MIDDLE 0
#define HISENSE_VDIR_MDOWN  0
#define HISENSE_VDIR_DOWN   0

// Not available in this model.
// Horizontal air directions. Note that these cannot be set on all heat pumps
#define HISENSE_HDIR_AUTO   0
#define HISENSE_HDIR_MANUAL 0
#define HISENSE_HDIR_SWING  0
#define HISENSE_HDIR_MIDDLE 0
#define HISENSHDIR_LEFT   0
#define HISENSE_HDIR_MLEFT  0
#define HISENSE_HDIIIR_MRIGHT 0
#define HISENSE_HDIR_RIGHT  0

从Operating modes即可知道支持 auto heat cool dry fan
Fan speed只支持low med high auto
Horizontal Vertical均不支持,故测试请按上述 1-6位数字逐一测试即可

空调没有制冷或者通风模式

此部分不影响HTTP调试,由于我的空调功能一致,所以目前还不清楚是否会影响后续接入hass使用及此代码是否有所指不同,当然了,如果你能找出来,直接改一下品牌的文件内容值应该可行

TASMOTA-IRHVAC

项目更新比较,目前也比较活跃,IRHVAC从一开始仅支持三菱和TOSHIBA,大金,现在也支持fujitsu和midea,估计下一个正式版本会包含,IRremoteESP8266最近大量更新空调遥控码,相信在不久的将来TA会支持越来越多的空调了!

下载/编译文件

此项目必须编译,默认TASMOTA是不启用IRHVAC的,在user_config中启用,在此仅提供[midea版本]的ta供大家测试,FUJITSU估计用的人少!

配置TASMOTA

比较容易,选中GPIO红外对应的IRSEND保存即可

测试遥控

tasmota支持控制台测试,内容如下

 irhvac {"Vendor": "MIDEA",        "Power": "1","Mode": "cold","FanSpeed": "low", "Temp": "28"}

Power 1开0关 mode: cool heat dry fan auto fanspeed low high medium auto ,对应测试即可

品牌及支持的内容

主要存在于xdrv_05_irremote.ino文件中,并且有写明支持的模式,风速等级等情况,内容比ESPEasy简单,在mqtt直接传入你要的值,写py过程中简单多了.....

HOMEASSISTANT

以上两个项目均能支持Domoticz,但是一直没有支持上HASS,gayhub虽然有部分历史代码,但是目前早已经不能使用,Py对于我这种新手来说真提困难重重,于是到处GG,查看语法,终于东拼西凑凑出来勉强能使ESPEasy-heatpump接入到HASS,个人使用基本没有问题,py里直接对风口定位,完全满足我的需求!

heatpumpir.py - espeasy

下载[heatpumpir.py]文件并放置ha config路径 custom_components\climate 下,前面使用web测试得知品牌和参数,修改heatpumpir.py

DEFAULT_NAME = 'MQTT Heatpump IR'
DEFAULT_QOS = 0
DEFAULT_RETAIN = True
DEFAULT_MIN_TEMP = 18
DEFAULT_MAX_TEMP = 30
DEFAULT_TARGET_TEMP_STEP = 1.0
FUJITSU = 'fujitsu_awyz'
PANASONIC = 'panasonic_jke'
MIDEA = 'midea'
DAIKIN = 'daikin'
HITACHI = 'hitachi'
AUX = 'aux'
GREE = 'gree'
HISENSE = 'hisense'

关于品牌,如果你的panasonic为panasonic_dke 则修改

PANASONIC = 'panasonic_jke' 为PANASONIC = 'panasonic_dke'

配置HASS

climate:
  - platform: heatpumpir
   name: 'panasonic'
    model: 'panasonic_jke'
    command_topiic: '/irmqtt/cmd'
    sensor: sensor.bksensor

command_topic为espeasy mqtt订阅地址
sensor 为必须荐,填房间内传感器,如果没有任意填一个可使用温度传感器的即可
model为品牌型号,上面ESPEASY-heatpump部分讲过方法,此处与py文件对等型号一致即可

HASS截图:
20180927221900.png

至此已经完成了ESPEasy-heatpump接入到HASS,一般来说,都没问题了,如果你的空调模式有缺或者风速有缺,那么请继续往下看:

特例情况

关于模式和风速,如果你的空调参数模式不全,缺少heat等其中一项,请修改文件中

        if self._model == FUJITSU or self._model == PANASONIC or self._model ==DAIKIN or  self._model == HITACHI :
            self._fan_list = ["AUTO", "QUIET", "LOW", "MED", "HIGH"]
            self._operation_list = [STATE_AUTO, STATE_HEAT, STATE_COOL, STATE_DRY, STATE_FAN_ONLY, STATE_OFF]
            self._current_fan_mode = "AUTO"
            self._current_operation = STATE_OFF
        elif self._model == MIDEA or self._model == AUX or self._model == GREE or self._model == HISENSE :
            self._fan_list = ["AUTO", "LOW", "MED", "HIGH"]
            self._operation_list = [STATE_AUTO, STATE_HEAT, STATE_COOL, STATE_DRY, STATE_FAN_ONLY, STATE_OFF]
            self._current_fan_mode = "AUTO"
            self._current_operation = STATE_OFF

对应品牌对应的下内容即可

关于空调顺序,这部分其实是可以通过改源码的,但编译好的文件只能通过修改此部分py内容了,找到以下内容,修改operationMode值,也是前面测试出来的值即可,以我的判断,多数是没问题的,这部分大部分应该是不用更改的,但是在这里还是说明一下,方便特殊定制的盆友。

    def send_command(self):
        """operationMode"""
        if self._current_operation != STATE_OFF:
            powerState = 1 ;
        else:
            powerState = 0 ; 
        if self._current_operation == STATE_OFF:
            operationMode = 0 ;
        elif self._current_operation == STATE_AUTO:
            operationMode = 0 ; 
        elif self._current_operation == STATE_HEAT:
            operationMode = 1 ; 
        elif self._current_operation == STATE_COOL:
            operationMode = 2 ; 
        elif self._current_operation == STATE_DRY:
            operationMode = 3 ; 
        elif self._current_operation == STATE_FAN_ONLY:
            operationMode = 4 ; 

heatpumpir.py - tasmota

大部分人应该还没有用,自己虽然在用,但是我只支持了自己用的fujitsu,并且还存点问题 ,项目自身加支持品牌单一,不清楚bug,暂不放出,如果有需要请留言!

文件下载


游客,如果您要查看本帖隐藏内容请回复


后续会对应ta更新而更新....




评分

参与人数 2金钱 +30 HASS币 +20 收起 理由
咸味土豆 + 10 膜拜大神!
Jones + 20 + 20 膜拜大神!

查看全部评分

回复

使用道具 举报

81

主题

2432

帖子

7827

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
7827
金钱
5355
HASS币
34
发表于 2018-9-27 22:26:04 | 显示全部楼层
我是沙发吗?
回复

使用道具 举报

0

主题

99

帖子

587

积分

论坛积极会员

积分
587
金钱
488
HASS币
0
发表于 2018-9-27 22:42:34 | 显示全部楼层
我是地板么
回复

使用道具 举报

3

主题

260

帖子

926

积分

高级会员

Rank: 4

积分
926
金钱
666
HASS币
0
发表于 2018-9-27 22:43:44 | 显示全部楼层
赞一个赞一个
回复

使用道具 举报

13

主题

694

帖子

1837

积分

金牌会员

Rank: 6Rank: 6

积分
1837
金钱
1133
HASS币
0

活跃会员

发表于 2018-9-27 22:48:29 | 显示全部楼层
膜拜一下,我等小白只能望贴兴叹啦。
回复

使用道具 举报

4

主题

290

帖子

810

积分

高级会员

Rank: 4

积分
810
金钱
520
HASS币
0
发表于 2018-9-27 22:55:57 | 显示全部楼层
支持下 虽然有n多 rm pro 但是还是要练练手
回复

使用道具 举报

2

主题

114

帖子

792

积分

高级会员

Rank: 4

积分
792
金钱
678
HASS币
0
发表于 2018-9-27 23:08:17 | 显示全部楼层
反正松下的我已经搞的感觉80%了
回复

使用道具 举报

7

主题

132

帖子

365

积分

中级会员

Rank: 3Rank: 3

积分
365
金钱
233
HASS币
0
发表于 2018-9-27 23:27:00 | 显示全部楼层
还在用 RM MINI  我都是三星空调 + media 电扇

这个 还没电扇么。。。。。。。。
回复

使用道具 举报

7

主题

132

帖子

365

积分

中级会员

Rank: 3Rank: 3

积分
365
金钱
233
HASS币
0
发表于 2018-9-27 23:38:12 | 显示全部楼层
heatpumpir.py  里面没看到 samsung 是不是还不支持 三星空调?
回复

使用道具 举报

4

主题

152

帖子

979

积分

论坛分享达人

积分
979
金钱
827
HASS币
0
发表于 2018-9-27 23:40:32 | 显示全部楼层
世界因你而改变
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2018-10-17 13:10 , Processed in 0.252858 second(s), 43 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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