Tasmota MQTT IRHVAC Controller

Hi Hristo, i´m sorry for the delay.
Checking the logs I can see that “Mode” on Tasmota 9.5.0 is still sending the mode of operation (heat, cool, etc), Tasmota 9.1.0 sends “Off” instead of mode, hope this logs helps and you can make the component compatible with Tasmota 9.5 or later (if they don´t change anything again).

This is the log of tasmota 9.5.0 when receiving command from AC IR remote:

00:00:00.001 HDW: ESP8266EX
00:00:00.047 CFG: Loaded from flash at FB, Count 318
00:00:00.159 QPC: Reset
00:00:00.165 Project tasmota Tasmota IR Version 9.5.0(ir)-2_7_4_9(2021-06-17T08:26:51)
00:00:00.754 WIF: Connecting to AP1 telecentro-efb0 Channel 5 BSSId B8:D9:4D:6E:0E:EB in mode 11n as tasmota_IR-5818...
00:00:01.751 WIF: Connected
00:00:02.003 HTP: Web server active on tasmota_IR-5818 with IP address 192.168.220.41
15:20:12.026 MQT: Attempting connection...
15:20:12.060 MQT: Connected
15:20:12.063 MQT: tele/tasmota_IR/LWT = Online (retained)
15:20:12.065 MQT: cmnd/tasmota_IR/POWER = 
15:20:12.070 MQT: tele/tasmota_IR/INFO1 = {"Info1":{"Module":"IR","Version":"9.5.0(ir)","FallbackTopic":"cmnd/DVES_E356BA_fb/","GroupTopic":"cmnd/tasmotas/"}}
15:20:12.080 MQT: tele/tasmota_IR/INFO2 = {"Info2":{"WebServerMode":"Admin","Hostname":"tasmota_IR-5818","IPAddress":"192.168.220.41"}}
15:20:12.090 MQT: tele/tasmota_IR/INFO3 = {"Info3":{"RestartReason":"Software/System restart"}}
15:20:13.158 MQT: stat/tasmota_IR/STATUS = {"Status":{"Module":0,"DeviceName":"Tasmota IR","FriendlyName":["Tasmota IR"],"Topic":"tasmota_IR","ButtonTopic":"0","Power":0,"PowerOnState":3,"LedState":1,"LedMask":"FFFF","SaveData":1,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":0,"PowerRetain":0,"InfoRetain":0,"StateRetain":0}}
15:20:13.209 MQT: stat/tasmota_IR/STATUS11 = {"StatusSTS":{"Time":"2021-08-14T15:20:13","Uptime":"0T00:00:06","UptimeSec":6,"Vcc":2.998,"Heap":27,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":22,"MqttCount":1,"Wifi":{"AP":1,"SSId":"telecentro-efb0","BSSId":"B8:D9:4D:6E:0E:EB","Channel":5,"Mode":"11n","RSSI":100,"Signal":-27,"LinkCount":1,"Downtime":"0T00:00:03"}}}
15:20:16.458 MQT: tele/tasmota_IR/STATE = {"Time":"2021-08-14T15:20:16","Uptime":"0T00:00:09","UptimeSec":9,"Vcc":3.001,"Heap":27,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"telecentro-efb0","BSSId":"B8:D9:4D:6E:0E:EB","Channel":5,"Mode":"11n","RSSI":100,"Signal":-30,"LinkCount":1,"Downtime":"0T00:00:03"}}
15:21:42.580 MQT: tele/tasmota_IR/RESULT = {"IrReceived":{"Protocol":"TCL112AC","Bits":112,"Data":"0x23CB26010024010B45000000008A","Repeat":0,"IRHVAC":{"Vendor":"TCL112AC","Model":-1,"Mode":"Heat","Power":"On","Celsius":"On","Temp":20,"FanSpeed":"Max","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}
15:21:47.149 MQT: tele/tasmota_IR/RESULT = {"IrReceived":{"Protocol":"TCL112AC","Bits":112,"Data":"0x23CB26010020010B450000008006","Repeat":0,"IRHVAC":{"Vendor":"TCL112AC","Model":-1,"Mode":"Heat","Power":"Off","Celsius":"On","Temp":20,"FanSpeed":"Max","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}
15:22:10.099 MQT: stat/tasmota_IR/RESULT = {"IRHVAC":{"Vendor":"TCL112AC","Model":-1,"Mode":"Off","Power":"Off","Celsius":"On","Temp":20,"FanSpeed":"Max","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}

And this is the log of Tasmota 9.1.0 (which works fine)

00:00:00 CFG: Loaded from flash at FB, Count 322
00:00:00 QPC: Reset
00:00:00 Project tasmota Tasmota IR Version 9.1.0(ir)-2_7_4_5
00:00:00 WIF: Connecting to AP1 telecentro-efb0 Channel 5 BSSId B8:D9:4D:6E:0E:EB in mode 11N as tasmota_IR-5818...
00:00:01 WIF: Connected
15:24:27 HTP: Web server active on tasmota_IR-5818 with IP address 192.168.220.41
15:24:28 MQT: Attempting connection...
15:24:28 MQT: Connected
15:24:28 MQT: tele/tasmota_IR/LWT = Online (retained)
15:24:28 MQT: cmnd/tasmota_IR/POWER = 
15:24:28 MQT: tele/tasmota_IR/INFO1 = {"Module":"IR","Version":"9.1.0(ir)","FallbackTopic":"cmnd/DVES_E356BA_fb/","GroupTopic":"cmnd/tasmotas/"}
15:24:28 MQT: tele/tasmota_IR/INFO2 = {"WebServerMode":"Admin","Hostname":"tasmota_IR-5818","IPAddress":"192.168.220.41"}
15:24:28 MQT: tele/tasmota_IR/INFO3 = {"RestartReason":"Software/System restart"}
15:24:29 MQT: stat/tasmota_IR/STATUS = {"Status":{"Module":0,"DeviceName":"Tasmota IR","FriendlyName":["Tasmota IR"],"Topic":"tasmota_IR","ButtonTopic":"0","Power":0,"PowerOnState":3,"LedState":1,"LedMask":"FFFF","SaveData":1,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":0,"PowerRetain":0}}
15:24:29 MQT: stat/tasmota_IR/STATUS11 = {"StatusSTS":{"Time":"2021-08-14T15:24:29","Uptime":"0T00:00:06","UptimeSec":6,"Vcc":3.001,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":22,"MqttCount":1,"Wifi":{"AP":1,"SSId":"telecentro-efb0","BSSId":"B8:D9:4D:6E:0E:EB","Channel":5,"RSSI":100,"Signal":-29,"LinkCount":1,"Downtime":"0T00:00:03"}}}
15:24:32 MQT: tele/tasmota_IR/STATE = {"Time":"2021-08-14T15:24:32","Uptime":"0T00:00:09","UptimeSec":9,"Vcc":3.001,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"telecentro-efb0","BSSId":"B8:D9:4D:6E:0E:EB","Channel":5,"RSSI":100,"Signal":-33,"LinkCount":1,"Downtime":"0T00:00:03"}}
15:24:45 MQT: tele/tasmota_IR/RESULT = {"IrReceived":{"Protocol":"TCL112AC","Bits":112,"Data":"0x0x23CB26010024010B45000000008A","Repeat":0,"IRHVAC":{"Vendor":"TCL112AC","Model":-1,"Mode":"Heat","Power":"On","Celsius":"On","Temp":20,"FanSpeed":"Max","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}
15:24:49 MQT: tele/tasmota_IR/RESULT = {"IrReceived":{"Protocol":"TCL112AC","Bits":112,"Data":"0x0x23CB26010020010B450000008006","Repeat":0,"IRHVAC":{"Vendor":"TCL112AC","Model":-1,"Mode":"Off","Power":"Off","Celsius":"On","Temp":20,"FanSpeed":"Max","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}

And finally the AC config from climate section:

  - platform: tasmota_irhvac
    name: "AC Comedor"
    command_topic: "cmnd/tasmota_IR/irhvac"
    state_topic: "tele/tasmota_IR/RESULT"
    temperature_sensor: sensor.temperatura
    protocol: "TCL112AC"
    min_temp: 16 #optional - default 16 int value
    max_temp: 31 #optional - default 32 int value
    target_temp: 26 #optional - default 26 int value
    initial_operation_mode: "off" # optional - default "off" string value (one of the "supported_modes")
    away_temp: 24 #optional - default 24 int value
    precision: 1 #optional - default 1 int or float value. Can be set to 1, 0.5 or 0.1
    supported_modes:
      - "heat"
      - "cool"
      - "dry"
      - "fan_only"
      - "auto"
      - "off" #Turns the AC off - Should be quoted
    supported_fan_speeds:
      - "auto"
      - "min"
      - "medium"
      - "max"
    supported_swing_list:
      - "off"
      - "vertical" #up to down
    default_quiet_mode: "Off" #optional - default "Off" string value
    default_turbo_mode: "Off" #optional - default "Off" string value
    default_econo_mode: "Off" #optional - default "Off" string value
    hvac_model: "-1" #optional - default "1" string value
    celsius_mode: "On" #optional - default "On" string value 
    default_light_mode: "Off" #optional - default "Off" string value
    default_filter_mode: "Off" #optional - default "Off" string value
    default_clean_mode: "Off" #optional - default "Off" string value
    default_beep_mode: "Off" #optional - default "Off" string value
    default_sleep_mode: "-1" #optional - default "-1" string value

Thanks

1 Like

Hi all,

Can anyone please help me configure feedback from the remote to be mirrored to lovelace?

In the tasmota console (when I go to it’s IP address in the browser) I can see all the commands that the original remote control is sending via IR, so the hardware stuff is fine.

How do I get my lovelace updated accordingly?

Thanks in advance.

1 Like

Hi Hristo,
I am very happy with the integration you have build, it is awesome!!!
Currently, I am having two issues using SAMSUNG_AC:

  1. I have an IR received and all reflect in Lovelace except for off. If I off with remote it does not reflect in lovelance
  2. When I send a command from Lovelace the AC always beeps 2 times even do only 1 MQTT is sent. I have one that has a digital display and I notice that the first beep sets it to 24 and the second beep to the desired temperature
    My configuration

    And this is the Tasmota console logs

I really hope that I can get some help on this :slight_smile:

Hi! I have the same problem, but still can’t solve it. Platform can’t get status of the HVAC. I see that it changes in MQTT topic, but in Lovelace my AC doesn’t change it. I checked all code, but still nothing. My config is:

  - platform: tasmota_irhvac
    name: Haier AC
    command_topic: "cmnd/tasmota_EBAE0C/irhvac"
    state_topic: "stat/tasmota_EBAE0C/RESULT"
    temperature_sensor: sensor.template_temperature_hall #optional this sensor is used to display current temp on the AC card
    protocol: "Haier_AC_YRW02"
    min_temp: 16 #optional - default 16 int value
    max_temp: 30 #optional - default 32 int value
    target_temp: 26 #optional - default 26 int value
    initial_operation_mode: "off" # optional - default "off" string value
    away_temp: 24 #optional - default 24 int value
    precision: 1.0 #optional - default 1.0 float value
    supported_modes:
      - "heat"
      - "cool"
      - "dry"
     # - fan_only
      - "auto"
      - "off" #Turns the AC off - Should be quoted and should be always included here
    supported_fan_speeds:
      #- low
      - "high"
      - "medium"
      # - high
      #- middle
      #- focus
      #- diffuse
      - "min"
      - "auto"
    supported_swing_list:
      - "off"
      - "vertical"
    hvac_model: "-1" # string value
    celsius_mode: "On" #optional - default "On" string value - you can remove it if you use celsius

I finally solved my problem. Protocol name is case sensitive. It should be the same as in tasmota stat line. I fixed it and now Lovelace card gets status from MQTT topic named stat. Also i figured out, that model should be thr same too. Thanx author for his work, it is great!
P.S. My AC Haier has only vertical swing moving. I changed couple lines in climate.py and const.py, and now i can change SwingV status in Lovelace interface to low, top, center and so on.

@thangnm.vietnam Hi, I’ve got exactly same problem. Have you managed to solve this?

OK. @gh0s7 , @thangnm.vietnam : I’ve managed to solve this myself. In version 2021.7.15 (the latest one) there is no line introduced i n version 2021.7.14 labeled as “Fix for some devices AC that are not shown as turned off”. I’ve manually added missing line od code and voila! Off state from remote is detected by component! The missing line is here:

1 Like

Hi, I think I found your problem
state_topic: “stat/tasmota_EBAE0C/RESULT”
use tele not stat

I will also change protocol to vendor

Hi KF042020
You are right, new version of component already fixes this issue

I had the same issue. Manage to fix it by using this KY-022 Infrared Receiver Module instead of using the IR receiver without any resistors.

Have you ever figured out this issue? I also have AR09 Samsung AC and it beeps two times. which i also observed that it first always changed to 24C and then back to desired target temp… Which stops the unit when IR command is send, which is quite bad for operation…

Hi, thanks for your message. I could not find any concrete answer about it, but I was noticing it happens sometimes yes and some not, and even other models also do the same when you send more commands like cleaning, etc. For now, I decided to ignore it as it works!
Please kindly let me know if you find anything more about it!

I found this thread about this issue on IRremoteesp8266, crankyoldgit/IRremoteESP8266#1484
The issue is fixed with new library. I updated from tasmota 9.5 to tasmota-ir 10.0 and now it works. Saved my day.

Hey all, I have arrived at a very frustrating impass with this project…

I have the tasmota-ir on a wemos D1 mini, and can capture and send commands with it. While I have successfully captured commands from my Fujitsu ASTG09K AC remote, configured the model # etc. - using the tasmota_irhvac platform has no effect (climate.turn_on/turn_off)

When capturing commands from the AC remote and sending them back to the AC (mqtt) - I can turn it off, but not on. Other than turning it off, I get zero reaction from the unit

Another complication - receiving commands from the remote, I noticed that the “on” command has Model = 6, whereas the “off” command has Model=1…!?

If anyone can help me with some insights, that would be hugely appreciated!

Also:

1: the documentation mentions Fujitsu variants - is there a method of modifying the command libraries it uses?
2: how do I modify the tasmota-ir build? I might be able to customise the commands there (?), and I also need to add a sensor (temperature/Humidity) that isn’t available
3: is there a better method for capturing the IR codes from the remote (than using the Tasmota console)? I guess they may be incomplete

This is an example of the “On” command captured from the AC Remote, which has no effect when resent from the Wemos:

{
	"Protocol": "FUJITSU_AC",
	"Bits": 128,
	"Data": "0x1463001010FE09315D010002075420F4",
	"Repeat": 0,
	"IRHVAC": {
		"Vendor": "FUJITSU_AC",
		"Model": 6,
		"Mode": "Cool",
		"Power": "On",
		"Celsius": "On",
		"Temp": 19.5,
		"FanSpeed": "Auto",
		"SwingV": "Off",
		"SwingH": "Off",
		"Quiet": "Off",
		"Turbo": "Off",
		"Econo": "Off",
		"Light": "Off",
		"Filter": "Off",
		"Clean": "Off",
		"Beep": "Off",
		"Sleep": -1
	}
}

P.S - I started capturing the raw data - but it doesn’t look anything like the normal payloads I see in everyone else’s posts. The data and rawdata payloads vary constantly, with “off” being the only command that works, and instead of a set of regular hex numbers in the rawdata field, I get massive chains of hex characters with no digits.

I am beginning to suspect my Fujitsu AC has a more complex IR Code than any of the examples I see everywhere else…

{"RawData":"+3280-1635+415-410+420dE-1230CdCfEdEdCdCfCfCdCdEdEfCfCdCdEdCdCdCdEdEdCdEdEdEdCdEfEdCdCdEdCdEdEdEfCdCdEdCdCfEfCfCfEfCfEfCfCdCdCfCdCdCdEdCfCdCdEdEfCfEdCdEdCdCdCdEdEfCfCdCfCdCdCdCdCdEdCdCdCdEdCdCdCdCdCdCfCdCdEdEdCdCdCdCfCdCdCdCdCdCdEdEdCdCfCdC-1235DdCdEdCdCdCdEdCdCfCdEdCdCdCdEfEfEfEdEdC","RawDataInfo":[259,259,0]}

Hi! After HA update 2021.12 custom component tasmota_irhvac is not working. No publishing in MQTT, and no result on climate card change.
Rolled back on 2021.11 and there it is working fine. May be some errors in libraries?

2 Likes

this fork updated for new version:

1 Like

Hey there
Also had this issue but before changing, is there a reason for this fork? Is it just a copy with minor changes? Is it the main one since this one is not getting updated?

Just wanted to clarify before making the change

Cheers

this fork made to add power sensor for on/off indication but now it also updates faster than original

Would it make sense to remove the other one from HACS or should I just keep both?
I installed the fork and things started working so that awesome, thanks