Python module for controlling Broadlink RM2/3 (Pro) remote controls, A1 sensor platforms and SP2/3 smartplugs

Overview

Python control for Broadlink devices

A simple Python API for controlling Broadlink devices. At present, the following devices are supported:

  • Universal remotes: RM home, RM mini 3, RM plus, RM pro, RM pro+, RM4 mini, RM4 pro, RM4C mini, RM4S
  • Smart plugs: SP mini, SP mini 3, SP mini+, SP1, SP2, SP2-BR, SP2-CL, SP2-IN, SP2-UK, SP3, SP3-EU, SP3S-EU, SP3S-US, SP4L-AU, SP4L-EU, SP4L-UK, SP4M, SP4M-US
  • Power strips: MP1-1K3S2U, MP1-1K4S, MP2
  • Wi-Fi controlled switches: MCB1, SC1, SCB1E
  • Environment sensors: A1
  • Alarm kits: S2KIT
  • Light bulbs: LB1, SB800TD

Other devices with Broadlink DNA:

  • Smart plugs: Ankuoo NEO, Ankuoo NEO PRO, BG AHC/U-01, Efergy Ego
  • Outlets: BG 800, BG 900
  • Curtain motors: Dooya DT360E-45/20
  • Thermostats: Hysen HY02B05H

There is currently no support for the cloud API.

Example use

Setup a new device on your local wireless network:

  1. Put the device into AP Mode
  2. Long press the reset button until the blue LED is blinking quickly.
  3. Long press again until blue LED is blinking slowly.
  4. Manually connect to the WiFi SSID named BroadlinkProv.
  5. Run setup() and provide your ssid, network password (if secured), and set the security mode
  6. Security mode options are (0 = none, 1 = WEP, 2 = WPA1, 3 = WPA2, 4 = WPA1/2)
import broadlink

broadlink.setup('myssid', 'mynetworkpass', 3)

Discover available devices on the local network:

import broadlink

devices = broadlink.discover(timeout=5)

You may need to specify local_ip_address or discover_ip_address if discovery does not return any devices.

Using your machine's IP address with local_ip_address

import broadlink

devices = broadlink.discover(timeout=5, local_ip_address='192.168.0.100')

Using your subnet's broadcast address with discover_ip_address

import broadlink

devices = broadlink.discover(timeout=5, discover_ip_address='192.168.0.255')

Obtain the authentication key required for further communication:

devices[0].auth()

Enter learning mode:

devices[0].enter_learning()

Sweep RF frequencies:

devices[0].sweep_frequency()

Cancel sweep RF frequencies:

devices[0].cancel_sweep_frequency()

Check whether a frequency has been found:

found = devices[0].check_frequency()

(This will return True if the RM has locked onto a frequency, False otherwise)

Attempt to learn an RF packet:

found = devices[0].find_rf_packet()

(This will return True if a packet has been found, False otherwise)

Obtain an IR or RF packet while in learning mode:

ir_packet = devices[0].check_data()

(This will return None if the device does not have a packet to return)

Send an IR or RF packet:

devices[0].send_data(ir_packet)

Obtain temperature data from an RM2:

devices[0].check_temperature()

Obtain sensor data from an A1:

data = devices[0].check_sensors()

Set power state on a SmartPlug SP2/SP3/SP4:

devices[0].set_power(True)

Check power state on a SmartPlug:

state = devices[0].check_power()

Check energy consumption on a SmartPlug:

state = devices[0].get_energy()

Set power state for S1 on a SmartPowerStrip MP1:

devices[0].set_power(1, True)

Check power state on a SmartPowerStrip:

state = devices[0].check_power()

Get state on a bulb

state=devices[0].get_state()

Set a state on a bulb

devices[0].set_state(pwr=0)
devices[0].set_state(pwr=1)
devices[0].set_state(brightness=75)
devices[0].set_state(bulb_colormode=0)
devices[0].set_state(blue=255)
devices[0].set_state(red=0)
devices[0].set_state(green=128)
devices[0].set_state(bulb_colormode=1)
Comments
  • Broadlink RM4 PRO is not able to learn or to send RF Signal

    Broadlink RM4 PRO is not able to learn or to send RF Signal

    Unsure if this is the right place to raise this issue, however, I cam across https://github.com/mjg59/python-broadlink/issues/355 which relates to a similar issue except with IR. Currently, I am trying to get my RM4 Pro to work with the HA and having issues bring able to learn RF (IR learns and sends no problem at all) with both python-broadlink and Home assistant. (I also have an issue with it as a sensor (temperature and humidity) - although not that concerned/interested in this side at the moment)

    Current Setup Home Assistant 0.109.3 Broadlink RM4 Pro Added to network using python-broadlink - PASS when I attempt devices[0].host[0] > ‘192.168.1.172’ - PASS devices[0].get_type() > ‘Unknown’ - Cant get the type (so this may be a concern or compatibility issue) devices[0].enter_learning() > AttributeError: device instance has no attribute ‘enter_learning’ _FAIL

    Under Home assistant Added to HA as switch - configuration.yaml switch: platform: broadlink host: 192.168.1.172 mac: 24:df:a7:b9:c0:5a type: rm4_pro timeout: 15 retry: 5 switches: tv_samsung_power: friendly_name: "Samsung TV Power" command_on: IRSTRING command_off: IRSTRING When I run broadlink.learn

    • Red LED comes on
    • I can capture IR without an issue as I did with the Samsung TV Power
    • UNABLE TO CAPTURE ANY RF

    As far as the sensor is concerned sensor: platform: broadlink host: 192.168.1.172 mac: 24:df:a7:b9:c0:5a type: rm4_pro monitored_conditions: temperature humidity Both Temperature and Humidity just show a value of 0

    Do you know if anyone has been successful with the RM4 Pro and RF?

    Another point is that I cant get the RM4 Pro to work with e-control (or broadlink manager) so have not been able to get any RF packets to test it broadlink.send command to see if that works.

    opened by Virtual-Nomad 123
  • "Broadlink RM4c mini" support

    Hello

    I bought "Broadlink RM4c mini" but it doesn't work with python-broadlink

    It see it but don't connect.

    on broadlink_discovery: Discovering... Error authenticating with device : ('192.168.1.6', 80) on broadlink_cli: Traceback (most recent call last): File "./broadlink_cli", line 95, in <module> mac = bytearray.fromhex(values[2]) ValueError: non-hexadecimal number found in fromhex() arg at position 2

    Best regards ArchGalileu

    opened by ArchGalileu 118
  • Add support for S3 Hub and LC-1 (1,2&3 gang) light switches

    Add support for S3 Hub and LC-1 (1,2&3 gang) light switches

    Context

    Added new device

    Proposed change

    Type of change

    • [ ] Dependency upgrade
    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [X] New device
    • [ ] New product id (the device is already supported with a different id)
    • [ ] New feature (which adds functionality to an existing device)
    • [ ] Breaking change (fix/feature causing existing functionality to break)
    • [ ] Code quality improvements to existing code or addition of tests
    • [ ] Documentation

    Additional information

    Here is the implementation hub.py - the sub device ids (did) can be found in the app listed as MAC addresses

    >>> import broadlink
    >>> device = broadlink.hello('192.168.1.99')
    >>> device.auth()
    True
    >>> device.get_state("00000000000000000000a043b0d0783a")
    {'pwr1': 0, 'pwr2': 0, 'plugmode': 0, 'hb_timeout': 180, 'lb_online1': 1}
    >>> device.set_state("00000000000000000000a043b0d0783a",1)
    {'pwr1': 1, 'pwr2': 0, 'plugmode': 0, 'hb_timeout': 180, 'lb_online1': 1}
    >>> device.set_state("00000000000000000000a043b0d0783a",0,1)
    {'pwr1': 0, 'pwr2': 1, 'plugmode': 0, 'hb_timeout': 180, 'lb_online1': 1}
    >>> device.set_state("00000000000000000000a043b0d0783a",None,1)
    {'pwr1': 0, 'pwr2': 1, 'plugmode': 0, 'hb_timeout': 180, 'lb_online1': 1}
    >>> device.get_subdevices()
    [{'did': '00000000000000000000a043b0d06f11', 'pid': '0000000000000000000000001f650000', 'name': 'simpfc_cli', 'offline': 0}, {'did': '00000000000000000000a043b0d0783a', 'pid': '0000000000000000000000001f650000', 'name': 'simpfc_cli', 'offline': 0}, {'did': '00000000000000000000a043b0d06afa', 'pid': '00000000000000000000000020650000', 'name': 'simpfc_cli', 'offline': 0}, {'did': '00000000000000000000a043b0d06963', 'pid': '00000000000000000000000020650000', 'name': 'simpfc_cli', 'offline': 1}, {'did': '00000000000000000000a043b0d0711f', 'pid': '0000000000000000000000001f650000', 'name': 'simpfc_cli', 'offline': 0}, {'did': '00000000000000000000a043b0d06d2a', 'pid': '0000000000000000000000001f650000', 'name': 'simpfc_cli', 'offline': 0}, {'did': '00000000000000000000a043b0d06ed8', 'pid': '0000000000000000000000001f650000', 'name': 'simpfc_cli', 'offline': 0}, {'did': '00000000000000000000a043b0d063df', 'pid': '00000000000000000000000020650000', 'name': 'simpfc_cli', 'offline': 1}]
    
    • This PR fixes issue: fixes #647
    • This PR is related to:
    • Link to documentation pull request:

    Checklist

    • [X] The code change is tested and works locally.
    • [ ] The code has been formatted using Black.
    • [ ] The code follows the Zen of Python.
    • [ ] I am creating the Pull Request against the correct branch.
    • [X] Documentation added/updated.
    feature 
    opened by stevendodd 73
  • Add Support for Broadlink RM4 pro (0x653C)

    Add Support for Broadlink RM4 pro (0x653C)

    Seems like it's not supported for Broadlink RM4 pro (0x653C)

    Originally posted by @lukeclx in https://github.com/mjg59/python-broadlink/issues/472#issuecomment-731774318

    Home Assistant 0.118.3

    opened by lukeclx 49
  • StorageError: The device storage is full while learning and workaround

    StorageError: The device storage is full while learning and workaround

    I recently got a new Broadlink RM mini 3 from Amazon US, the device type is 0x5F36. With python-broadlink, I am able to "learn" a few IR code, it is working fine. After a few codes learned, the device starts to complain "The device storage is full" error. This problem cannot be resolved by resetting the device, and I am pretty desperate at this point.

    On deciding whether I will need to return the device, I realize that: after using enter_learning() function, the device has white indicator on, which means it indeed reads the IR code, but the error only comes when I try to use check_data() function. Further tests indicate that as long as I commented out the check_error() statement, the check_data function can actually correctly reporting IR code.

    So I assume the "learning" functionality is actually writing IR codes into the device's memory, which, from what I see, is very much limited. Since there is no "erase" option given, I assume a lot of users are going to encounter the same problem. And, since most users of python-broadlink only need to read out the IR code instead of really using the learning function, I think it would be great if an option for temporarily disabling the error check for full device storage could be given.

    opened by chazeon 41
  • Add support for Broadlink RM4C mini (0x6539)

    Add support for Broadlink RM4C mini (0x6539)

    Add support for Broadlink RM4C mini (0x6539) https://github.com/mjg59/python-broadlink/pull/411#issuecomment-728289482 https://github.com/home-assistant/core/issues/42983#issuecomment-729802091

    opened by felipediel 40
  • Additional device support

    Additional device support

    Hi all,

    thanks for your work so far on this.

    I want to use it with a Broadlink based heating controller ("Hysen HY02B05H", photo here: http://peter.windridge.org.uk/playing-with-cheap-iot-devices/20171120_163450.jpg ).

    I can .discover() and .auth() the device. The devtype is: 0x4ead.

    (1) Has anyone started working on this device? (2) If not, I need to capture packets from the Android app (which calls a libBLNetwork.so binary). I tried wireshark on Ubuntu but setting promiscuous mode on my laptop doesn't seem to work. I had considered install the Android SDK emulator to run the app on my PC but this seems like a lot of faff. Is there any easier way? (Sorry this question is not directly related to python-broadlink so I don't mind being told to take it elsewhere :))

    My goals are:

    • read room temperature
    • put control in manual mode
    • change temperature

    I have not tried sending the device codes from check_temperature() etc for fear of bricking it...

    Peter

    opened by ptd006 38
  • Do we need to choose between using this library or the official app exclusively?

    Do we need to choose between using this library or the official app exclusively?

    Here my steps that made me think about the question in title of the issue...

    1. I had my devices added to the official app.
    2. I tried to use broadlink_discovery and it was failing the authentication process.
    3. I followed some steps that I found somewhere in old closed issues to remove the devices from the app and reset them.
    4. I ran debug.py and both devices autheticated successfully.
    5. I re-added the devices to the official app and the library stopped working.

    My devices are 0x6026 and 0x62be.

    So my question is: Do we need to choose between using this library or the official app exclusively?

    opened by w35l3y 36
  • Add support for 0x5f36 devices and RM4 series

    Add support for 0x5f36 devices and RM4 series

    These devices require a special header in the payload. The rest is the same.

    Related issues:

    RM 3 Mini (0x5f36) https://github.com/mjg59/python-broadlink/issues/307 https://github.com/mjg59/python-broadlink/issues/308 https://github.com/home-assistant/core/issues/30215 https://github.com/home-assistant/core/issues/23566 https://github.com/lprhodes/homebridge-broadlink-rm/issues/551

    RM4 series https://github.com/mjg59/python-broadlink/issues/301 https://github.com/mjg59/python-broadlink/issues/312

    opened by felipediel 36
  • Update packet count in the authentication step

    Update packet count in the authentication step

    Context

    The counter comes in bytes 0x28 and 0x29 and is used to identify the packet. If the device receives a packet with the same counter, the command is not executed twice. This can be reproduced with the following code:

    d = blk.hello("192.168.0.12")  # Example device
    d.auth()
    d.send_data(b64decode("sv8kAAUGEwYGDAsGBgYGBgUMCwsLBgUGBgYGBgYGBgsLCwYGCwYGDAAAAAA=="))
    
    # Same counter, this command won't be executed.
    d.count -= 1
    d.send_data(b64decode("sv8kAAUGEwYGDAsGBgYGBgUMCwsLBgUGBgYGBgYGBgsLCwYGCwYGDAAAAAA=="))
    

    This is the expected behavior. We are already using this. When the timeout is reached, we send the packet again with the same counter without worrying about commands being executed twice.

    The problem

    When we re-instantiate the controller or restart the application, the counter is lost. So if we try something like this:

    d = blk.hello("192.168.0.12")  # Example device
    d.auth()
    d.send_data(b64decode("sv8kAAUGEwYGDAsGBgYGBgUMCwsLBgUGBgYGBgYGBgsLCwYGCwYGDAAAAAA=="))
    
    # Same device, but we've lost the counter
    d = blk.hello("192.168.0.12")
    d.auth()
    d.send_data(b64decode("sv8kAAUGEwYGDAsGBgYGBgUMCwsLBgUGBgYGBgYGBgsLCwYGCwYGDAAAAAA=="))
    

    The device gets crazy because the counter is wrong and it stops eliminating duplicate packets. So if we send the same packet twice, even with the same counter, the device executes two different commands.

    The code we are sending is an easy way to reproduce the issue. It is a blocking RF code with 255 repetitions. The timeout is reached 3 times, 3 packets are sent and 3 different commands are executed. This wouldn't happen if the counter was persistent, so...

    The solution

    I propose to update the counter when we authenticate to the device, so this information will always be up to date, even if we restart the application.

    Fixes https://github.com/home-assistant/core/issues/41957 Fixes https://github.com/home-assistant/core/issues/37000

    opened by felipediel 35
  • Create SP3S class and improve energy monitoring

    Create SP3S class and improve energy monitoring

    Breaking change

    Create a new SP3S class for these devices. Applications need to use the correct class to support get_energy().

    The problem

    Some SP2 devices (PID starting with 0x27) support get_energy(), but the firmware is different from SP3S, so we need to create another method.

    From: https://github.com/mjg59/python-broadlink/issues/413#issue-693577696 https://github.com/mjg59/python-broadlink/issues/200#issuecomment-409548956

    Proposed changes

    • Create a new class for SP3S with the current get_energy() method (only works for SP3S).
    • Create a new get_energy() method for the SP2 class.

    Need help with tests

    These smart plugs don't support energy monitoring. They respond to sp3s.get_energy() with CommandNotSupportedError and StorageError. This is the behavior we had in the past, so we were catching the exceptions eg here.

    It would be interesting to see how they respond to this new sp2.get_energy() method before the code is merged. So, if anyone has the smart plugs on the list, please help to test this method.

    On your PC:

    # Create a venv (not mandatory, but recommended)
    python3 -m venv venv
    source venv/bin/activate
    
    # Install this branch
    pip3 install git+https://github.com/felipediel/pytho[email protected] --force-reinstall
    
    ## Run Python 3
    python3
    

    Now let's see how the device respond to get_energy():

    >>> import broadlink as blk
    >>> d = blk.hello("192.168.0.16")  # Example device
    >>> d.auth()
    >>> d.get_energy()
    

    Thanks in advance!

    opened by felipediel 30
  • How to discover devices in network with different IP

    How to discover devices in network with different IP

    Hi,

    How to detect devices on another network? For example: I am in a network 192.168.1.0/24 and I have a broadlink device on 192.168.1.20 and over this network I have another network with 10.0.0.1/24 where there is a broadlink with address 10.0.0.10.

    What should the function broadlink.discover look like to find both broadlink devices when I am on the network 192.168.1.0 I will add that I can see all devices from 192.168.1.0 as well as from 10.0.0.1

    opened by kalwinskidawid 0
  • Readings for switch SCB1E not divided by 1000

    Readings for switch SCB1E not divided by 1000

    Hi!

    I just installed a SCB1E to power and monitor a small AC unit with HomeAssistant, after powering on (the SCB1E ) i found that the values returned are incorrect (not divided by 1000).

    Wrote a simple script to test the switch directly with python-broadlink and the error is also present:

    import broadlink

    switch = broadlink.switch.sp4(('...', 80), mac=b'...', devtype=42347, timeout=10, name='SCB1E', model='SCB1E', manufacturer='Broadlink', is_locked=False) switch.auth() print(switch.get_state())

    For example the reading when the AC unit is off is:

    {'pwr': 1, 'indicator': 0, 'maxworktime': 0, 'current': 35, 'volt': 223900, 'power': 750, 'totalconsum': 0, 'overload': 0, 'childlock': 0}

    and when it is on:

    {'pwr': 1, 'indicator': 0, 'maxworktime': 0, 'current': 3879, 'volt': 218600, 'power': 833360, 'totalconsum': 30, 'overload': 0, 'childlock': 0}

    The device is being identified as a SP4 by the discover method:

    broadlink.switch.sp4(('...', 80), mac=b'...', devtype=42347, timeout=10, name='SCB1E', model='SCB1E', manufacturer='Broadlink', is_locked=False)

    Trying to use the SP4B class returns the following exception:

    broadlink.exceptions.StorageError: [Errno -5] The device storage is full

    opened by Gongui 0
  • mjg59

    mjg59

    Context

    Proposed change

    Type of change

    • [ ] Dependency upgrade
    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] New device
    • [ ] New product id (the device is already supported with a different id)
    • [ ] New feature (which adds functionality to an existing device)
    • [ ] Breaking change (fix/feature causing existing functionality to break)
    • [ ] Code quality improvements to existing code or addition of tests
    • [ ] Documentation

    Additional information

    • This PR fixes issue: fixes #
    • This PR is related to:
    • Link to documentation pull request:

    Checklist

    • [x] The code change is tested and works locally.
    • [x] The code has been formatted using Black.
    • [x] The code follows the Zen of Python.
    • [x] I am creating the Pull Request against the correct branch.
    • [x] Documentation added/updated.

    Context

    Proposed change

    Type of change

    • [x] Dependency upgrade
    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [x] New device
    • [x] New product id (the device is already supported with a different id)
    • [x] New feature (which adds functionality to an existing device)
    • [ ] Breaking change (fix/feature causing existing functionality to break)
    • [x] Code quality improvements to existing code or addition of tests
    • [ ] Documentation

    Additional information

    • This PR fixes issue: fixes #
    • This PR is related to:
    • Link to documentation pull request:

    Checklist

    • [x] The code change is tested and works locally.
    • [ ] The code has been formatted using Black.
    • [ ] The code follows the Zen of Python.
    • [ ] I am creating the Pull Request against the correct branch.
    • [x] Documentation added/updated.
    opened by PapooHA 0
  • Added support for Luceco Smart! Downlights

    Added support for Luceco Smart! Downlights

    Thank you for creating this project, its been a great help in getting my smart home fully operational.

    This PR adds support for the Luceco Smart Home Downloads.

    They need to be configured as a broadlink device in fast flashing AP mode but this change makes them controllable.

    opened by Crashandburnds 0
  • New BroadLink device -

    New BroadLink device -

    I have purchased one of these lights https://www.bg-home.uk/castra-floodlight which I believe uses a Broadlink chip..

    I have tried using the cli from this repository and it finds the other Broadlink devices on my networks but seems to fail when finding the new device (see image)

    cli_error

    I did log the same issue before I tried using the CLI. This gives a bit more details about the chip type.

    https://github.com/mjg59/python-broadlink/issues/725

    The mac address of the new device also points to being a Broadlink chip as it starts ec:0b:ae:

    Is it possible to get support added? I can try and provide as much technical as I can about the device.

    Thanks

    Rob

    opened by robertdavies 0
Releases(0.18.3)
  • 0.18.3(Nov 20, 2022)

    Changelog

    • Add support for RM4C mini (0x520D) #694
    • Add support for SP4L-US (0x648C) #707
    • Add support for RM4C mate (0x5211) #709
    • Add support for RM4 mini (0x521C) #710
    • Add support for LB1 (0x644B) #717
    • Fix Github actions #727
    Source code(tar.gz)
    Source code(zip)
  • 0.18.2(May 23, 2022)

    Changelog

    • Add support for Broadlink RM4 mini (0x5216) #671
    • Add support for Broadlink RM4 pro (0x520B) #673
    • Add support for SP4L-UK 0xA569 #677
    • Fixing typo in rm4pro device definitions #682
    • Add support for Bestcon RM4C pro (0x5218) #683
    • Add support for Broadlink RM4 TV mate (0x5212) #684
    • Add support for Broadlink RM4 mini (0x520C) #685
    Source code(tar.gz)
    Source code(zip)
  • 0.18.1(Mar 19, 2022)

  • 0.18.0(Oct 17, 2021)

    Breaking changes

    • Rename broadlink.device.device to broadlink.device.Device.
    • Change crc16() to CRC16.calculate()
    • Change hysen.TYPE from "Hysen heating controller" to "HYS".
    • Change hysen.model from "HY02B05H" to "HY02/HY03".
    • Remove local_ip_address option from broadlink.hello()
    • Refactor SUPPORTED_TYPES.

    Before

    SUPPORTED_TYPES = {
        0x0000: (sp1, "SP1", "Broadlink"),
        0x2717: (sp2, "NEO", "Ankuoo"),
        0x2719: (sp2, "SP2-compatible", "Honeywell"),
        0x271A: (sp2, "SP2-compatible", "Honeywell"),
        ...
    }
    

    After

    SUPPORTED_TYPES = {
        sp1: {
            0x0000: ("SP1", "Broadlink"),
        },
        sp2: {
            0x2717: ("NEO", "Ankuoo"),
            0x2719: ("SP2-compatible", "Honeywell"),
            0x271A: ("SP2-compatible", "Honeywell"),
            ...
        }
        ...
    }
    

    Changelog:

    • Change the type and model of the hysen class (#627)
    • Add pull request template (#626)
    • Improve README.md (#625)
    • Fix indentation of README.md (#624)
    • Add support for Broadlink SCB1E (0xA56B) (#623)
    • Fix flake8 tests (#622)
    • Add support for Clas Ohlson SL-2 E14 (0x6065) (#600)
    • Add support for Broadlink RM mini 3 (0x27DC) (#594)
    • Add support for Broadlink SP4L-EU (0xA56C) (#593)
    • Refactor SUPPORTED_TYPES (#592)
    • Remove local_ip_address option from hello() (#591)
    • Add support for Broadlink SP4L-AU (0x757B) (#590)
    • Add support for Broadlink RM mini 3 (0x6507) (#589)
    • Rename the lb27r1 class to lb2 (#586)
    • Improve code quality (#585)
    • Move constants to const.py (#584)
    • Add support for Broadlink SP4L-EU (0xA5D3) (#582)
    • Add support for Broadlink SP4L-CN (0x7568) (#577)
    • Use the absolute position to read the lock status (#575)
    • Improve code quality (#572)
    • Use CamelCase for the Device class (#570)
    • Raise exceptions explicitly (#569)
    • Add support for Broadlink RM4C pro (0x6184) (#568)
    • Segregate CRC16.get_table() from CRC16.calculate() (#567)
    • Encapsulate crc16() to avoid global (#566)
    • Improve CRC-16 function (#565)
    • Make better use of namespaces (#564)
    • Add support for Broadlink LB27 R1 (0xA4F4) (#557)
    • Add support for Broadlink SP4L-UK (0x7587) (#561)
    • Add support for Broadlink SCB2 (0x6494) (#558)
    • Improve the CLI (#555)
    • Add a TROUBLESHOOTING doc with WiFi password notes (#563)
    Source code(tar.gz)
    Source code(zip)
  • 0.17.0(Mar 12, 2021)

Owner
Matthew Garrett
Matthew Garrett
This Home Assistant custom component adding support for controlling Midea dehumidifiers on local network.

This custom component for Home assistant adds support for Midea dehumidifier appliances via the local area network. homeassistant-midea-dehumidifier-l

Nenad Bogojevic 91 Dec 28, 2022
Python script: Enphase Envoy mqtt json for Home Assistant

A Python script that takes a real time stream from Enphase Envoy and publishes to a mqtt broker. This can then be used within Home Assistant or for other applications. The data updates at least once

29 Dec 27, 2022
Implemented robot inverse kinematics.

robot_inverse_kinematics Project setup # put the package in the workspace $ cd ~/catkin_ws/ $ catkin_make $ source devel/setup.bash Description In thi

Jianming Han 2 Dec 08, 2022
A 3rd party Moonraker component to create timelapse of 3D prints.

A 3rd party Moonraker component to create timelapse of 3D prints.

Mainsail-Crew 166 Dec 26, 2022
The main aim of this project is to avoid the accidents in shredding ( Waste Recycling Industry )

shredder-Machine-Hand-Safety The main aim of this project is to avoid the accidents in shredding ( Waste Recycling Industry ) . The Basic function of

Shubham Chaudhari 1 Nov 15, 2021
New armachat based on Raspberry Pi PICO an Circuitpython code

Armachat-circuitpython New Armachat based on Raspberry Pi PICO an Circuitpython code Software working features: send message with header and store to

Peter Misenko 44 Dec 24, 2022
DNP3 Stalker is a project to analyze and interact with DNP3 devices

DNP3 Stalker Purpose DNP3 Stalker is a project to analyze and interact with DNP3

Cutaway Security, LLC. 2 Feb 10, 2022
Python Client for ESPHome native API. Used by Home Assistant.

aioesphomeapi aioesphomeapi allows you to interact with devices flashed with ESPHome. Installation The module is available from the Python Package Ind

ESPHome 76 Jan 04, 2023
Resmed_myair_sensors - This is a Home Assistant custom component to pull daily CPAP data from ResMed's myAir service using an undocumented API

resmed_myair This component will set up the following platforms. Platform Description sensor Show info from the myAir API. Installation Using the tool

Preston Tamkin 17 Dec 29, 2022
Isaac Gym Environments for Legged Robots

Isaac Gym Environments for Legged Robots This repository provides the environment used to train ANYmal (and other robots) to walk on rough terrain usi

Robotic Systems Lab - Legged Robotics at ETH Zürich 372 Jan 08, 2023
Playing diabolo with two robot arms in ROS + Gazebo

Playing diabolo with robots This repository holds the ROS packages for playing diabolo with two UR5e robot arms on ROS Melodic (Ubuntu 18.04). Read ou

23 Dec 18, 2022
Robo Arm :: Rigging is a rigging addon for Blender that helps animating industrial robotic arms.

Robo Arm :: Rigging Robo Arm :: Rigging is a rigging addon for Blender that helps animating industrial robotic arms. It construct serial links(a kind

2 Nov 18, 2021
BMP180 sensor driver for Home Assistant used in Raspberry Pi

BMP180 sensor driver for Home Assistant used in Raspberry Pi Custom component BMP180 sensor for Home Assistant. Copy the content of this directory to

747Developments 1 Dec 17, 2021
Controlling fireworks with micropython

Controlling-fireworks-with-micropython How the code works line 1-4 from machine

Montso Mokake 1 Jan 08, 2022
Baseline model for Augmented Home Assistant

Dataset Preparation Step 1. Rename the Virtual-Home output directory to 'vh.[name]', for example: 'vh.door' Make sure the directory contains 100+ fram

Stanford HCI 1 Aug 24, 2022
Detic ros - A simple ROS wrapper for Detic instance segmentation using pre-trained dataset

Detic ros - A simple ROS wrapper for Detic instance segmentation using pre-trained dataset

Hirokazu Ishida 12 Nov 19, 2022
This OctoPrint plugin will make the initial connection to 3D Hub a breeze

3D Hub Connector This OctoPrint plugin will make the initial connection to 3D Hub a breeze. In future it will help in setting up a tunnel connection a

3D Hub 2 Aug 03, 2022
A battery pack simulation tool that uses the PyBaMM framework

Overview of liionpack liionpack takes a 1D PyBaMM model and makes it into a pack. You can either specify the configuration e.g. 16 cells in parallel a

PyBaMM Team 40 Jan 05, 2023
Pihole-eink-display - A simple Python script to display PiHole statistics on an eInk Display

Pihole-eink-display - A simple Python script to display PiHole statistics on an eInk Display

Mark McIntyre 64 Oct 11, 2022
rPico KMK powered macropad with IPS screen

MacroPact rPico KMK powered macropad with IPS screen Idea/Desing: Sean Yin Build/Coding: kbjunky ( In case of any problems hit me up on Discord kbjunk

81 Dec 21, 2022