Skip to content

Broadlink IR codes listener and SmartIR json generator.

Notifications You must be signed in to change notification settings

gpongelli/broadlink-listener

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Broadlink Listener

pypi python Build Status codecov

Broadlink IR codes listener and SmartIR json generator.

This project will install a broadlink-listener command line tool that can be used to generate a climate SmartIR compatible json, starting from an initial structure that defines climate behavior, putting Broadlink IR remote to listening state, until all IR code combination will being scan.

Features

  • Discover Broadlink IR remote
  • Starting from SmartIR json structure like
{
  "supportedController": "Broadlink",
  "minTemperature": 16,
  "maxTemperature": 31,
  "precision": 1,
  "operationModes": [
    "op_a",
    "op_b"
  ],
  "fanModes": [
    "fan_a",
    "fan_b"
  ],
  "swingModes": [
    "swing_a",
    "swing_b"
  ]
}

it helps you listen all the defined IR codes to create a json like

{
  "supportedController": "Broadlink",
  "minTemperature": 16,
  "maxTemperature": 31,
  "precision": 1,
  "operationModes": [
    "op_a",
    "op_b"
  ],
  "fanModes": [
    "fan_a",
    "fan_b"
  ],
  "swingModes": [
    "swing_a",
    "swing_b"
  ],
  "commands": {
    "off": "...",
    "op_a": {
        "fan_a": {
            "swing_a": {
                "16": "....",

                "31": "...."
            },
            "swing_b": {
                "16": "....",

                "31": "...."
            }
        },
        "fan_b": {
            "swing_a": {
                "16": "....",

                "31": "...."
            },
            "swing_b": {
                "16": "....",

                "31": "...."
            }
        }
    },
    "op_b": {
        "fan_a": {
            "swing_a": {
                "16": "....",

                "31": "...."
            },
            "swing_b": {
                "16": "....",

                "31": "...."
            }
        },
        "fan_b": {
            "swing_a": {
                "16": "....",

                "31": "...."
            },
            "swing_b": {
                "16": "....",

                "31": "...."
            }
        }
    }
  }
}
  • Mandatory fields into starting json
    • supportedController, minTemperature, maxTemperature, precision
  • Optional fields (at least one must be present or nothing will be listened):
    • operationModes, fanModes,swingModes
  • Generated file can be used into SmartIR HomeAssistant component
  • It's possible to interrupt with CTRL-C at any moment, a temporary file will be saved
  • Temporary files are also saved at the end of each temperature range
  • In case of existing temporary file, the already learnt combination will be skipped

Example

Example of cli command:

$ broadlink-listener generate-smart-ir ./real_data/1124.json <DEVICE_TYPE> <IP> <MAC_ADDR> -n dry -n fan_only -s eco_cool

real_data/1124.json file is this one from SmartIR GitHub repo in which I've added the missing "swingModes" array, supported by climate but not present on json:

"swingModes": [
  "auto",
  "high",
  "mid_high",
  "middle",
  "mid_low",
  "low",
  "swing"
],

<DEVICE_TYPE>, <IP>, <MAC_ADDR> parameter can be obtained running:

$ broadlink-listener discover_ir

Credits

This package was created with Cookiecutter and the gpongelli/cookiecutter-pypackage project template.

About

Broadlink IR codes listener and SmartIR json generator.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages