Tasmota MQTT IRHVAC Controller

Thanks for your work! Saved me spending money on another Sensibo device

The only issue I have is with supported_swing_list

My remotes data, see “SwingV”

13:05:47 MQT: tele/Irblast/RESULT = {"IrReceived":{"Protocol":"GREE","Bits":64,"Data":"0x5A0C605001420040","Repeat":0,"IRHVAC":{"Vendor":"GREE","Model":1,"Mode":"Dry","Power":"On","Celsius":"On","Temp":28,"FanSpeed":"Min","SwingV":"Auto","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}
13:05:48 MQT: tele/Irblast/RESULT = {"IrReceived":{"Protocol":"GREE","Bits":64,"Data":"0x1A0C605002420040","Repeat":0,"IRHVAC":{"Vendor":"GREE","Model":1,"Mode":"Dry","Power":"On","Celsius":"On","Temp":28,"FanSpeed":"Min","SwingV":"Highest","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}
13:05:49 MQT: tele/Irblast/RESULT = {"IrReceived":{"Protocol":"GREE","Bits":64,"Data":"0x1A0C605003420040","Repeat":0,"IRHVAC":{"Vendor":"GREE","Model":1,"Mode":"Dry","Power":"On","Celsius":"On","Temp":28,"FanSpeed":"Min","SwingV":"High","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}
13:05:50 MQT: tele/Irblast/RESULT = {"IrReceived":{"Protocol":"GREE","Bits":64,"Data":"0x1A0C605004420040","Repeat":0,"IRHVAC":{"Vendor":"GREE","Model":1,"Mode":"Dry","Power":"On","Celsius":"On","Temp":28,"FanSpeed":"Min","SwingV":"Middle","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}
13:05:51 MQT: tele/Irblast/RESULT = {"IrReceived":{"Protocol":"GREE","Bits":64,"Data":"0x1A0C605005420040","Repeat":0,"IRHVAC":{"Vendor":"GREE","Model":1,"Mode":"Dry","Power":"On","Celsius":"On","Temp":28,"FanSpeed":"Min","SwingV":"Low","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}
13:05:52 MQT: tele/Irblast/RESULT = {"IrReceived":{"Protocol":"GREE","Bits":64,"Data":"0x1A0C605006420040","Repeat":0,"IRHVAC":{"Vendor":"GREE","Model":1,"Mode":"Dry","Power":"On","Celsius":"On","Temp":28,"FanSpeed":"Min","SwingV":"Lowest","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}

Can the vertical swing position be implemented?

Hi! I was testing with node red and i cant use the turn on and when i check the console it keeps sending the turn off command

@gh0s7 thank you for the cool integration.
Could you please allow adding unique_id to the HVAC entities?
HA UI is really restricting what can be done with the entity when it does not have a unique_id.

I’ve sent you a PR for this.

@gh0s7 This was only Tasmota IR A/C integration I was able to get working, so big thank you! Only “issue” I have with my Whirpool AC is that it doesn’t have separate On/Off button. That means it expects same IR code to turn On and Off.

Problem is that I know what I need to change in the code values, but I don’t know how.
So, I need to modify somehow this integration this way:

  1. In the thermostat ui, the off button should be a on/off button. It should send IRHVAC value MQTT message like this every time (this example the ac will always turn on to mode heat 22°C):
{"Vendor":"WHIRLPOOL_AC","Model":1,"Mode":"Heat","Power":"On","Celsius":"On","Temp":22,"FanSpeed":"Auto","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}
  1. When changing the temperature, or operation mode, the power value always should be “off” instead of “on”. Example here I want to set the mode to cool and temperature to 19°C from the HA thermostat ui:
{"Vendor":"WHIRLPOOL_AC","Model":1,"Mode":"Cool","Power":"Off","Celsius":"On","Temp":19,"FanSpeed":"Auto","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}

Model is Whirlpool PACW212HP.

Also how to integrate power sensor to the HA thermostat ui, like the temperature sensor? This way I can manually to see if the ac is truly on or off.

Hmm, i just did some research and found out that i have exactly same issue with my Whirlpool A/C than you @the-mentor & @yuval.teltech. I just made a post about the issue in this forum.

Long story short, my Whirlpool A/C expects power value be “off” when changing modes and temps. Power value should be “On” just when powering A/C On or Off.

This was my post from couple days ago:

Many thanks to @gh0s7 for this great customer component!

I’m have the same issue on the Daikin Series 17 (DAIKIN128) a “Differential AC”.

When HASS does a temperature change, Tasmota IRSend reports “Power ON”

05:57:20 MQT: stat/daikin/RESULT = {“IRHVAC”:{“Vendor”:“DAIKIN128”,“Model”:-1,“Mode”:“Heat”,“Power”:“On” …

The IRRecvDump3 example code that comes with the IRremoteESP8266 library defines the IR transmission more accurately as “Power Toggle:”:

Protocol : DAIKIN128
Code : 0x16880000000018CCA10000000000000B (128 Bits)
Mesg Desc.: Power Toggle: On, Mode: 8 (Heat), Temp: 18C, Fan: 8 (Low) …

From Tasmota::

Controling ACs with toggle fields~

Some ACs such as Airwell, Whirlpool and others use a differential IR protocol for some properites. If “power” is a toggle property, then value of ‘1’ in the protocol will mean “turn off” if the AC is currently “on” and it will mean “turn on” if the AC is currently “off”. This could also be the case for other properties such as “light”, “swing”, etc. Since Tasmota and IRRemote8266 send and receive absolute states (i.e. the HVAC JSON object has a field called ‘Power’ not ‘PowerToggle’), some functionaly was added to keep track of the predicted state of the AC. This way, if the predicted state is in-sync with the actual state, the device can transmit a correct IR packet to transition the AC from the previous state to the desired state. This logic is controlled by the StateMode HVAC property. If your AC IR protocol sends absolute values you can ignore this property. If your AC has a differential protocol Tasmota will be able to control the AC assuming the Tasmota IR device has at most one differential AC in IR range. If you would like to also control your AC with the physical remote your Tamsota IR device will need to have an IR receiver so that it can sync with the actual state.

If at some point the state in Tasmota and the actual state get out of sync, you can specify StateMode=StoreOnly to update Tasmota with the actual state. This will update state but not send an IR command.

Normally when receiving an IR command via the IR reciever the command will be processed and the state will be updated. As a result it is not needed to store state when sending as it will cause duplication and the toggle will happen twice. The most common operation mode, and default, therefore is StateMode=SendOnly .

If your Tasmota device does not have an IR receiver you can still control a differential AC with it by specifying StateMode=SendStore but you will not be able to use a physical remote without loosing sync between the actual and predicted states.

Perhaps support of ‘StateMode’ in Tasmota-IRHVAC would address this?

My Fujitsu Wall Split remote shows the following response
“IrReceived”:{“Protocol”:“UNKNOWN”,“Bits”:50,“Hash”:“0x4E99A1A1”}

Will this work or do I need to move on and find a different solution?

If this should work, does anyone have a link to some instructions on setting it up?

Thanks

There are at least 5 different protocols for Fujitsu. Make sure the protocol you are using matches your AC remote from this table on [Github].(https://github.com/crankyoldgit/IRremoteESP8266/blob/c81809172208cff2d2e2ac3f1e1d9837baa63ae4/SupportedProtocols.md)

Thanks for the help so far.

I’ve followed the install steps but get the following in the logs and I’m not seeing the device as an option to add to the Thermostat card.
ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform tasmota_irhvac.climate: Could not set up all dependencies.

Any assistance appreciated

All sorted, was an issue with the MQTT config causing the error as the dependency

I spoke too soon.

Command is being sent via mqtt from the Thermostat card.
Nodemcu receives the command but with an error

10:54:24.284 CMD: Group 0, Index 1, Command "IRHVAC", Data "{"Vendor": "FUJITSU_AC", "Model": "-1", "Power": "off", "Mode": "off", "Celsius":...
10:54:24.291 MQT: stat/tasmota_5973AA/RESULT = {"Command":"Unknown"}

If I manually enter
irhvac
through the console I get the same error. Does this point to the command missing from my NodeMCU firmware?
I just used the latest 9.3.1 build from Releases · arendst/Tasmota (github.com)

@gh0s7 there is a new requirement on manifest file. this flie needs to have the version number.
I have added that line to my manifest.json and it worked, so please consider add it for the next release.
See below how the manifest file should looks like.

Thanks again for your work.

{
  "domain": "tasmota_irhvac",
  "name": "Tasmota Irhvac",
  "documentation": "https://github.com/hristo-atanasov/Tasmota-IRHVAC",
  "issue_tracker": "https://github.com/hristo-atanasov/Tasmota-IRHVAC/issues",
  "requirements": [],
  "dependencies": [
    "mqtt",
    "sensor"
  ],
  "codeowners": [
    "@hristo-atanasov"
  ],
  "version": "v2021.1.4"
}

1 Like

@gh0s7 I forgot to mention a bug that i am experiencing. the component updates the status of the AC when I use the IR remote, I can change modes, temperature, fan speed, etc, but when I turn off the AC using the IR remote, the status is not updating, home assistant is still showing the AC is on.
it started to happend after I updated tasmota firmware to release 9.3.1, Now I have downgraded back again to 9.1.0 and the components works fine again.

The change could be related to a change in 9.3.1 one of the commits is:

You might want to try “StateMode” = “SendStore”.
More details (but not up to date with latest change) are at: https://tasmota.github.io/docs/Tasmota-IR/

Thanks @ayavilevich for your quick reply. I think I have not explained clearly what it is happening.
If I turn on my AC using the AC ir remote unit, home assistant updates the status of the AC to the mode adjusted by using the AC ir remote, every mode change(heat, cool, dry, fan only), fan speed (low, medium, high), temperature works well, I mean, home assistant shows the same values and parameters adjusted by using the remote, every one of them but the power off. When I turn off the AC by using the AC ir remote unit, the AC unit turns off, but home assistant doesn’t change the status, it still shows the ac is on.

i flash tasmota_ir custom fw on my esp, when send command:

IRhvac {“Vendor”:“PANASONIC_AC”,“Model”:6,“Mode”:“Auto”,“Power”:“On”,“Celsius”:“On”,“Temp”:30,“FanSpeed”:“Max”,“SwingV”:“Highest”,“SwingH”:“Auto”,“Quiet”:“Off”,“Turbo”:“Off”,“Econo”:“Off”,“Light”:“Off”,“Filter”:“Off”,“Clean”:“Off”,“Beep”:“Off”,“Sleep”:-1}

IR LED blinking but my Panasonic AC can not turn on.
anyone can help me. Thanks in advance!

Hello, Help solve the problem.
air conditioner DAIKIN FTYN35 LV1B
IR-bridge ufo-r1, tasmota 9.4.0

The air conditioner turns off and on when I change the temperature value.

example sequence:

  1. ac turn off, the temperature was set to 22
console logs

MQT: stat/tasmota_28F6B4/RESULT = {“IRHVAC”:{“Vendor”:“DAIKIN64”,“Model”:-1,“Mode”:“Off”,“Power”:“Off”,“Celsius”:“On”,“Temp”:22,“FanSpeed”:“Low”,“SwingV”:“Off”,“SwingH”:“Off”,“Quiet”:“Off”,“Turbo”:“Off”,“Econo”:“Off”,“Light”:“Off”,“Filter”:“Off”,“Clean”:“Off”,“Beep”:“Off”,“Sleep”:-1}}

  1. turn on ac at the cooling mode
console logs

MQT: stat/tasmota_28F6B4/RESULT = {“IRHVAC”:{“Vendor”:“DAIKIN64”,“Model”:-1,“Mode”:“Cool”,“Power”:“On”,“Celsius”:“On”,“Temp”:22,“FanSpeed”:“Low”,“SwingV”:“Off”,“SwingH”:“Off”,“Quiet”:“Off”,“Turbo”:“Off”,“Econo”:“Off”,“Light”:“Off”,“Filter”:“Off”,“Clean”:“Off”,“Beep”:“Off”,“Sleep”:-1}}

  1. ac was turns on in cooling mode
  2. I changing the temperature at 23
console logs

MQT: stat/tasmota_28F6B4/RESULT = {“IRHVAC”:{“Vendor”:“DAIKIN64”,“Model”:-1,“Mode”:“Cool”,“Power”:“On”,“Celsius”:“On”,“Temp”:23,“FanSpeed”:“Low”,“SwingV”:“Off”,“SwingH”:“Off”,“Quiet”:“Off”,“Turbo”:“Off”,“Econo”:“Off”,“Light”:“Off”,“Filter”:“Off”,“Clean”:“Off”,“Beep”:“Off”,“Sleep”:-1}}

  1. ac turns OFF
  2. I changing the temperature at 24
console logs

MQT: stat/tasmota_28F6B4/RESULT = {“IRHVAC”:{“Vendor”:“DAIKIN64”,“Model”:-1,“Mode”:“Cool”,“Power”:“On”,“Celsius”:“On”,“Temp”:24,“FanSpeed”:“Low”,“SwingV”:“Off”,“SwingH”:“Off”,“Quiet”:“Off”,“Turbo”:“Off”,“Econo”:“Off”,“Light”:“Off”,“Filter”:“Off”,“Clean”:“Off”,“Beep”:“Off”,“Sleep”:-1}}

  1. ac turns on in cooling mode again

the same happens if I change the operating mode (cool,dry,fan,auto) or fan speed(low,medium,high)

config
climate:
  - platform: tasmota_irhvac
    name: "DAIKIN_AC"
    command_topic: "cmnd/tasmota_28F6B4/irhvac"
    # Pick one of the following:
    # State is updated when the tasmota device receives an IR signal (includes own transmission and original remote)
    # useful when a normal remote is in use alongside the tasmota device, may be less reliable than the second option.
    state_topic: "tele/tasmota_28F6B4/RESULT"
    # State is updated when the tasmota device completes IR transmissionm, should be pretty reliable.
    #state_topic: "stat/tasmota_28F6B4/RESULT"
    temperature_sensor: sensor.datchik_pogody_2_balkon_temperature
    vendor: "DAIKIN64"
    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 (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 in quotes
      # Some devices have "auto" and "fan_only" switched
      # If the following two lines are uncommented, "auto" and "fan" shoud be commented out
      #- auto_fan_only #if remote shows fan but tasmota says auto
      #- fan_only_auto #if remote shows auto but tasmota says fan
    supported_fan_speeds:
      # Some devices say max,but it is high, and auto which is max
      # If you uncomment the following two, you have to comment high and max
      # - auto_max #woud become max
      # - max_high #would become high
      #- on
      #- off
      - low
      - medium
      - high
      #- middle
      #- focus
      #- diffuse
      #- "min"
      #- "max"
      - auto
    supported_swing_list:
      - "off"
      #- "vertical" #up to down
      # - horizontal # Left to right
      # - both
    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

Hi, great project!
Maybe I can pick your brain on something related: my Midea AC’s can be controlled over WiFi and recently using the new ESPhome Midea integration, with one annoying acceptation: turning the extremely bright display on/off. I’ve searched this topic on information about that, no luck. Did anyone manage to control the display on/off over IR?
I was thinking about a combination of combining the ESP 8266 ESPhome control with some IR code to control the display, any help will be highly appreciated.
Thanks!

Thank You so much @gh0s7 ! It worked right out of the box for me. I am just sorry I only saw your project after positioning my IR sending device so I couldn´t make use of the receiver… Anyway it seems this version stuff is one more breaking change… And I am not a coder myself so I can ´t offer help to mantain it!