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

Is SmartIR still being maintained?

Seems like there are many areas that are unpolished and there hasn’t been any changes in a long time.

For example, creating devices formally instead of just registering an entity to HASS (this will allow complex devices like fans with lights). Also, UI configuration.

Yup. Works just fine now. Guess I’ll be joining you in trying to figure out how to convert codes for the UFO-R11 MQTT because I don’t have the remote and I’m not looking forward to teaching the AC code combinations either.

I did not advance in the conversion of codes, but facilitated the learning procedure with a script.

script:
  lerning_script:
    sequence:
      - repeat:
          for_each:
            - "heat powerful 18" #this is the name of the code that will be in the notification HA
            - "heat powerful 19"
            - "heat powerful 20"
            - "heat powerful 21"
            - "heat powerful 22"
            - "heat powerful 23"
            - "heat powerful 24"
            - "heat powerful 25"
            - "heat powerful 26"
            - "heat powerful 27"
            - "heat powerful 28"
            - "heat powerful 29"
            - "heat powerful 30"
        
          sequence:
            - service: persistent_notification.create
              data:
                message: "Wait code for {{ repeat.item }}"
                notification_id: "55555"
            - variables:
                ircodetimestamp: "{{ as_timestamp(states.sensor.<NAME YOUR DEVICE>_learned_ir_code.last_changed) }}"
            - service: mqtt.publish
              data:
                topic: zigbee2mqtt/<NAME YOUR DEVICE>/set
                payload: '{"learn_ir_code": "ON"}'
            - wait_template: "{{ ircodetimestamp != as_timestamp(states.sensor.<NAME YOUR DEVICE>_learned_ir_code.last_changed) }}"
              timeout: 10
            - service: notify.ir_code
              data:
                message: "{{ repeat.item }}, {{ states('sensor.<NAME YOUR DEVICE>_learned_ir_code') }}"
notify:
  - name: ir_code
    platform: file
    filename: ir_codes.csv #file in the config folder where all the codes will be written
2 Likes

For some reason, the Smartir developer does not accept codes for MQTT. These are my codes for GREE air conditioners.

{
  "manufacturer": "Gree",
  "supportedModels": [
    "Unknown"
  ],
  "supportedController": "MQTT",
  "commandsEncoding": "Raw",
  "minTemperature": 18.0,
  "maxTemperature": 30.0,
  "precision": 1.0,
  "operationModes": [
    "cool",
    "heat"
  ],
  "fanModes": [
    "auto",
    "sleep",
    "powerful"
  ],
  "commands": {
    "off": {"ir_code_to_send": "ByUjgBGUAjICgAMDbwaUAsAL4AcHQBvAA+AHG+AHD0An4AcT4AMPwB/AB0AbwAsDKU6UAkAP4CEDQAEBlAKAP0ABAZQC4AED4BMB4AMnDZQCbwYyAm8GMgJvBpQC"},
    "cool": {
      "auto": {
        "18": {"ir_code_to_send": "CzIjnRGIAnAGiAIuAoAD4AMLwBNAB+APF0Ab4CcDwEvAB0A/gAsHLgIxTogCLgLgKQOAPwGIAuArA0A7C3AGiAJwBogCLgKIAg=="},
        "19": {"ir_code_to_send": "C00jYxGQAmgGkAIpAoAD4AML4AMT4AsXwB/gJwfAS8AHQD/ACwMqTpACQA/gEQNAAeAHHwEpAsA/ASkC4DUDA2gGkAI="},
        "20": {"ir_code_to_send": "C0EjgBGcAmEGnAIbAoAD4AMLwBPAB+ATG8Aj4BsHwEfAB0AzwAsDFE6cAkAP4CcDwD/gJzdAL+ABOwUbAmEGnAI="},
        "21": {"ir_code_to_send": "C94igBGbAmYGmwIdAoAD4AML4AcT4AsbwCPgIwfAR8AHQDvACwMTTpsCQA/gJwPAP+AnN4AvDR0CZgabAh0CHQJmBpsC"},
        "22": {"ir_code_to_send": "C0EjgBGWAmsGlgIgAoAD4AMLwBNAB0AXQANAC+A3A8BHwAdAT8ALAyJOlgJAD+AnA8A/4Cc3QC9AOwtrBpYCIAKWAmsGIAI="},
        "23": {"ir_code_to_send": "Cz4jgBGZAm0GmQIeAoAD4AML4AMTQBdAA8AT4DMHwEfAB0BLwAsDCU6ZAkAP4CcDwD/gJTfAAYA3B20GmQJtBpkC"},
        "24": {"ir_code_to_send": "CzwjbxGQAnAGkAJDAoAD4AMLwBPgAwfgFx/gAStAAeADD0ALgAGAQwFDAoAHgBfACwNHTkMC4CkBBZACcAZDAuAFAQGQAuABA8AB4AMT4AELD3AGkAJDApACcAaQAnAGkAI="},
        "25": {"ir_code_to_send": "C0EjhRGXAmwGlwIiAoAD4AML4AsT4AsfwCfgHwfAQ8AHQDfACwMtTpcCQA/gJwPAP+AhN0ABQC+AAQtsBpcCbAaXAmwGlwI="},
        "26": {"ir_code_to_send": "C0EjgBGaAmwGmgIfAoAD4AMLwBNAB8AXwAdAE+AvA8BDwAdAR8ALAx5OmgJAD+AnA8A/4Bk3QAHgBSdAOwtsBh8CbAaaAmwGHwI="},
        "27": {"ir_code_to_send": "C9cifRGZAmoGmQIcAoAD4AML4AMTwBfAB8Ab4CsHwEPAB0BDwAsDL06ZAkAP4CcDwD/gJzcAHGABQAcJmQIcApkCHAKZAg=="},
        "28": {"ir_code_to_send": "Cx4jnBGKAncGigIqAoAD4AMLwBPAB0AbQAPAD+AvB8BDwAdAR8ALAztOigJAD+AnA8A/4Cc3QC/gBDsCAooC"},
        "29": {"ir_code_to_send": "C0EjghGXAmMGlwIdAoAD4AML4AcTQBtAA8AX4C8HwEPAB0BHwAsDHE6XAkAP4CcDwD/gJzfALwtjBpcCHQKXAh0ClwI="},
        "30": {"ir_code_to_send": "C0gjgBGeAlsGngIXAoAD4AMLwBNAB0AXwANAD+AzA0BHQD/AB+ADCwMUTp4CQA/gJwPgA0vgKzsLWwaeAhcCngIXAp4C"}
      },
      "sleep": {
        "18": {"ir_code_to_send": "C0EjjBGTAnYGkwIfAoAD4AMLQBPAD8AHQBPgNwPAS8AHQE/ACwMqTpMCQA/gJwPAP+AnN0AvQDsLdgaTAnYGkwIfApMC"},
        "19": {"ir_code_to_send": "Cw8jfhGWAmMGlgIgAoAD4AMLQBNAD8ADQA/gOwNAT0BHwAfgBAsAToAPASAC4CUD4ANL4A07QAHgDxvgARcDYwaWAg=="},
        "20": {"ir_code_to_send": "C9kibRGPAnoGjwJKAoAD4AMLQBPgAw/gAwtAG+ANA0ABQBvgEQEDegZKAkABwAdAAQF6BoAzA0dOSgLgHQFAL+ABAwd6BkoCSgKPAoADQAHAC+ALB8ABQBsDSgJ6BoAHB0oCSgJ6BkoC"},
        "21": {"ir_code_to_send": "CzIjdhGRAnQGkQJIAkADAUgC4AELQA8BkQJAD0ADwAtAB+ApA0AB4AE34AtPwBMELU6RAkjgKgEDdAZIAuAVAeAHV0APQAOAAQt0BkgCSAKRAnQGSAI="},
        "22": {"ir_code_to_send": "C0MjghGYAmsGmAIbAoAD4AMLQBPAD0AHQANAE+A3A8BHwAdAT8ALAy1OmAJAD+AnA8A/4Cc3QC9AOwtrBpgCGwKYAmsGmAI="},
        "23": {"ir_code_to_send": "CzUjixGcAmcGnAIeAoAD4AMLQBNAD+ADA0AT4DcDQE9AQ8AH4AMLAw9OnAJAD+AnA+ADS+AnO4AvCR4CZwYeAmcGHgI="},
        "24": {"ir_code_to_send": "Cx4jjxGRAncGkQIhAoAD4AMLQBPgFw9AI+AnA8BTwAdAP8ALAzZOkQJAD+AnA8A/4Cc3QC/AOwd3BpECdwaRAg=="},
        "25": {"ir_code_to_send": "CwMjfhGfAmQGnwIbAoAD4AMLQBNAD0ADQAtAA+ADC0AP4CsDwEPAB0BDwAsDD06fAkAP4CcDwD/gFTdAAeANIwtkBhsCZAafAmQGGwI="},
        "26": {"ir_code_to_send": "C0EjgBGbAnUGmwIgAoAD4AMLQBPAD+AHB0Ab4C8D4AtLwBMDEU6bAuArV8A/4CU7gAEBdQbgAgMCBpsC"},
        "27": {"ir_code_to_send": "C0EjgBGfAlsGnwIlAoAD4AMLQBNAD8ADwA9AB+AzA0BPQD/AB+ADCwMSTp8CQA/gJwPgA0vgHTvgDgECAiUC"},
        "28": {"ir_code_to_send": "C0MjYxGUAmsGlAI6AoAD4AMLQBPgAw9AC0ADQBfgMwPAQ8AHQEvACwMlTpQCQA/gIQOAAYA/4CcBgGcPawY6AjoClAI6AjoCOgI6Ag=="},
        "29": {"ir_code_to_send": "DTojbhGRAnAGRwJHApECQAMDcAaRAkAHwANAD0ADQA9AB0ADQAvgMwPAQ8AHQEvACwMtTpECQA8AR+AmAQNwBkcC4BkB4AtXQBMNkQJwBkcCRwKRAkcCRwI="},
        "30": {"ir_code_to_send": "C+ginRGEAnwGhAIvAoAD4AMLQBPAD0AHwANAF+AzA0BHQD/AB+ADCwNAToQCQA/gJwPgA0vgKzsLfAaEAi8ChAIvAoQC"}
      },
      "powerful": {
        "18": {"ir_code_to_send": "C0MjjRGTAnAGkwIgAoAD4AMLwBNAB+APF0Ab4AcD4BcrwB/AB0A/wAsDL06TAkAP4CcDwD/gJzdAL0A7C3AGkwJwBpMCIAKTAg=="},
        "19": {"ir_code_to_send": "CwUjgBGZAmAGmQIgAoAD4AML4AMT4AsXwB/gBwfgFyvAH8AHQD/ACwMZTpkCQA/gJwPAP+ARN0AB4AcfQAHgBRMDYAaZAg=="},
        "20": {"ir_code_to_send": "C8oijxGTAncGkwIjAoAD4AMLwBPAB+ATG8AjQAfgFyfAH8AH4AMzAyxOkwJAD+AnA+ADS+AdO0ABgCvgAzsDdwYjAg=="},
        "21": {"ir_code_to_send": "CzQjdhGQAnUGkAJHAoAD4AML4AcT4AsbwCMAR2ABgAcFdQZHAkcCQAtAA0ABwAeAAYAfA0cCdQZAF0ADAUcCwAsDSk5HAuAdAQKQAkdgAUAHBZACdQZHAuAFAQGQAuAFA0AB4A8TDUcCdQaQAkcCkAJ1BpAC"},
        "22": {"ir_code_to_send": "C8simBGJAnwGiQIpAoAD4AMLwBNAB0AXQANAC+AXA+AXJ8AfwAdAT8ALAzhOiQJAD+AnA8A/4Cc3QC9AOwt8BokCKQKJAnwGiQI="},
        "23": {"ir_code_to_send": "CTIjmxFSAnwGUgLAAQV8BpECUgLAA4ABAXwGQAMAkSAHA5ECUgLgCwNAAUAXgAHgASfgDQEDfAZSAkABwAdAAQF8BoA/A0NOUgLgKwEDfAZSAuABAYBLAVICQAfgCwNAAeADF4ABB3wGUgJ8BlIC"},
        "24": {"ir_code_to_send": "C0gjYhGSAnUGkgJGAoAD4AMLwBPgAwfgFx9AK+ARI0AB4AEf4AMnwAsDME6SAkAj4AUD4BkBA3UGRgLgDQFAS+AVAcA7B3UGRgJ1BkYC"},
        "25": {"ir_code_to_send": "C0EjiRGaAmoGmgIZAoAD4AML4AsT4AsfwCdABwO4AZoCgCMBCQNACwIZAppgAcALQA8BagaAGwNqBpoCQA8DmgIZAsALBTNOmgIZAuApA8A/4Cs7QDMLagaaAmoGmgJqBpoC"},
        "26": {"ir_code_to_send": "CwAjgRGgAmwGoAIfAoAD4AMLwBNAB8AXwAdAE+APA+AXI8AfwAdAR8ALAxFOoAJAD+AnA8A/4CU3gAEBbAbgAgMCBh8C"},
        "27": {"ir_code_to_send": "C94ikRGGAogGhgIvAoAD4AML4AMTBYgGLwIvAkAHAYYCQAfgEwPgASNAAQGGAuAHA8AfwAdAH8ALAztOhgJAD+AnA8A/4Cc34AgvAgKGAg=="},
        "28": {"ir_code_to_send": "CzwjbBGPAnAGjwI8AoAD4AMLwBPAB0AbQAPAD+APB+AXI8AfwAdAR8ALAy9OjwJAD+ANA+ALAUArBzwCcAY8AjwCgAvgBQHgAxNAC+AJAw9wBo8CPAI8AjwCPAI8AjwC"},
        "29": {"ir_code_to_send": "C0EjghGWAmsGlgIkAoAD4AML4AcTQBtAA8AX4A8H4BcjwB/AB0BHwAsDLE6WAkAP4CcDwD/gJzcAJKABC2sGlgIkApYCJAIkAg=="},
        "30": {"ir_code_to_send": "CzwjZRGYAmsGmAIyAoAD4AMLwBNAB0AXwANAD+ATA0An4Bsf4AMnwAsDG06YAuATO+APG4A/QAEBmALgBQPgFwEEmAJrBjJgAwcyApgCMgIyAg=="}
      }
    },
    "heat": {
      "auto": {
        "18": {"ir_code_to_send": "BzIjdBGPAkgCgAMBdwaAA8AP4AMHQBvgAw/gFQtAAUAj4A0BA3cGSAJAAcAHQAEBdwaALwNATkgC4BkBQCvgBQOAPwGPAuAVA+ADAUAr4AEBC3cGSAJIAo8CdwZIAg=="},
        "19": {"ir_code_to_send": "B0EjjhGTAh8CgAMBdAaAA8APwAfgDxfAH+AnB0BPQDPAB+ADCwMvTpMCQA/gJwPgA0vgKzsLdAaTAh8CkwJ0BpMC"},
        "20": {"ir_code_to_send": "B0EjlBGUAh8CgAMBeQaAA8AP4AcHQB/gBxPgKw/AR8AHQEPACwMxTpQCQA/gJwPAP+AnN+ADLwd5Bh8CeQaUAg=="},
        "21": {"ir_code_to_send": "BygjbRGPAkECgAMBdAaAA8APwAdAF0ALwAdAC+AzAwV0BkECQQJABwKPAkFgAQGPAoALBY8CRU5BAuApAQWPAnQGQQLgCQEBjwLgGwMPdAaPAkECQQJ0Bo8CdAaPAg=="},
        "22": {"ir_code_to_send": "BxkjnBGKAikCgAMBeQaAA8AP4AMH4BMb4AMn4BsLQEtAJ8AH4AMLAzhOigJAD+AnA+ADS+AnO0AvC3kGigJ5BooCeQaKAg=="},
        "23": {"ir_code_to_send": "B0MjgBGYAh4CgAMBaAaAA8APwAfAF0AHwBPgMwfAR8AHQEvACwMfTpgCQA/gJwPAP+AnN0AvQDsLaAaYAmgGHgJoBpgC"},
        "24": {"ir_code_to_send": "B0MjYxGRAjoCgAMBcAaAA8AP4AsHQCPgCxfgIRMBOgLAQ8AHAzoCkQLACwMtTpECQA/gCQPgFQEDcAY6AuAFAUBDwAFAC+AbAwU6AjoCkQI="},
        "25": {"ir_code_to_send": "B0AjhhGVAiACgAMBcAaAA8APwAdAF+ALC8AT4CcHwE/AB0A/wAsDDU6VAkAP4CcDwD/gJzdAL+AEOwICIAI="},
        "26": {"ir_code_to_send": "B0EjjhGUAh4CgAMBcwaAA8AP4AMHQBtAD8AHQAvgLwPAQ8AHQEfACwMuTpQCQA/gJwPAP+AnN8AvC3MGlAIeApQCHgKUAg=="},
        "27": {"ir_code_to_send": "B0AjgBGaAh0CgAMBYAaAA8APwAfgAxdAC8AX4C8HwEPAB0BHwAsDMk6aAkAP4CcDwD/gJzdAL0A7C2AGmgIdApoCHQIdAg=="},
        "28": {"ir_code_to_send": "B0AjkBGWAh8CgAMBbwaAA8AP4AcH4Bcf4Acv4A8PQEdAG8AH4AMLAzlOlgJAD+AnA+ADS+AnO8AvB28GlgIfAh8C"},
        "29": {"ir_code_to_send": "B8AiehGPAkUCgAMBdAaAA8APwAdAF0ALQAdAA0AL4CEDQAHgBS/AQ8AHQB/ACwNKTkUC4CsBA3QGRQLgAQECjwJF4AgBQBPgBwNAARGPAnQGjwJFAkUCdAZFAkUCRQI="},
        "30": {"ir_code_to_send": "BxUjgBGaAhsCgAMBYQaAA8AP4AMHwBtAB+ADF+ArC8BDwAdAQ8ALAx1OmgJAD+AnA8A/4Cc3wC8LYQaaAmEGmgIbApoC"}
      },
      "sleep": {
        "18": {"ir_code_to_send": "B0EjZRGSAjsCgAMBcgaAA8APQAdAE+ADB0AL4DcD4AtTwBMDK06SAuAVX+ADAUArgAEDcgY7AuAJAUAfQANAAUAHwANAAUALQAGABwtyBjsCOwI7AnIGOwI="},
        "19": {"ir_code_to_send": "B74idBGQAkICgAMBcwaAA8APQAfAE0AHQA/gKQNAAcA3gAGASwFCAoAHgBvACwNLTkIC4BEBApACQuAIAYATA3MGQgKAAUAP4BcDQAHgASMBcwZAAwlCAkICQgJzBkIC"},
        "20": {"ir_code_to_send": "B0AjmRGMAiYCgAMBegaAA8APQAdAE0AHQAPgAwtAD+AvA8BHwAdAR8ALAzFOjAJAD+AnA8A/4Cc34AMvB3oGjAJ6BowC"},
        "21": {"ir_code_to_send": "BzcjbhGRAkYCgAMBdAaAA8APQAfgAxNAC0AT4DcDwEfAB0BPwAsEL06RAkbgKgEDdAZGAuAhAUBj4AEDD3QGkQJGAkYCdAZGAnQGRgI="},
        "22": {"ir_code_to_send": "B0YjgBGWAh4CgAMBcgaAA8APQAdAE8AHwAtAD+AzA8BHwAdAS8ALAzBOlgJAD+AnA8A/4Cc3wC8LcgaWAnIGlgJyBh4C"},
        "23": {"ir_code_to_send": "B94iYxGHAhgCgAMBbQaAA8APQAfAEwJtBrlgAwEYAsADA4cCGAJAC0AH4CUDA20GhwJAM8AH4AMLAyNOhwJAD+AnA8BLQAHgBzvgFwFAOwttBocCbQaHAm0GhwI="},
        "24": {"ir_code_to_send": "B0EjgBGaAh4CgAMBVwaAA8APQAdAE0AHwAPgBw/AF+AjB8BDwAdAO8ALAxdOmgJAD+AnA8A/4B03QAHgDisCApoC"},
        "25": {"ir_code_to_send": "Bw0jahGTAkECgAMBcQaAA8APQAfgBxNAD0AX4DMDwEPAB0BLwAsDLU6TAkAP4AEDQAFAD+AVAQNxBkEC4BUBQEPgAwNAAUAPAUEC4AQ7AgJBAg=="},
        "26": {"ir_code_to_send": "B+YigBGdAh4CgAMBYwaAA8APQAdAE+ALB0AT4C8D4AdTQEfAEwMZTp0CQA/gJwPAP+AdN0AB4AUrC2MGHgIeAp0CHgIeAg=="},
        "27": {"ir_code_to_send": "BzwjmBGIAisCgAMBeQaAA8APQAfAE0AHwA9AB+AzA+ALS8ATAztOiALgK1vAP+AvOwt5BogCKwKIAisCiAI="},
        "28": {"ir_code_to_send": "BzcjgBGeAiACgAMBWQaAA8APQAdAE0AHQANAC0ADQAvgMwPAQ8AHQEvACwMYTp4CQA/gJwPAP+AZN0ABQCdAAeADBwmeAlkGngIgAiAC"},
        "29": {"ir_code_to_send": "B7IigBGbAh4CgAMBYAaAA8APQAfgAxPgAwtAG+AvA0BHQDvAB+ADCwMdTpsCQA/gJwPgA0vgLTsJHgJgBh4CHgKbAg=="},
        "30": {"ir_code_to_send": "BygjghGUAigCgAMBdwaAA8APQAdAE8AHQAtAA0AP4DMDwEPAB0BLwAsDL06UAkAP4CcDwD/gETdAAeAHH+ABAQt3BigCdwaUAigClAI="}
      },
      "powerful": {
        "18": {"ir_code_to_send": "B+MimxGMAicCgAMBdwaAA8AP4AMHQBvgAw/gEwvgFyvAH8AHQEvACwM2TowCQA/gJwPAP+AnN8AvC3cGjAInAowCdwaMAg=="},
        "19": {"ir_code_to_send": "B0MjgBGTAiUCgAMBbgaAA8APwAfgDxfAH+AHB0Av4AcT4AMPwB/AB0Ab4AALBE6TAiUC4CkD4AA/YAEBkwLgIwNAOwtuBpMCJQKTAm4GJQI="},
        "20": {"ir_code_to_send": "B+gigBGbAhsCgAMBZgaAA8AP4AcHQB/gBxPgCw/gFyfAH8AHQEPACwMVTpsCQA/gJwPAP+AnN+ADLwdmBhsCZgabAg=="},
        "21": {"ir_code_to_send": "B9kiYBGRAkICgAMBdgaAA8APwAdAF0ALwAdAC+ATA+AXJ8AfwAdAS8ALAyxOkQJADwBCYAFAB8AD4BUBA3YGQgLgJQHAVxGRAnYGkQJCApECdgZCAnYGQgI="},
        "22": {"ir_code_to_send": "By8jihGeAhcCgAMBXQaAA8AP4AMH4BMb4AMnQAtAK0AH4A8DwB/AB0AnwAsDFk6eAkAP4CcDwD/gJzfALwtdBp4CXQaeAl0GngI="},
        "23": {"ir_code_to_send": "BxIjYxGUAiYCgAMBbQaAA8APwAfAF0AHwBPgEwfgFyfAH8AHQEvACwMgTpQCQA/gGQNAAeABJ8A/4AMT4B8LQDsLbQYmAm0GJgJtBpQC"},
        "24": {"ir_code_to_send": "B0EjgBGbAhwCgAMBWAaAA8AP4AsHQCPgCxfgAxPgFyPAH8AHQDvACwMbTpsCQA/gJwPAP+ARN0AB4BMfCZsCHAKbAhwCmwI="},
        "25": {"ir_code_to_send": "B0AjgRGUAigCgAMBZAaAA8APwAdAF+ALC8AT4AcH4AMv4AcbQA/AH8AH4AMTAyNOlAJAD+AhA0ABAZQCgEtAAQGUAuAFA0AB4BUTgDsJlAIoApQCKAKUAg=="},
        "26": {"ir_code_to_send": "ByMjghGVAi8CgAMBagaAA8AP4AMHQBtAD8AHQAvgDwPgFyPAH8AHQEfACwMlTpUCQA/gIQNAAQGVAsA/QAsAL2AB4AcH4AMBQBtAA0ABQAcNlQJqBi8CLwKVAi8ClQI="},
        "27": {"ir_code_to_send": "B+UihhGVAh4CgAMBcgaAA8APwAfgAxdAC8AX4A8H4BcjwB/AB0BHwAsDLk6VAkAP4CcDwD/gJzdAL0A7C3IGlQIeApUCHgKVAg=="},
        "28": {"ir_code_to_send": "B0EjghGSAiUCgAMBaQaAA8AP4AcH4BcfwC9AJ8AL4AsHwB/AB0AjwAsDJk6SAkAP4CcDgD9AAQGSAuAvAwdpBpICJQKSAg=="},
        "29": {"ir_code_to_send": "B+EiahGTAkICgAMBcQaAA8APwAdAF0ALQAdAA0AL4BMD4BcjwB/AB0BLwAsDLk6TAkAP4BUD4AkBA3EGQgLgLQEBkwLAOwdxBkICQgJCAg=="},
        "30": {"ir_code_to_send": "B8sibxGPAjkCgAMBcwaAA8AP4AMHwBtAB+ADF+ALC+AXI8AfwAdAQ8ALAypOjwJAD+AVA8ABQCeAAQNzBjkC4AkB4AEfgAFAD+ANAwtzBo8CcwY5AjkCjwI="}
      }
    }
  }
}

2 Likes

Where’re you executing this script because my HA isn’t having it when I try to paste it in

Message malformed: invalid template (TemplateSyntaxError: expected name or number) for dictionary value @ data['sequence'][0]['repeat']['sequence'][1]['variables']['ircodetimestamp']

I saved it as a yaml file, rebooted HA and saw this script in the settings. Most likely you have an error in the line ircodetimestamp: "{{ as_timestamp(states.sensor.<NAME YOUR DEVICE>_learned_ir_code.last_changed) }}"
send her

Hi, I have smart IR with one AC that works great. How can I disable heating mode because there is another heating system. And what is better is to group the AC and heating into one climate card. The heater is controlled by a Nest thermostats also integrated with google Nest into home assistant. Thx

Any updated tool to create customs .json for Smart IR?

Hi, I am facing an issue which I’m unable to fix, seeking help from the community to point me to the right direction.

Setup:

  • Broadlink Mini RM4 connected to HASS and using SmartIR for controlling my Sony Bravia TV.
  • Exposed the TV remote to Homekit via Homekit Bridge

Issue:
When I use the “remote” functionality in iOS then my TV responds to the command but then immediately turns off. This happens for any command. For example, if I try to increase the volume then I can see the volume go up and then immediately the TV turns off. Seems like there’s an additional command that is being sent when I’m trying to use the iOS remote feature.

I’m able to control the TV and all its functionality without any issue via the HomeAssistant dashboard. The issue only happens with iOS. So I’m not doubting the SmartIR plugin configuration issue but not able to figure out what could be the issue. Please help.

Thanks,

Made any progress @Tranquilizer? Bit the bullet & manually added all the codes to my json & only “off” works for me. Such a PITA

How to create a proper fan json file?

I can’t figure out how to create a proper json file for the fan codes. I have my IR codes working, but how to create a correct file? I tried to peek into the files of the other codes and create a similar one with another numbering of my choice (for example 2000), but it seems that using this last one the smartir integration is not loaded correctly; therefore I assume that some steps are missing.

{
  "manufacturer": "Brandson",
  "supportedModels": [
    "Unknown"
  ],
  "supportedController": "Broadlink",
  "commandsEncoding": "Base64",
  "speed": "toggle"
  ],
  "commands": {
    "power": "JgAsAScOKA4NKCgNKQ0NKA4oDSkNKA4oDSko4ikNKA0OKCgOKA0OKA0pDSgNKQwqDCkoAAEGJw4oDgwpKA4oDQ0oDigNKA4oDSkNKCjkKAwoDg0oKA4oDgwpDSkNKA4oDCoMKSgAAQYoDSgODSgoDigOCyoNKAwpDigOKA0oKOQoDSgNDCkpDSgODSgOKA0oDigNKQ0oJwABBygNKA4NKScOJw8MKQ0pDCgOKA0pDSgo5CgNKA4MKCkNKQ0NKA0pDSgOKA0pDSgoAAEGKA0oDg0pJw4oDg0oDCoMKgwoDigNKCjkKA0oDgwqJw4oDQ0pDSgNKQ0oDigNKSgAAQUnDygNDigoDigNDigNKQsqDSkLKg0oKeMnDigOCyooDigODCgNKQ0pDSgNKQ0pJwANBQ==",
    "speed": "JgAsAScOJw4OKCgNKQ0MKgwpDSgNKQ0oKQ0N/igOKA4MKScOKQwOKA0pDSgOKA0pKA0OAAEgKA4oDQ4oJw4oDg0pCyoNKQwqDCgpDQ3/Jw4oDg0oKA4oDgwoDigNKQ0oDigoDQ4AASEoDSgNDigoDigNDigNKQ0oDCoMKicODP8oDSgODSknDigODCoMKQ0oDSkNKCgODQABIicOJw4NKCkNKA4NKA4oDSkNKA4oKA4M/igOJw4OKCgOJw4NKQ0oDSkNKQwoKQ0NAAEiJw4oDgwpKA0pDQ0oDigNKA4oDSkoDQ3+KA0pDQ0pJw4oDgwpDSkNKQwpDSknDg0AASEoDigNDSkoDicODSgNKA4oDSkNKCgODf4oDicODSgpDSgNDigNKQwpDigNKScODAANBQ==",
	"Oscillate":"JgAsASgNJw8MKicOKA0NKA4oKA0OKA0pDSgO/SkMKQ0NKSgNKA4NKA4oKA4NKA0pDCoMAAEhKA4oDQ4oKA4nDg0oDSgpDQ0pDSgOKA3+KA0pDQ0oKQ0oDQ0pDSkoDQ4oDSgNKQ0AASEoDSgODSknDigODCkNKSgNDSgNKQ0oDv4oDSgODCkoDSgODSgOKCgODCkOKA0pDAABIScPJw4OKCgOJw4OKAsqKA4MKQ0oDigN/ycOJw8MKScPKAwOKA0pJw4NKQ0oDigNAAEhKQwoDg0oKA4oDg0oDigoDQ0pDCoMKA7+KA0oDg0pKA0nDwwoDigpDQ0oDigNKQwAASIoDSkMDignDycODSkNKCgODSkLKg0pDP4oDigODSgoDicODSkMKicNDSkNKQ0oDgANBQ==",
	"Led":"JgAsASgNKA0OKCgOJw4NKSgNDSkMKgwpDSgN/igOKA0NKScPJw4NKCkMDigNKQ0oDigNAAEhKA0pDQwpKA4oDQ4oKA4NKAwqDCoMKQ3+KA8mDg0oKA4oDgwpJw4NKA0pDSkNKA4AASEoDSgNDSkoDSgODSgoDg0pDSgOKAwpDf4oDicODSkoDSgODConDgwqDCgOKA0pDAABIigOKA0NKCkNKA0NKSgNDSkNKQ0oDigN/SkNKA4NKCgOKA0OKCgODCkMKgwoDigNAAEiJw4oDgwpKA4oDQ0oKQ0MKQ4oDSkNKA3+KQwpDQ0pJw4nDw0oKA4NKQwpDSkMKgwAASEnDygNDSkoDicODCkpDA4oDSkNKA0pDf8nDigNDCkpDScODigoDg0oDSkNKQsqDAANBQ==",
	"Timer":"JgAsASgNJw8NKScOKA4MKA4oDignDg4oDSgN/ygOJw0OKCkMKA4NKQ0oDigoDQ4oDCoLAAEjKA0oDg0pJw4nDwwpDSkMKSgNDigNKA7+KA4nDgwpKQwpDQ0pDSgNKSgODSgOKAwAASIoDSgODSknDigODSgNKQwqKA0NKA0pDf4nDygNDSknDycODCkMKQ0pKA4NKA4oDQABISkMKA4NKScOKA4NKA0pDSknDgwqDCoM/igOJw4NKScPJw4MKgwoDigpDQ0oDigMAAEjJw4oDQ0pJw4oDg0pDCkNKSgNDCoMKgv/Jw8nDg4oJw8nDg0pCyoNKScODCkNKQwAASMoDSgODCooDCgODSgOKA0pKA0OKA0pDf0oDigNDSkoDicODSkMKQwqJw8MKQ0oDQANBQ==",
	"Mode":"JgAsAScOKA0NKSgOJw4NKA0pDSgOKCgNDigN/ygNKA4MKCkNKQ0NKA4oDSkMKSgODSkNAAEgKA4pDQ0oJw8nDg0pDSkMKQ4oKA4MKQ3+Jw4oDg0pJw4oDg0pDSgOKAwqJw4MKQ0AASInDigODSgoDicPDCkMKgwoDSkoDg0oDv4oDicODSknDigODCkNKA0pDSknDg0pDQABIicOKA0NKCkNKQ0MKQ4oDSgOKCgODSgO/SkMKQ0NKSgNKA4NKA4oDSkMKSgODCoMAAEhKA4nDg4oKA4nDg4oDCoMKQ0pKAwOKA3/Jw4oDg0oKA4oDgwpDSgNKQ0oKQ0NKA4AASEoDigNDSkoDSgNDSkNKA0pDSknDg4oDf4oDSkNDSgpDSgNDSkNKQ0oDigoDgwpDAANBQ=="	
  }
}

Use this website to check your JSON file.

Your file has a mistake:

Error: Parse error on line 8:
...	"speed": "toggle"],"commands": {	"p
---------------------^
Expecting '}', ',', got ']'

Has anyone set up a Mitsubishi MSZ-WR09NA or MSZ-WR12NA? I’ve been using the 1124.json and it does most of what I need, except fan direction/angle.

1 Like

Hi friends,
I’ve been using the RM4 Pro with OpenHAB for the past two years to send commands to several RF controlled ceiling fans and it’s been running great.
However, due to several reasons I’m thinking of migrating away from OpenHAB to Home Assistant.
I’ve gone over the docs of this integration on the github page, but being a non developer and a noob to the Home Assistant platform, I’m still not sure how to set it up.
Before I go through the migration process that will require recreating my whole system, can anyone tell me if there is a full tutorial to setting up the SmartIR integration?
Hope someone can help :pray:

The SmartIR integration is quite a multi-step process, but don’t be too worried, it’s only tedious for the initial setup and when learning new device codes. After that, it’s pretty easy to use, just like any other Home Assistant device entity.

Disclaimer: I’m not the maintainer, so I will not provide any form of support. This is just a post to help people get started.

Best to go through the GitHub documentation first, but in general here are the steps.

Environmental assumptions:

  • You are totally new to Home Assistant but have gone through basic setup procedures already
  • You are using HAOS
    • Setup may differ for other Home Assistant installation methods
  • You have already setup HACS
  • You have already setup your RM4 Pro and integrated it to Home Assistant.
  • You have a method to modify your home assistant configuration files (pick one):

Setup Steps:

  • Install SmartIR via HACS - You may need to restart Home Assistant.

  • Obtain device IR/RF codes (Link to documentation for climate type devices)

    • If your device model can be found in SmartIR GitHub codes repository, download the code file and put it in config/custom_components/smartir/codes/<type>/<id>.json>
    • Otherwise, learn IR/RF codes if required using HA service call remote.learn_command, learnt commands can be found in config/.storage/broadlink_remote_<mac-addr>_flags.json.
    • If you already have them in openHAB, you can use those as long as they are in the Broadlink base64 format.
  • Setup codes json file for your device. This JSON file tells SmartIR how to manage your device and which codes it should use.

  • Add device configuration to Home Assistant’s configuration.yaml

  • Restart Home Assistant

If you’ve done this correctly, you should see your device entity listed if you search “SmartIR” in the Entities page. Click below to go to the entities page.
Open your Home Assistant instance and show your entities.

3 Likes

Thank you very much for the detailed explanation :pray::pray::pray:
I think I took most of the steps you mention before, but I guess I did a mistake somewhere along the way.
I’ll try again with your explanation and hopefully this time everything will work properly :slight_smile:

Update:
Hi @samuelthng I followed your steps to the point of learning my remote codes.
However, when I am running HA’s Remote: Learn Command service I can’t get my rf codes to be properly recorded and saved in neither the config/.storage/broadlink_remote_<mac-addr>_flags.json or config/.storage/broadlink_remote_<mac-addr>_codes.json files.
When I run the learn service my broadlink RM4 Pro enters into learn mode, and after pressing a button on my remote the learn service captures my remote’s frequency and I’m getting an HA notification I should now press the button I want to learn, but when I press the remote button a second time it seems that nothing is happening and the codes are not saved to the proper file.

As you mentioned I do have my remote codes that I learned for OpenHAB and I also have them in base64 format. Can you please explain how I can use those codes to create json files to control my devices?

You can take a look at the codes folder in the repository for some examples for the json files. The tool in the previous message I sent also helps to generate the shape of the json.

From there, you just need to put the file in the right directory, and ensure the codes you have are placed in the right keys.

As yours is a RF command, I’m not very familiar if there is any differences in the process. I’m using IR commands for all my devices. Maybe the RF codes are stored in a separate location. :thinking:

Is Tuya IR blaster also compatible?

Hello, I’m looking for some help when it comes to putting together commands for a device that’s not yet listed, both so that I can use my device myself and so that I can add some codes I recorded to the github repo for other users.

I pulled down 1460.json which is for Edifier R1280DB, shown here:

{
  "manufacturer": "Edifier",
  "supportedModels": [
    "R1280DB"
  ],
  "supportedController": "Broadlink",
  "commandsEncoding": "Base64",
  "commands": {
    "off": "JgBQAAABMJUSExMSExMSExM4EhMTExITEzgSOBM4EhMTEhM4EzgSOBM4EhMTEhMTEhMTExITExITExM4EjgTOBI4EzgSOBM4EwAFOwABMEoSAA0F",
    "on": "JgBQAAABMJUSExMSExMSExM4EhMTExITEzgSOBM4EhMTEhM4EzgSOBM4EhMTEhMTEhMTExITExITExM4EjgTOBI4EzgSOBM4EwAFOwABMEoSAA0F",
    "volumeDown": "JgBQAAABKJQTEhMTEhMTEhM4EhMTEhMTEjgTOBI4ExMSExI4EzgTNxMTEhMTOBI4ExITExITExITOBM3ExMSExI4EzgTOBI4EwAFOwABKEsSAA0F",
    "volumeUp": "JgBQAAABKJQTEhMTEhMTEhM4EhMTExITEjgTOBI4ExMSExM3EzgTOBI4ExITExI4ExITExITExITExI4EzgSExI4EzgTOBI4EwAFOwABKUoSAA0F",
    "mute": "JgBQAAABL5USExMSExMSExM4EhMTExITEzgSOBM4EhMTExI4EzgSOBMTExITExITExITExMSExMSOBM4EzgSOBM4EjgTOBI4EwAFOwABLkoTAA0F",
    "sources": {
      "Stereo 1": "JgBoAAABKZUTEhMTEhMSExM4EhMTEhMTEjgTOBI4ExITExI4EzgSOBMTEjgTEhM4ExITExITEhMTOBITEzcTExI4EzgSOBM4EgAFOwABKkoTAAxdAAEpShMADFwAASlKEgAMXQABKUoSAA0F",
      "Stereo 2": "JgBoAAABJ5QTExITExITExI4ExITExITEjgTOBI4ExMSExI4EzgTNxM4ExITOBITEzgSExITExITExI4ExITOBMSEzgSOBM4EgAFPAABKEoTAAxcAAEoSxIADF4AASdLEgAMXgABKEoTAA0F",
      "Optical": "JgBQAAABLZUSExMTEhMTEhM4ExITExITEzgSOBM4EhMTEhM4EzgSOBM4EhMTOBI4ExMSExMSExMSExM4EhMTEhM4EzgSOBM4EgAFPAABMUoTAA0F",
      "Coaxial": "JgBQAAABMJUTEhMTEhMTExI4ExMSExMSEzgTOBI4ExITExI4EzgTOBITEjgTOBMSEzgTEhMTEhMTOBITExITOBITEzgTQQk4EgAFPAABLEoTAA0F",
      "Bluetooth":"JgBQAAABJ5USExMSExMSExM4EhMSExMSEzgTOBI4ExITExI4EzgSOBMTEjgTOBI4ExITExITExITOBITExITExI4EzgSOBM4EgAFPQABKEoTAA0F"
    }
  }
}

I then recorded my own remote codes for the Edifier R1280DBs, which is nearly the same product but with a subwoofer out option. Despite this, only two of the R1280DB commands worked for the R1280DBs, hence me having to record.

My problem is, as you can see below, that the commands I recorded via the included remote are not discrete commands; there is one button for both the stereo inputs and the digital inputs that must be pressed twice in order to get to the second input (Stereo 2/Coaxial). This works fine for something with a button like Power On and Off, but I’m not sure how to send source commands in the same way using the default Media Player card’s dropdown source menu.

I’m also not sure what to do for commands like Play/Pause or Soundfield Spatializer in order to have them show up on the media player card.

I named my own remote code “1461.json” but just saw that the file name has been assigned to the R2000DB, so I’ll call it “1462.json” for now. I’ve been playing around with it to see what I can get working.

{
  "manufacturer": "Edifier",
  "supportedModels": [
    "R1280DBs"
  ],
  "supportedController": "Broadlink",
  "commandsEncoding": "Base64",
  "commands": {
    "off": "JgA+AAABIZASERITEhISEhM2EhESExISEjYTNRM1ExESExI2EjYTNRITEjUTNRMSEhISExE3ExERNxITERIKAA0F",
    "on": "JgA+AAABIZASERITEhISEhM2EhESExISEjYTNRM1ExESExI2EjYTNRITEjUTNRMSEhISExE3ExERNxITERIKAA0F",
    "volumeDown": "JgBQAAABHpAUERMRFBATERM1ExEUERMREjYTNBQ1ExETERM1EzUTNRQ0EzYSNhMRExAUERM1ExETERQQExEUNBM2EzQUERM1EwAFFQABHkkSAA0F",
    "volumeUp": "JgBQAAABII8RFBETEBQRExE3ERMRExETETcSNhE3ERMRFBE2EjYROBISEDgRNxETERQQExESExMQOBETERISNxE3ETcRNxI2EQAFJgABH0kRAA0F",
    "mute": "JgBQAAABI44UEBQRFBATERQ0ExEUEBQRFDQUNBQ0FBAUEBQ1EzUUNBQ0FBAUERQQFBAUEBQ0FBAVEBQ0FDUTNBQzFTUTEBQ1EwAFKAABIkcVAA0F",
    "Soundfield Spatializer On": "JgBQAAABIY8TEhITERISExI1ExISEhMREjcSNRM1EhMSEhI2EjYSNxIREjcSERM2EjYSEhMSERMSNhETEjcREhITEjUTNhE3EgAFKQABIEkRAA0F",
    "Soundfield Spatializer Off": "JgBQAAABIo8TERQQFBETEBQ1ExAUERQQFDQUNBQ1FA8UERQzFDUUNBQ1EzQVEBM1FDMVEBQRExAUERQQFDQUEBQQFDUUMxUzFAAFKAABIkYUAA0F",
    "play": "JgBQAAABIZATERETEhITEhE3EhIRExISEjYSNxI2ExERExI3EjUSNhM2EzUTNRM1EzUSExI1ExITERISEhMTEBITEjYSEhI3EgAFKAABIkcTAA0F",
    "pause": "JgBQAAABIZATERETEhITEhE3EhIRExISEjYSNxI2ExERExI3EjUSNhM2EzUTNRM1EzUSExI1ExITERISEhMTEBITEjYSEhI3EgAFKAABIkcTAA0F",
    "previousTrack": "JgBQAAABIo4VEBQRExAUERQzFBEUEBQQFDUTNBUzFBEUEBQ0FDQUNRQPFBEUMxUQFBEUDxQ1FA8VNBQ0FBEUMxU0EzUUEBQ0FAAFJwABIkgSAA0F",
    "nextTrack": "JgBQAAABIo4UERQQFBAUEBM1FBEUEBQQFDUUMxQ1ExEUEBQ0FDUUNBQzFRAUNBQ1FDMUERQ0FBASExM1FBATERQQFDQUEBUzFAAFKQABIkcTAA0F",
    "sources": {
      "Stereo 1/2": "JgBoAAABJ5QTExITExITExI4ExITExITEjgTOBI4ExMSExI4EzgTNxM4ExITOBITEzgSExITExITExI4ExITOBMSEzgSOBM4EgAFPAABKEoTAAxcAAEoSxIADF4AASdLEgAMXgABKEoTAA0F",
      "Optical/Coaxial": "JgBQAAABHZETEhAUERQREhE4ERMSEhITEDgRNxE2EhQQEhI4EjUTNRI3ERMRNxI2ERUQExISERQSEhA5ERQOExI4EDgRNxI2EQAFKgABIEoQAA0F",
      "Bluetooth":"JgBQAAABIo8TEhISERMSEhI2EhITEhETEzUSNhM1EhISExI2EjUTNhISEhISNxE3EjYSEhI2EhMSNRI3EhISEhITEjYSEhI2EwAFKAABIUgTAA0F"
    }
  }
}

So, do I need a different method of recording codes so that I can get them as discrete commands instead of primary switch followed by toggle, or is there another way of properly formatting the commands in this case? I looked through a few other devices to see if I found some examples but didn’t come up with anything.

Also, the configuration input just in case it’s relevant:

- platform: smartir
    name: "Edifier Speakers"
    unique_id: edifier_speakers
    device_code: 1462
    controller_data: remote.b1_b_broadlink_rm4_mini_remote

Thank you.

When i open .storage folder then i cant find broadlink codes.
Do i need to do something to generate this file? So far all almost works, but few codes seems to be wrong.