Tasmota MQTT IRHVAC Controller

@marcolino7 I think you can. This is what Econo is used for in the toggle_list. :slight_smile:

Hi @gh0s7,
I do not have toggle_list and Econo in my card in dashboard:

image

is there something else I have to do?

Marco

toggle_list can be used only with services … No way to use it trough the UI. Just a HA limitation.

Hi,
I am very sorry but I have not understood where is “Service”. I am new to HA and I am moving my first steps

Marco

Don’t use Econo option in toggle_list for now. Just comment back this line. First try to use switch to turn on and off that functionality an see if it works for you. This is example:

switch:
  - platform: template
    switches:
      mitsubishi_cucina_econo:
        friendly_name: "Cucina Econo"
        value_template: "{{ is_state_attr('climate.mitsubishi_cucina', 'econo', 'on') }}"
        turn_on:
          service: tasmota_irhvac.set_econo
          data:
            entity_id: climate.mitsubishi_cucina
            econo: 'on'
        turn_off:
          service: tasmota_irhvac.set_econo
          data:
            entity_id: climate.mitsubishi_cucina
            econo: 'off'

For some reason it doesn’t work. What am I doing wrong?

Updated 31-07-2023: I see in HA that when I press a button on the physical remote it also reflects the data as well, but if I try through HA to press buttons then nothing happens in the air conditioner.

My last console log:

20:58:24.668 MQT: tele/office_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":18,"Hash":"0x933375B2","Repeat":0}}
20:58:36.261 MQT: tele/office_ac_ir/RESULT = {"IrReceived":{"Protocol":"GREE","Bits":64,"Data":"0x1109A05000020040","Repeat":0,"IRHVAC":{"Vendor":"GREE","Model":"YAW1F","Command":"Control","Mode":"Cool","Power":"Off","Celsius":"On","Temp":25,"FanSpeed":"Min","SwingV":"Auto","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1,"iFeel":"Off","SensorTemp":"n/a"}}}
20:58:38.812 MQT: tele/office_ac_ir/RESULT = {"IrReceived":{"Protocol":"GREE","Bits":64,"Data":"0x1909E050000600C0","Repeat":0,"IRHVAC":{"Vendor":"GREE","Model":"YAW1F","Command":"Control","Mode":"Cool","Power":"On","Celsius":"On","Temp":25,"FanSpeed":"Min","SwingV":"Auto","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1,"iFeel":"On","SensorTemp":"n/a"}}}
20:58:39.035 MQT: tele/office_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":18,"Hash":"0x933375B2","Repeat":0}}
21:00:13.415 MQT: tele/office_ac_ir/STATE = {"Time":"2023-07-29T21:00:13","Uptime":"0T01:00:10","UptimeSec":3610,"Vcc":2.970,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"E8:65:D4:72:FF:81","Channel":11,"Mode":"11n","RSSI":100,"Signal":-20,"LinkCount":1,"Downtime":"0T00:00:05"}}
21:00:50.350 MQT: stat/office_ac_ir/RESULT = {"IRHVAC":{"Vendor":"GREE","Model":"YAW1F","Command":"Control","Mode":"Cool","Power":"On","Celsius":"On","Temp":25,"FanSpeed":"Low","SwingV":"Auto","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":0,"Clock":1380,"iFeel":"Off","SensorTemp":"n/a"}}
21:00:53.023 MQT: stat/office_ac_ir/RESULT = {"IRHVAC":{"Vendor":"GREE","Model":"YAW1F","Command":"Control","Mode":"Cool","Power":"Off","Celsius":"On","Temp":25,"FanSpeed":"Low","SwingV":"Auto","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":0,"Clock":1380,"iFeel":"Off","SensorTemp":"n/a"}}
21:00:55.196 MQT: stat/office_ac_ir/RESULT = {"IRHVAC":{"Vendor":"GREE","Model":"YAW1F","Command":"Control","Mode":"Cool","Power":"On","Celsius":"On","Temp":25,"FanSpeed":"Low","SwingV":"Auto","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":0,"Clock":1380,"iFeel":"Off","SensorTemp":"n/a"}}
21:01:00.270 MQT: stat/office_ac_ir/RESULT = {"IRHVAC":{"Vendor":"GREE","Model":"YAW1F","Command":"Control","Mode":"Cool","Power":"On","Celsius":"On","Temp":24,"FanSpeed":"Low","SwingV":"Auto","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":0,"Clock":1381,"iFeel":"Off","SensorTemp":"n/a"}}
21:01:05.088 MQT: stat/office_ac_ir/RESULT = {"IRHVAC":{"Vendor":"GREE","Model":"YAW1F","Command":"Control","Mode":"Cool","Power":"On","Celsius":"On","Temp":23,"FanSpeed":"Low","SwingV":"Auto","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":0,"Clock":1381,"iFeel":"Off","SensorTemp":"n/a"}}
21:01:15.633 MQT: stat/office_ac_ir/RESULT = {"IRHVAC":{"Vendor":"GREE","Model":"YAW1F","Command":"Control","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":0,"Clock":1381,"iFeel":"Off","SensorTemp":"n/a"}}

My climate configuration:

- platform: tasmota_irhvac
  name: "Office AC"
  command_topic: "cmnd/office_ac_ir/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/office_ac_ir/RESULT"
  # State is updated when the tasmota device completes IR transmissionm, should be pretty reliable.
  #state_topic: "stat/your_tasmota_device/RESULT"
  # Uncomment if your 'available topic' of Tasmota IR device are different (if device in HA is disabled)
  #availability_topic: "tele/your_tasmota_device/LWT"
  temperature_sensor: sensor.office_environment_temperature
  humidity_sensor: sensor.office_environment_humidity #optional - default None
  power_sensor: binary_sensor.office_ac_status #optional - default None
  vendor: "GREE"
  # When operating grouped devices at the same time, MQTT commands are intentionally delayed to prevent multiple devices
  # from performing the same operation at the same time. This allows the high current peaks to be shifted.
  mqtt_delay: 0.0 #optional - default 0 int or 0.0 float value in [sec].
  min_temp: 16 #optional - default 16 int value
  max_temp: 30 #optional - default 32 int value
  # target_temp: 25 #optional - default 26 int value
  initial_operation_mode: "off" # optional - default "off" string value (one of the "supported_modes")
  # away_temp: 25 #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" # Use "fan_only" even if Tasmota shows "Mode":"Fan"
    - "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: "YAW1F" #optional - default "1" string value
  celsius_mode: "On" #optional - default "On" string value
  default_light_mode: "On" #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
  default_swingv: "Auto" #optional - default "" string value
  default_swingh: "Off" #optional - default "" string value
  keep_mode_when_off: True #optional - default False boolean value : Must be True for MITSUBISHI_AC, ECOCLIM, etc.
  toggle_list: #optional - default []
    # The toggled property is a setting that does not retain the On state.
    # Set this if your AC properties are toggle function.
    - Beep
    - Clean
    - Econo
    - Filter
    - Light
    - Quiet
    - Sleep
    - SwingH
    - SwingV
    - Turbo
  # When turning off some devices with their remote control they are set to the lowest temperature
  # and this is shown on the thermostat card. Setting `ignore_off_temp` value to True will keep the last target temperature displayed on the card.
  ignore_off_temp: False #optional - default False boolean value

Same Here. Did you mange to find any solution?

Never did, bought some tuya ir remote and flash tasmota on them instead

How did you do it?
Do you have any guidelines to share with me?

Desolder the tuya chip and replace with esp.
Depending on chip pinout, you can replace it with esp12s or esp32-wroom

1 Like

@zombie6 Show me pictures of the connections of the IR receiver and transmiter on the ESP board.

Here:





@zombie6 I don’t see 2n2222 transistor on your pictures. This is how you should connect it:


Here is detailed picture of how to connect the transistor. Pay attantion that the flat side of the transistor is facing down and the back side is facing up. This way, puting it “face” down, the left leg (long black wire) of the transistor is connected to the cathode (negative or minus) side of the IR diode, the middle one (short purple wire) goes to pin D2 of NodeMCU (or to the resistor before going to D2 pin), the right leg (short black wire) goes to some of the GND pins of NodeMCU. The Anode of the IR Led (long purple wire) goes to VU or VV pin of NodeMCU.

The end result:

If you make it this way and still no change - try changing the IR led, because it might be damaged already.

You right. I missed it. I will buy one and check it out. Thanks!

The 2n2222 transistor finally arrived. Now it works fine. Thanks!

1 Like

I’m having a problem with the operation of the device.
It doesn’t work according to the instructions I wrote in the configuration.
For example:

  1. default_light_mode: "on"
    But the lighting in the air conditioner is always off when it is on.

  2. default_swingv: "off"
    But it always works when I turn on the air conditioner. And it doesn’t let me change it inside the entity either. I change to “off” but nothing happens and it goes back to “vertical”.

  3. Also the fan speeds are stuck. Always when I turn on the air conditioner it is on “medium” and won’t let me change to another mode. When I choose another mode, nothing actually happens in the air conditioner and it says “medium” again.

How do I solve this?
Here is my full configuration:

- platform: tasmota_irhvac
  unique_id: d129d3c4-4493-46fe-ad29-a1f45cc35874
  name: "Office AC"
  command_topic: "cmnd/office_ac_ir/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/office_ac_ir/RESULT"
  # State is updated when the tasmota device completes IR transmissionm, should be pretty reliable.
  #state_topic: "stat/your_tasmota_device/RESULT"
  # Uncomment if your 'available topic' of Tasmota IR device are different (if device in HA is disabled)
  #availability_topic: "tele/your_tasmota_device/LWT"
  temperature_sensor: sensor.office_environment_temperature
  humidity_sensor: sensor.office_environment_humidity #optional - default None
  power_sensor: binary_sensor.office_ac_status #optional - default None
  vendor: "GREE"
  # When operating grouped devices at the same time, MQTT commands are intentionally delayed to prevent multiple devices
  # from performing the same operation at the same time. This allows the high current peaks to be shifted.
  mqtt_delay: 0.0 #optional - default 0 int or 0.0 float value in [sec].
  min_temp: 16 #optional - default 16 int value
  max_temp: 30 #optional - default 32 int value
  target_temp: 25 #optional - default 26 int value
  initial_operation_mode: cool # optional - default "off" string value (one of the "supported_modes")
  # away_temp: 25 #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 # Use "fan_only" even if Tasmota shows "Mode":"Fan"
    - 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 ##YAW1F##
  celsius_mode: "on" #optional - default "On" string value
  default_light_mode: "on" #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
  default_swingv: "off" #optional - default "" string value
  #default_swingh: "Off" #optional - default "" string value
  keep_mode_when_off: True #optional - default False boolean value : Must be True for MITSUBISHI_AC, ECOCLIM, etc.
  toggle_list: #optional - default []
    # The toggled property is a setting that does not retain the On state.
    # Set this if your AC properties are toggle function.
    - "Beep"
    - "Clean"
    #   - Econo
    #   - Filter
    - "Light"
    - "Quiet"
    - "Sleep"
    #   - SwingH
    - "SwingV"
    - "Turbo"
  # When turning off some devices with their remote control they are set to the lowest temperature
  # and this is shown on the thermostat card. Setting the `ignore_off_temp` value to True will keep the last target temperature displayed on the card.
  ignore_off_temp: False #optional - default False boolean value

One more thing, could you please explain what toggle_list: is and how I actually implement it?
I would appreciate it if you could explain these as well:

initial_operation_mode:
keep_mode_when_off:
ignore_off_temp:

Question, is this project and SmartIR compatible? I have this (TASMOTA flashed devices) and some broadlink with SmartIR, both work great, but only the one that come last on configuration.yaml functions, the other one is just the card with no function. Thanks for the IRHVAC and for the help.

Hello, may I ask a simple question about the IR control distance?

Currently, I am using two different types of IR transmitters. Both of them have a short operating range and are sensitive to the angle at which they are used. However, when positioned perfectly, my irhvac (infrared heating, ventilation, and air conditioning) system works fine.

Here is one of the transmitters I am using, specifically the 1W version. You can find it at this link:
https://vi.aliexpress.com/item/1005003386327341.html?spm=a2g0o.order_list.order_list_main.32.536b1802ZbfjrL&gatewayAdapt=glo2vnm

PS: my tasmota is running on battery powered ESP32, the power supply on IR is not 5V but Vbat(3.3V-4.15V)

It is quite expensive, but I am not happy about the performance.

In case I want a longer distance to 2-5 meters, could you please give some advices? Thanks.

Any updates?

I think both have similar funtionality, but they work in totaly different way. I don’t think they are compatible. Tasmota IRHVAC is utilizing Tasmotas “IRSend” function, that SmartIR might not have, or if it has it, it might be implemented in a different way.