Tasmota MQTT IRHVAC Controller

Understand. I will change the component.
And how should be the MQTT parameters on Tasmota ?

@Julhio Topic is fine. Full Topic should be %prefix%/%topic%/

Sure, i totally understand. Let me just add on thing: I guess the remote part is working fine! The problem is the “non showing” modes. So changing temperature works and is recognized be the A/C but the whole thing is never TURNED ON. So modes are not there!! It’s the lovelace integration that’s missing/broken.
My remote model is DAIKIN ARC433B41.
Thanks!!

thanks it works perfect for me her is the config in running
Home Assistant 0.107.7
Tasmota 8.2.0
:heart_eyes:
Annotation 2020-04-09 201135

climate:
  - platform: tasmota_irhvac
    name: "brandt-AC"
    command_topic: "cmnd/tasmota_235289/irhvac"
    state_topic: "tele/tasmota_235289/RESULT"
    temperature_sensor: sensor.tasmota_235289_temperature
    protocol: "COOLIX"
    min_temp: 17 #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: 0.5 #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
      # Some devices have "auto" and "fan_only" chaned
      # If following two lines are uncommented, "auto" and "fan" shoud be commented
      #- 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
    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
1 Like

Can someone please just confirm that you use the “regular thermostat card”?? Or do I need a special irhvac thermostat card?

My card looks like that:

entity: climate.daikineg
name: DAIKIN EG
type: thermostat

just use the regular thermostat card
here is main :

entity: climate.brandt_ac
type: thermostat
1 Like

@iz3man I’m using just a “regular” thermostat card. :slight_smile:

Well, well, well. Problem solved. Sometimes it’s better NOT to follow the instructions. I did, and downloaded the file from the russian mail.ru site and installed that.
BUT, it’s not the latest one. It’s from Jan, and the github is from Feb.
Installed the github version and now it’s working.
@gh0s7: Maybe you should edit your first post (where I took the information from) and update the info. Could be I’m not the only one that fell into that pit :slight_smile:
Happy now …

image

1 Like

And the next question: Any idea how to control those MODES?

"Quiet":"On","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off"

Those I use quite often, great ways for fast cooling at day time, and eco mode for night, which makes the outside compressor super silent and let’s everyone around sleep well.

@iz3man Sorry, man! I skipped removing the old link and its install steps from the post. I’m very happy that you pointed me what is wrong, and I did edited the post, so no move pits. :slight_smile: I’m glad to hear that you got it working.
About your second question you can set these options to be sent with default value in the configuration.yaml . Note that they will always be sent with the values given in the config, as there is no possibility to add buttons, that can control these options. Below is the list of options, that you can add to the config. By default they are all “Off”. Use them only if your AC support them. And I’m not sure if they are well implemented in Tasmota’s ESP8266 IR library. You can add each or all of them in the end of the tasmota_irhvac config. :slight_smile:

default_quiet_mode: "Off"
default_turbo_mode: "Off"
default_econo_mode: "Off"
default_light_mode: "Off"
default_filter_mode: "Off"
default_clean_mode: "Off"
default_beep_mode: "Off"

Thanks. So you say that these modes can only be addresses via regular remote? You can “reset” them to ONE preconfigured mode that is set everytime you send something via the add-on. Hmmm, too bad, as it would be very convenient to at least switch between TURBO, NORMAL and ECONO or just set them based on time?

Let me rethink: Is there a way to define some IR code set like the ones you described to control any other IR device? Like define an extra switch (with input_number.yaml) and then choose from three IR commands?

1 Like

@iz3man I can add services, that can set these to “On” or “Off”, but you’ll have to make a switch or button that executes/calls these services. :slight_smile: But let me note again: no guarantee that Tasmota’s library supports it. :slight_smile: And I’ll have to find some time to do it, as I’m a little busy these days. :slight_smile:

Edit:
Meanwhile, you can try if these options work for you by using Tasmota’s console and sending the IRHVAC command manually, with the needed values changed to ‘on’ or ‘off’. Using the command below, which sends turbo mode “On”, Heat, 22.5, fan speed “Min”. :slight_smile:

IRHVAC {"Vendor":"DAIKIN","Model":-1,"Power":"On","Mode":"Heat","Celsius":"On","Temp":22.5,"FanSpeed":"Min","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"On","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}

Yes. Those seem to have worked.

15:50:34 CMD: IRHVAC {"Vendor":"DAIKIN","Model":-1,"Power":"On","Quiet":"Off","Turbo":"On","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}
15:50:35 MQT: stat/tasmota_23115D/RESULT = {"IRHVAC":{"Vendor":"DAIKIN","Model":-1,"Power":"On","Mode":"Auto","Celsius":"On","Temp":21,"FanSpeed":"Medium","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"On","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}
15:50:35 MQT: tele/tasmota_23115D/RESULT = {"IrReceived":{"Protocol":"DAIKIN","Bits":280,"Data":"0x0x11DA2700C50000D711DA27004200005411DA270000092A0050000006600100C00000BC","Repeat":0,"IRHVAC":{"Vendor":"DAIKIN","Model":-1,"Power":"On","Mode":"Auto","Celsius":"On","Temp":21,"FanSpeed":"Medium","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"On","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}

And this command to just turn it OFF, turns it off, and sends the appended full command:

15:58:50 CMD: IRHVAC {"Vendor":"DAIKIN","Model":-1,"Power":"Off"}
15:58:50 MQT: stat/tasmota_23115D/RESULT = {"IRHVAC":{"Vendor":"DAIKIN","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":21,"FanSpeed":"Medium","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}
15:58:50 MQT: tele/tasmota_23115D/RESULT = {"IrReceived":{"Protocol":"DAIKIN","Bits":280,"Data":"0x0x11DA2700C50000D711DA27004200005411DA270000082A0050000006600000C00000BA","Repeat":0,"IRHVAC":{"Vendor":"DAIKIN","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":21,"FanSpeed":"Medium","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}

Shortened commands works as well, but it also DID send “21°C”, where does that come from??? So it may work to just send these short commands via MQTT to set the mode desired?

@iz3man Shortened commands sends the temperature too, because it is one of the required values, and this 21 is the default value, that Tasmota sends for temperature.

If you want to implement short or long commands, in easy way, sent directly via MQTT, see this comment and the one right after it. :slight_smile:

That’s a way to do it, but not ideal, as it only sends ONE predefined command set, and doesn’t change the only one parameter you want. I understand this is how the component works, and can’t be circumvent. Just thinking out loud.
Example: Sometimes you want swing, sometimes you prefer 22°, sometimes 24° is good enough. Now you call the predefined command and it always sets SWING, ECONO, TURBO … to some maybe unwanted value.
Maybe I have to lower my wishes and live with 2 or 3 predefined scenarios in case I want to use those “special” modes.

I will make new version of my custom component, to include that functionality, but I can’t tell you how long you will wait for that, as currently I don’t have any time. But I promise, that when I find some time, i’ll do make it ASAP. :slight_smile:

That’s great news, and no rush. It’s still spring here, and temperatures are super nice. No need for A/C yet :wink:
Happy Easter!

Hi, after a while I just tested my air conditionings and unfortunately they are not supported. Also I’m seeing the same code emited for ON and OFF.

You mentioned it’s possible to use raw data. What should I do to make it work with my units?

Tasmota:

  • Program Version: 8.1.0(tasmota)
  • Build Date & Time: 2019-12-25T12:41:58
  • Core/SDK Version: 2_6_1/2.2.2-dev(38a443e)

FYI: The AC units are brand Consul (a very popular brand in Brasil owned by Whirlpool S/A).

This is the kind of data obtained when pressing buttons on the remote:

04:25:03 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0x2370B1B1","Repeat":0}}
04:25:08 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0x05EA7FA5","Repeat":0}}
04:25:20 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0xD41B30B3","Repeat":0}}
04:25:21 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0xD41B30B3","Repeat":0}}
04:25:22 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0xD41B30B3","Repeat":0}}
04:25:27 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0xD41B30B3","Repeat":0}}
04:25:30 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0xD41B30B3","Repeat":0}}
04:25:40 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0xD41B30B3","Repeat":0}}
04:25:48 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0x2370B1B1","Repeat":0}}
04:26:27 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0x05EA7FA5","Repeat":0}}
04:26:30 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":115,"Hash":"0xD41B30B3","Repeat":0}}

@dacrypt I’m afraid, that you can’t make it work with your AC for now. :neutral_face:
The only thing I can suggest is to choose one favourite mode like: 23C-cool-medium fan, get its hash or code and make button that sends this command via “ir_code” script mentioned in my first topic. And also the code for turning it off. So you can make 2 buttons (or more if you want) with few codes sent via “ir_code”. Or you can try with other solutions like SMARTIR … :\

One of my units is experience exactly the same as yours:

00:51:49 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"COOLIX","Bits":24,"Data":"0xB2BFD0","DataLSB":"0x4DFD0B","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":2.0,"FanSpeed":"UNKNOWN","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1}}}
00:51:50 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":125,"Hash":"0x57007099","Repeat":0}}
00:52:08 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"COOLIX","Bits":24,"Data":"0xB2BF90","DataLSB":"0x4DFD09","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":2.0,"FanSpeed":"UNKNOWN","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1}}}
00:52:09 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":24,"Hash":"0x22F93C7A","Repeat":0}}
00:52:32 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"COOLIX","Bits":24,"Data":"0xB27BE0","DataLSB":"0x4DDE07","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":2.0,"FanSpeed":"UNKNOWN","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1}}}
00:52:33 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":41,"Hash":"0xA35E7146","Repeat":0}}
00:53:06 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"COOLIX","Bits":24,"Data":"0xB2BF90","DataLSB":"0x4DFD09","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":2.0,"FanSpeed":"UNKNOWN","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1}}}
00:53:07 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":121,"Hash":"0xE6983A7D","Repeat":0}}
00:53:07 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":80,"Hash":"0x34B94772","Repeat":0}}
00:53:10 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"COOLIX","Bits":24,"Data":"0xB2BF90","DataLSB":"0x4DFD09","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":2.0,"FanSpeed":"UNKNOWN","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1}}}
00:53:11 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":125,"Hash":"0x5E83E65D","Repeat":0}}
00:53:14 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"COOLIX","Bits":24,"Data":"0xB27BE0","DataLSB":"0x4DDE07","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":2.0,"FanSpeed":"UNKNOWN","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1}}}
00:53:15 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":21,"Hash":"0xA4E8161C","Repeat":0}}
00:53:22 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"COOLIX","Bits":24,"Data":"0xB2BF90","DataLSB":"0x4DFD09","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":2.0,"FanSpeed":"UNKNOWN","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1}}}
00:53:23 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":125,"Hash":"0x9F2FAAA7","Repeat":0}}
00:53:26 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"COOLIX","Bits":24,"Data":"0xB27BE0","DataLSB":"0x4DDE07","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Power":"Off","Mode":"Off","Celsius":"On","Temp":2.0,"FanSpeed":"UNKNOWN","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"On","Filter":"Off","Clean":"On","Beep":"Off","Sleep":-1}}}
00:53:27 RSL: tele/tasmota/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":41,"Hash":"0x45F12397","Repeat":0}}

Have you found a solution?