Tasmota MQTT IRHVAC Controller

If the DAIKIN64 protocol was fixed in IRremoteESP8266 in v2.7.7, you have to use at least Tasmota v10.1.0 Noelle, that uses the library version with the protocol DAIKIN64 fixed. :slight_smile:

I’m using latest v13, and it still has that issue unfortunately.

So it seems that the issue lies in the AC protocol itself? If the On/Off functionality is just a switch, that when called just sets the AC’s power mode to the oposite of the current state - we can’t know for shure what state it is currently and this can cause the situation with “out of sync” issue.

It appears that way, is there a way to add rule in tasmota that only send the proper ON or OFF command based on the actual ac state?
Something like retrieving door sensor state thru mqtt that’s placed on the ac flap. If the door sensor is closed, then it’s off so it needs to send on command

Thanks so much for your time building this project and sharing with everyone!
Everything seems to work great except that i use fahrenheit and the codes that are sent have celcius: “On” and this causes my unit to change to celcius on display. If i use my remote to control unit it changes back to F.
I have changed my yamyl to celsius_mode: “Off” and even commented out the celsius_mode: line but the emitter still sends celsius: “On”.
Any Ideas?

- platform: tasmota_irhvac
  name: Confortotal Mini Splits
  unique_id: 088cd2f2-950a-4321-90aa-055088a924f9
  command_topic: "cmnd/tasmota_ir/irhvac"
  state_topic: "tele/tasmota_ir/RESULT"
  temperature_sensor: sensor.accessory_shop_bays_temperature #optional this sensor is used to display current temp on the AC card
  protocol: "MIRAGE"
  min_temp: 60 #optional - default 16 int value
  max_temp: 120 #optional - default 32 int value
  target_temp: 75 #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
    #- max
    - medium
    - high
    #- middle
    #- focus
    #- diffuse
    #- min
    - auto
  supported_swing_list:
    - "off"
    - vertical #up to down
    #- horizontal # Left to right - remove if your AC does not support it
    #- both # remove if your AC does not support horizontal
  hvac_model: "1" # string value
  celsius_mode: "Off" #optional - default "On" string value - you can remove it if you use celsius

Hi @gh0s7 . Just wondering if it was possible to add Economy, Turbo, Sleep etc modes to the climate card, and remove Hot mode completely.

Thanks!

Edit : Solved

seems like 2024.6 broke my integration (Detected blocking call to import_module with args (‘custom_components.tasmota_irhvac.climate’,) in /usr/src/homeassistant/homeassistant/loader.py, line 1281)

i added logs here: 2024.6 beta5 issue · Issue #140 · hristo-atanasov/Tasmota-IRHVAC · GitHub

1 Like

Hi everyone, when i control my air conditional by original remote, it show temp with step temp is 0.5*C , is there anyway to set target temp from hass and display on hass with step temp is 0.5 "C. Example 16, 16.5, 17, 17.5. Thank you for your help :smiley:

@reality103
Yes, there is. You can set precision: 0.5 in your case. Look for precision in this example.

I have an problem from that i update HA to 2024.6 and the last update IRHVAC the log HA show:

AttributeError: ‘TasmotaIrhvac’ object has no attribute ‘__attr_preset_mode’. Did you mean: ‘__attr_preset_modes’?

just for my understanding.
The air condition has its own thermostat so how is this implemented? does the plugin turn off the AC when the target temperature is reached? i think this is not the desired behaviour. i basically want to turn it on, set all the options and manually turn it off if needed.

Dear gh0s7Hristo Atanasov,
Many thanks for your shared project.
However, I am not really undersatnd this point:
Like “kitchenMultisensor” or “livingroomMultisensor”
Meanings that If I have a livingroom and this ir is put in livingroom, so I just fill like that:

ir_raw:
  sequence:
  - data_template:
      payload: '0, {{ data }}'
      topic: 'cmnd/livingMultisensor/irsend'?
My tasmota is like this: cmnd/tasmota_2D477C/POWER
Thank you

The first point - Keeping meaningless names can cause confusion.
The second point: if you name your Tasmota like “livingroomMultisensor” you can use the ready made scripts. If you don’t - you’ll have to edit it so it can matc your names. My way is easier - you name your devices to finish with “Multisensor” and you can access it with the given scripts. They take the room name as a variable and they concatinate it to form the device name … You can put whatever name you want … :slight_smile:

No it doesn’t turn it off. You have to manualy turn it off or make an automation to do it. This component imitates your physical remote.

Silly me :grinning: :grinning: :grinning:
I misunderstood your instruction.
Thank you very much

Can you tell me:
if I can reproduce the following codes via ÏRsend"

15:19:17.246 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":244,"Hash":"0x7300D113","Repeat":0}}
15:19:27.856 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":244,"Hash":"0x8C5536BB","Repeat":0}}
15:19:40.577 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":244,"Hash":"0x2E8F926B","Repeat":0}}
15:19:43.600 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":244,"Hash":"0x77A0D45B","Repeat":0}}
15:19:49.001 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":244,"Hash":"0x7D04A47B","Repeat":0}}
15:19:51.359 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":244,"Hash":"0x8A1A08FB","Repeat":0}}
15:19:54.209 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":244,"Hash":"0x2289FBBB","Repeat":0}}
15:19:56.488 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":244,"Hash":"0xE777F03B","Repeat":0}}
15:20:00.474 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":244,"Hash":"0x1CA8F628","Repeat":0}}
15:20:00.794 MQT: tele/tasmota_11AB00/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":144,"Hash":"0xEB3D0097","Repeat":0}}
```'

I got them from Panasonic Ceiling fan via console
I try to send but received message "
IRSend":“Invalid Hex data”
Thank you

This means that this protocol is not supported. Sorry!

1 Like

Thank you!

1 Like

Something strange happened.
One of the transmitters stopped working as a climate entity for several days.
It worked normally for almost a year.
I didn’t change anything in the config.

The others work fine:

The Tasmota works fine. Restart Home Assistant didn’t help. Also unplug and then replug to power.

This is the device log:

03:13:09.490 MQT: tele/living_room_ac_ir/STATE = {"Time":"1970-01-01T03:13:09","Uptime":"0T02:00:11","UptimeSec":7211,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":5,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"C8:3A:35:02:D2:C1","Channel":6,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
03:17:59.691 MQT: stat/living_room_ac_ir/STATUS1 = {"StatusPRM":{"Baudrate":115200,"SerialConfig":"8N1","GroupTopic":"tasmotas","OtaUrl":"http://ota.tasmota.com/tasmota/release/tasmota.bin.gz","RestartReason":"External System","Uptime":"0T02:03:16","StartupUTC":"","Sleep":50,"CfgHolder":4617,"BootCount":84,"BCResetTime":"2023-09-15T12:55:35","SaveCount":14026,"SaveAddress":"FA000"}}
03:17:59.740 MQT: stat/living_room_ac_ir/STATUS11 = {"StatusSTS":{"Time":"1970-01-01T03:17:59","Uptime":"0T02:03:16","UptimeSec":7396,"Heap":20,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":20,"MqttCount":5,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"C8:3A:35:02:D2:C1","Channel":6,"Mode":"11n","RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}}
03:20:56.453 MQT: tele/living_room_ac_ir/STATE = {"Time":"1970-01-01T03:20:56","Uptime":"0T02:05:11","UptimeSec":7511,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":5,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"C8:3A:35:02:D2:C1","Channel":6,"Mode":"11n","RSSI":100,"Signal":-49,"LinkCount":1,"Downtime":"0T00:00:03"}}
03:28:44.437 MQT: tele/living_room_ac_ir/STATE = {"Time":"1970-01-01T03:28:44","Uptime":"0T02:10:11","UptimeSec":7811,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":799,"MqttCount":5,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"C8:3A:35:02:D2:C1","Channel":6,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
03:36:10.480 MQT: tele/living_room_ac_ir/STATE = {"Time":"1970-01-01T03:36:10","Uptime":"0T02:15:11","UptimeSec":8111,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":5,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"C8:3A:35:02:D2:C1","Channel":6,"Mode":"11n","RSSI":94,"Signal":-53,"LinkCount":1,"Downtime":"0T00:00:03"}}
03:43:58.449 MQT: tele/living_room_ac_ir/STATE = {"Time":"1970-01-01T03:43:58","Uptime":"0T02:20:11","UptimeSec":8411,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":5,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"C8:3A:35:02:D2:C1","Channel":6,"Mode":"11n","RSSI":100,"Signal":-48,"LinkCount":1,"Downtime":"0T00:00:03"}}
03:51:46.493 MQT: tele/living_room_ac_ir/STATE = {"Time":"1970-01-01T03:51:46","Uptime":"0T02:25:11","UptimeSec":8711,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":111,"MqttCount":5,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"C8:3A:35:02:D2:C1","Channel":6,"Mode":"11n","RSSI":100,"Signal":-49,"LinkCount":1,"Downtime":"0T00:00:03"}}
03:53:20.863 MQT: stat/living_room_ac_ir/STATUS1 = {"StatusPRM":{"Baudrate":115200,"SerialConfig":"8N1","GroupTopic":"tasmotas","OtaUrl":"http://ota.tasmota.com/tasmota/release/tasmota.bin.gz","RestartReason":"External System","Uptime":"0T02:26:24","StartupUTC":"","Sleep":50,"CfgHolder":4617,"BootCount":84,"BCResetTime":"2023-09-15T12:55:35","SaveCount":14026,"SaveAddress":"FA000"}}
03:53:20.913 MQT: stat/living_room_ac_ir/STATUS11 = {"StatusSTS":{"Time":"1970-01-01T03:53:20","Uptime":"0T02:26:24","UptimeSec":8784,"Heap":20,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":20,"MqttCount":5,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"C8:3A:35:02:D2:C1","Channel":6,"Mode":"11n","RSSI":96,"Signal":-52,"LinkCount":1,"Downtime":"0T00:00:03"}}}
03:59:13.483 MQT: tele/living_room_ac_ir/STATE = {"Time":"1970-01-01T03:59:13","Uptime":"0T02:30:11","UptimeSec":9011,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":5,"Wifi":{"AP":1,"SSId":"WinetrobN","BSSId":"C8:3A:35:02:D2:C1","Channel":6,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
04:00:46.863 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":132,"Hash":"0x910E719F","Repeat":0}}
04:00:49.027 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":132,"Hash":"0x8660D9EF","Repeat":0}}
04:00:52.841 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":133,"Hash":"0x953537FF","Repeat":0}}
04:00:57.030 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":133,"Hash":"0x059AE16F","Repeat":0}}
04:01:17.753 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":132,"Hash":"0xD06819AF","Repeat":0}}
04:01:19.279 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"AMCOR","Bits":64,"Data":"0x011132000030000B","Repeat":0,"IRHVAC":{"Vendor":"AMCOR","Model":-1,"Mode":"Cool","Power":"On","Celsius":"On","Temp":25,"FanSpeed":"Min","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}
04:01:43.459 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":132,"Hash":"0xEC0654F7","Repeat":0}}
04:01:59.642 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":138,"Hash":"0xFC201371","Repeat":0}}
04:02:12.611 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":26,"Hash":"0x6065333F","Repeat":0}}
04:02:16.952 MQT: tele/living_room_ac_ir/RESULT = {"IrReceived":{"Protocol":"AMCOR","Bits":64,"Data":"0x011132000030000B","Repeat":0,"IRHVAC":{"Vendor":"AMCOR","Model":-1,"Mode":"Cool","Power":"On","Celsius":"On","Temp":25,"FanSpeed":"Min","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}

What can I do? How I fix it?

1 Like