SmartIR - Control your Climate, TV and Fan devices via IR/RF controllers

Thanks for the hints, I will continue to work on that project as soon as time allows and eventually report back.

A while back someone here asked about supporting the Maxxfan in Smart IR. I don’t know whether that happened but here’s some information you might find useful if you’re still looking for a solution.

I reverse engineered the Maxxfan infrared remote protocol and implemented a component to parse it. I haven’t implemented the transmitter portion yet but it’s straightforward if folks want it.

Bonjour,

Je possĂšde une commande infrarouge Tuya modĂšle iH-F8260. ModĂšle Zigbee TS1201.

J’ai bien rĂ©ussi Ă  installer SmartIR via HACS.

Ma télécommande est bien reconnu sur zigbee2mqtt.

Quand je demande d’apprendre un code, celui ci est bien appris et si je test, cela fonctionne correctement lors de l’envoi de celui-ci.

J’ai donc créé un fichier JSON que j’ai ajoutĂ© dans smartir/codes/climate.

J’ai ensuite rentrĂ© ma configuration dans configuration YAML

J’ai redĂ©marrĂ©

Et lĂ  impossible d’avoir mon entitĂ© " climate " quand je veux crĂ©er une carte thermostat.

J’y est passĂ© des heures je dĂ©sespĂšre !

Merci par avance


As promised an update: I managed to convert the codes from Broadlink to ESPhome, but it still does not work.

I tried to read and send IR codes with ESPhome directly with remote_receiver and remote_transmitter (without SmartIR). I managed to send commands to my daikin climate when I use “pronto”, but it does not work with “raw”.

I still have to dig into this, but as long as raw codes don’t work, SmartIR cannot work since it is sending raw codes.

Any hints?

1 Like

Do you see your climate in the entities-list? Make sure, that you really restart HA, and not only reload the configuration.

Bonjour, non il n’est pas visible dans les entitĂ©s quand je tape climate

I think it would significantly help, if you write in English. My French is not so good and others probably don’t understand it at all.

I don’t understand what exactly you mean with “tape”, so I cannot help you based on this comment.

No further hints necessary, in the end it was simple, just took quite some work to find it. I simply had to add the carrier frequency of 38.4 kHz.

  services:
    - service: send_raw_command
      variables:
        command: int[]
      then:
        - remote_transmitter.transmit_raw:
            carrier_frequency: 38400.0
            code: !lambda 'return command;'

Thanks for your support with the transformation tool.

1 Like

Google Translate on their post:

Hello, no it is not visible in the entities when I type climate

Good morning,
Let me introduce myself, I am a bit new to the HA smartir and really want to know the possibilities because I think there are very great possibilities in this area with HA.
I don’t speak English so thank you Google :slight_smile:

I use Smartir with Broadlink RM4 for Fujitsu air conditioning with AR-RBE1E remote control.

I created my dashboard, entities, etc. and everything was fine except for one detail: turning on the air conditioning.
I can turn them off, change from cool to heat and dry but once turned off, even clicking on heat, dry and cool nothing happens.

has anyone ever had the problem? and where is the solution?
Otherwise I would like to add a power button but that is beyond my competence because I would have to program the .py file I think.

Thank you in advance for your help.

Did you learn the commands with the air-conditioner on?

What is now the best updated Version/fork
This or from litinoveweedle?

litinoveweedle. He keeps it up to date and supports more IR controllers.

1 Like

Hello, i use the code of climate “1280,json” and it’s not possible to start my clim.
I have testing with a learned code and it’s good.
I translate my learning code into 1280;json juste for used the climate interface and it’s good.
Thx the community :slight_smile:

I created a dashboard to control my air conditioning using broadlinks but when I use automations, the information is not updated on the dashboard.
It is missing that the air conditioning is still on while the automation is off.
Anyone know how to use automation through the dashboard?
Thank you

Hello! I’m new to this forum, I’m trying to convert the Broadlink format to esphome with sircc.py, I’m getting the errors below. Can you help me with some advice on how to convert the file? Thanks!

PS C:\Users\vali1> python3 sircc.py -i 2420.json -o 2420-converted.json -e Raw -c ESPHome
Convert commands.off
Ignored extra data: [13, 5]
Convert commands.cool.level1.16
Ignored extra data: [13, 5]
Convert commands.cool.level1.17
Ignored extra data: [13, 5]
Convert commands.cool.level1.18
Ignored extra data: [13, 5]
Convert commands.cool.level1.19
Ignored extra data: [13, 5]
Convert commands.cool.level1.20
Ignored extra data: [13, 5]
Convert commands.cool.level1.21
Ignored extra data: [13, 5]
Convert commands.cool.level1.22
Ignored extra data: [13, 5]
Convert commands.cool.level1.23
Ignored extra data: [13, 5]
Convert commands.cool.level1.24
Ignored extra data: [13, 5]
Convert commands.cool.level1.25
Ignored extra data: [13, 5]
Convert commands.cool.level1.26
Ignored extra data: [13, 5]
Convert commands.cool.level1.27
Ignored extra data: [13, 5]
Convert commands.cool.level1.28
Ignored extra data: [13, 5]
Convert commands.cool.level1.29
Ignored extra data: [13, 5]
Convert commands.cool.level1.30
Ignored extra data: [13, 5]
Convert commands.cool.level1.31
Ignored extra data: [13, 5]
Convert commands.cool.level1.32
Ignored extra data: [13, 5]
Convert commands.cool.level2.16
Ignored extra data: [13, 5]
Convert commands.cool.level2.17
Ignored extra data: [13, 5]
Convert commands.cool.level2.18
Ignored extra data: [13, 5]
Convert commands.cool.level2.19
Ignored extra data: [13, 5]
Convert commands.cool.level2.20
Ignored extra data: [13, 5]
Convert commands.cool.level2.21
Ignored extra data: [13, 5]
Convert commands.cool.level2.22
Ignored extra data: [13, 5]
Convert commands.cool.level2.23
Ignored extra data: [13, 5]
Convert commands.cool.level2.24
Ignored extra data: [13, 5]
Convert commands.cool.level2.25
Ignored extra data: [13, 5]
Convert commands.cool.level2.26
Ignored extra data: [13, 5]
Convert commands.cool.level2.27
Ignored extra data: [13, 5]
Convert commands.cool.level2.28
Ignored extra data: [13, 5]
Convert commands.cool.level2.29
Ignored extra data: [13, 5]
Convert commands.cool.level2.30
Ignored extra data: [13, 5]
Convert commands.cool.level2.31
Ignored extra data: [13, 5]
Convert commands.cool.level2.32
Ignored extra data: [13, 5]
Convert commands.cool.level3.16
Ignored extra data: [13, 5]
Convert commands.cool.level3.17
Ignored extra data: [13, 5]
Convert commands.cool.level3.18
Ignored extra data: [13, 5]
Convert commands.cool.level3.19
Ignored extra data: [13, 5]
Convert commands.cool.level3.20
Ignored extra data: [13, 5]
Convert commands.cool.level3.21
Ignored extra data: [13, 5]
Convert commands.cool.level3.22
Ignored extra data: [13, 5]
Convert commands.cool.level3.23
Ignored extra data: [13, 5]
Convert commands.cool.level3.24
Ignored extra data: [13, 5]
Convert commands.cool.level3.25
Ignored extra data: [13, 5]
Convert commands.cool.level3.26
Ignored extra data: [13, 5]
Convert commands.cool.level3.27
Ignored extra data: [13, 5]
Convert commands.cool.level3.28
Ignored extra data: [13, 5]
Convert commands.cool.level3.29
Ignored extra data: [13, 5]
Convert commands.cool.level3.30
Ignored extra data: [13, 5]
Convert commands.cool.level3.31
Ignored extra data: [13, 5]
Convert commands.cool.level3.32
Ignored extra data: [13, 5]
Convert commands.cool.level4.16
Ignored extra data: [13, 5]
Convert commands.cool.level4.17
Ignored extra data: [13, 5]
Convert commands.cool.level4.18
Ignored extra data: [13, 5]
Convert commands.cool.level4.19
Ignored extra data: [13, 5]
Convert commands.cool.level4.20
Ignored extra data: [13, 5]
Convert commands.cool.level4.21
Ignored extra data: [13, 5]
Convert commands.cool.level4.22
Ignored extra data: [13, 5]
Convert commands.cool.level4.23
Ignored extra data: [13, 5]
Convert commands.cool.level4.24
Ignored extra data: [13, 5]
Convert commands.cool.level4.25
Ignored extra data: [13, 5]
Convert commands.cool.level4.26
Ignored extra data: [13, 5]
Convert commands.cool.level4.27
Ignored extra data: [13, 5]
Convert commands.cool.level4.28
Ignored extra data: [13, 5]
Convert commands.cool.level4.29
Ignored extra data: [13, 5]
Convert commands.cool.level4.30
Ignored extra data: [13, 5]
Convert commands.cool.level4.31
Ignored extra data: [13, 5]
Convert commands.cool.level4.32
Ignored extra data: [13, 5]
Convert commands.heat.level1.16
Ignored extra data: [13, 5]
Convert commands.heat.level1.17
Ignored extra data: [13, 5]
Convert commands.heat.level1.18
Ignored extra data: [13, 5]
Convert commands.heat.level1.19
Ignored extra data: [13, 5]
Convert commands.heat.level1.20
Ignored extra data: [13, 5]
Convert commands.heat.level1.21
Ignored extra data: [13, 5]
Convert commands.heat.level1.22
Ignored extra data: [13, 5]
Convert commands.heat.level1.23
Ignored extra data: [13, 5]
Convert commands.heat.level1.24
Ignored extra data: [13, 5]
Convert commands.heat.level1.25
Ignored extra data: [13, 5]
Convert commands.heat.level1.26
Ignored extra data: [13, 5]
Convert commands.heat.level1.27
Ignored extra data: [13, 5]
Convert commands.heat.level1.28
Ignored extra data: [13, 5]
Convert commands.heat.level1.29
Ignored extra data: [13, 5]
Convert commands.heat.level1.30
Ignored extra data: [13, 5]
Convert commands.heat.level1.31
Ignored extra data: [13, 5]
Convert commands.heat.level1.32
Ignored extra data: [13, 5]
Convert commands.heat.level2.16
Ignored extra data: [13, 5]
Convert commands.heat.level2.17
Ignored extra data: [13, 5]
Convert commands.heat.level2.18
Ignored extra data: [13, 5]
Convert commands.heat.level2.19
Ignored extra data: [13, 5]
Convert commands.heat.level2.20
Ignored extra data: [13, 5]
Convert commands.heat.level2.21
Ignored extra data: [13, 5]
Convert commands.heat.level2.22
Ignored extra data: [13, 5]
Convert commands.heat.level2.23
Ignored extra data: [13, 5]
Convert commands.heat.level2.24
Ignored extra data: [13, 5]
Convert commands.heat.level2.25
Ignored extra data: [13, 5]
Convert commands.heat.level2.26
Ignored extra data: [13, 5]
Convert commands.heat.level2.27
Ignored extra data: [13, 5]
Convert commands.heat.level2.28
Ignored extra data: [13, 5]
Convert commands.heat.level2.29
Ignored extra data: [13, 5]
Convert commands.heat.level2.30
Ignored extra data: [13, 5]
Convert commands.heat.level2.31
Ignored extra data: [13, 5]
Convert commands.heat.level2.32
Traceback (most recent call last):
File “C:\Users\vali1\sircc.py”, line 182, in
data[‘commands’] = convert_dict(data[‘commands’])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\vali1\sircc.py”, line 178, in convert_dict
dic[key] = convert_dict(value)
^^^^^^^^^^^^^^^^^^^
File “C:\Users\vali1\sircc.py”, line 178, in convert_dict
dic[key] = convert_dict(value)
^^^^^^^^^^^^^^^^^^^
File “C:\Users\vali1\sircc.py”, line 176, in convert_dict
dic[key] = convert(value)
^^^^^^^^^^^^^^
File “C:\Users\vali1\sircc.py”, line 167, in convert
return convert_from_raw(convert_to_raw(command))
^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\vali1\sircc.py”, line 157, in convert_to_raw
b = broadlink_len_fix(base64.b64decode(command.encode()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\vali1\sircc.py”, line 141, in broadlink_len_fix
assert data[0] == 0x26 # IR
~~~~^^^
IndexError: index out of range

I don’t know much about Python, but what version of Python are you using, and what Broadlink JSON file are you converting? Perhaps your python version is too new or your using a Broadlink file that is too different. I haven’t tried the converter on the forked version of SmartIR. You could try with some different files.

  • Detected that custom integration ‘smartir’ calls async_track_state_change instead of async_track_state_change_event which is deprecated and will be removed in Home Assistant 2025.5 at custom_components/smartir/climate.py, line 176: async_track_state_change(self.hass, self._temperature_sensor,. Please report it to the author of the ‘smartir’ custom integration
  • Detected that custom integration ‘smartir’ calls async_track_state_change instead of async_track_state_change_event which is deprecated and will be removed in Home Assistant 2025.5 at custom_components/smartir/climate.py, line 184: async_track_state_change(self.hass, self._humidity_sensor,. Please report it to the author of the ‘smartir’ custom integration

Instead of just pasting logfile snippets without any further comments about the issue(s) you encounter you might also want to tell us which SmartIR version you have installed.

  1. smartHomeHub → SmartIR

or the forked version:

  1. litinoveweedle → SmartIR (which is 407 commits ahead of, 74 commits behind smartHomeHub/SmartIR:master).

Issue reports, possibly with logfile snippets like yours above go to the issue reporting pages at GitHub of the respective devs.

Hi - same issue here - I won’t bother posting the log snippet. Both repositories had their last update 3 months ago, I use the original.

By the look of it the dev on the fork is still actively monitoring issues, so I will have to consider changing over and seeing if the same warning appears. If it does I’ll log an issue on Github