Python Client for ESPHome native API. Used by Home Assistant.

Overview

aioesphomeapi

aioesphomeapi allows you to interact with devices flashed with ESPHome.

Installation

The module is available from the Python Package Index.

$ pip3 install aioesphomeapi

Usage

It's required that you enable the Native API component for the device.

# Example configuration entry
api:
  password: 'MyPassword'

Check the output to get the local address of the device or use the name:``under ``esphome: from the device configuration.

[17:56:38][C][api:095]: API Server:
[17:56:38][C][api:096]:   Address: api_test.local:6053

The sample code below will connect to the device and retrieve details.

import aioesphomeapi
import asyncio

async def main():
    """Connect to an ESPHome device and get details."""

    # Establish connection
    api = aioesphomeapi.APIClient("api_test.local", 6053, "MyPassword")
    await api.connect(login=True)

    # Get API version of the device's firmware
    print(api.api_version)

    # Show device details
    device_info = await api.device_info()
    print(device_info)

    # List all entities of the device
    entities = await api.list_entities_services()
    print(entities)

 loop = asyncio.get_event_loop()
 loop.run_until_complete(main())

Subscribe to state changes of an ESPHome device.

import aioesphomeapi
import asyncio

async def main():
    """Connect to an ESPHome device and wait for state changes."""
    cli = aioesphomeapi.APIClient("api_test.local", 6053, "MyPassword")

    await cli.connect(login=True)

    def change_callback(state):
        """Print the state changes of the device.."""
        print(state)

    # Subscribe to the state changes
    await cli.subscribe_states(change_callback)

loop = asyncio.get_event_loop()
try:
    asyncio.ensure_future(main())
    loop.run_forever()
except KeyboardInterrupt:
    pass
finally:
    loop.close()

Other examples:

Development

For development is recommended to use a Python virtual environment (venv).

# Setup virtualenv (optional)
$ python3 -m venv .
$ source bin/activate
# Install aioesphomeapi and development depenencies
$ pip3 install -e .
$ pip3 install -r requirements_test.txt

# Run linters & test
$ script/lint
# Update protobuf _pb2.py definitions (requires a protobuf compiler installation)
$ script/gen-protoc

License

aioesphomeapi is licensed under MIT, for more details check LICENSE.

Comments
  • Fix failure to reconnect when the process task raises an exception during decoding a protobuf message

    Fix failure to reconnect when the process task raises an exception during decoding a protobuf message

    When the process loop raised an exception it would bubble through into the cleanup which would prevent the disconnect callback from being fired. In this case it was UnicodeDecodeError from a bad name in advertisment. We now handle unicode decode errors by replacing invalid utf-8 and catch the exception so it does not prevent the disconnected callback from running

    seen https://github.com/home-assistant/core/pull/83888#issuecomment-1347670905

    opened by bdraco 11
  • Optimize throughput of api to decrease latency

    Optimize throughput of api to decrease latency

    We still have a bit of latency with the reader because we have to lock and unlock every loop. Once we have finished the handshake (noise only) we hold the read lock for the duration of the connection to avoid locking/unlocking on every read

    opened by bdraco 7
  • Can't connect after latest update

    Can't connect after latest update "A Stream Socket was expected" Error

    Traceback (most recent call last): File "C:\Users\Administrator\aio\aio\lib\site-packages\aioesphomeapi\client.py", line 176, in connect await self._connection.connect() File "C:\Users\Administrator\aio\aio\lib\site-packages\aioesphomeapi\connection.py", line 157, in connect self._socket_reader, self._socket_writer = await asyncio.open_connection( File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\streams.py", line 52, in open_connection transport, _ = await loop.create_connection( File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 1047, in create_connection raise ValueError( ValueError: A Stream Socket was expected, got <socket.socket fd=592, family=AddressFamily.AF_INET, type=0, proto=6, laddr=('192.168.2.4', 32149), raddr=('192.168.2.25', 6053)> The above exception was the direct cause of the following exception: Traceback (most recent call last): File "t.py", line 24, in <module> loop.run_until_complete(main()) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 616, in run_until_complete return future.result() File "t.py", line 10, in main await api.connect(login=True) File "C:\Users\Administrator\aio\aio\lib\site-packages\aioesphomeapi\client.py", line 184, in connect raise APIConnectionError( aioesphomeapi.core.APIConnectionError: Unexpected error while connecting to 192.168.2.25: A Stream Socket was expected, got <socket.socket fd=592, family=AddressFamily.AF_INET, type=0, proto=6, laddr=('192.168.2.4', 32149), raddr=('192.168.2.25', 6053)>

    After replacing, in line 132 of connection.py

    self._socket = socket.socket( family=addr.family, type=addr.type, proto=addr.proto )

    with

    self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    The problem is fixed.

    opened by v-alvex 7
  • Climate

    Climate

    Update esphome climate schema to be in sync with HA climate schema, intended to be backward compatible, so migration can happen incrementally. This PR is part of a bundle, as aioesphomeapi, HA esphome component also needs to change. Other relate PRs:

    • https://github.com/esphome/esphome/pull/1471
    • https://github.com/home-assistant/core/pull/48116
    opened by Lumpusz 7
  • Avoid executor jump to resolve ip addresses

    Avoid executor jump to resolve ip addresses

    Similar to #26

    Avoids executor overload at statup with lots of esphome devices

    2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.189, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.248, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.234, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.206, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.220, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.61, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.133, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.3, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.203, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.178, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.173, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.106.243, 6053, 0, 0, 6, 0), kwargs: {} 2021-09-17 07:34:00 DEBUG (MainThread) [homeassistant.util.executor] Calling executor with function: <function getaddrinfo at 0x7f96b7915a60>, args: (192.168.107.170, 6053, 0, 0, 6, 0), kwargs: {}

    opened by bdraco 5
  • Using adressable_set from aioesphomeapi

    Using adressable_set from aioesphomeapi

    I'm trying to use aioesphomeapi from a Python program to drive some leds with fastled. The aim is to choose which color on which led i wanna to turn on. I was thinking of sending an array like this one : [ n_led, color_r, color_b, color_g , n_led_next, color_r, color_b, color_g ... ] I'm confuse on how to do that, I try to read the documentation but i do not understand on how to add an argument on a call from aiesphomeapi and what to add on the YAML for my ESP.

    Can somebody have an example or explain to me how to do it ?

    Thanks

    opened by fanchlegal 5
  • Move message parsing out of the read loop

    Move message parsing out of the read loop

    To further reduce the pressure on the esp, we want to read and drain the buffer as fast as possible, and since we have to wait to read while the data is processing we want the read loop to read as much as possible first to keep the latency down and reduce the memory pressure on the esp.

    opened by bdraco 4
  • Adjust ble timeouts to be longer than bleak timeouts

    Adjust ble timeouts to be longer than bleak timeouts

    The default timeouts were shorter than the timeout used by bleak and the surrounding stack which could lead to unexplained timeout failures.

    fixes #286

    opened by bdraco 4
  • home assistant logs

    home assistant logs "Error doing job: Task was destroyed but it is pending!"

    home assistant logs "Error doing job: Task was destroyed but it is pending!". also, HA fails to connect to some devices sometimes. after the failure, a few seconds later, it reconnects successfully. I'm not sure they are related. installed HA via pip + virtualenv.

    homeassistant              2022.10.3
    aioesphomeapi              11.1.0
    
    2022-10-12 11:31:23.830 ERROR (MainThread) [homeassistant] Error doing job: Task was destroyed but it is pending!:   File "/usr/home/hass/hass/.tox/python/bin/hass", line 10, in <module>
        sys.exit(main())                                                                                                                    
      File "/usr/home/hass/hass/.tox/python/lib/python3.9/site-packages/homeassistant/__main__.py", line 191, in main                       
        exit_code = runner.run(runtime_conf)                                                                                                
      File "/usr/home/hass/hass/.tox/python/lib/python3.9/site-packages/homeassistant/runner.py", line 119, in run                          
        return loop.run_until_complete(setup_and_run_hass(runtime_config))                                                                  
      File "/usr/local/lib/python3.9/asyncio/base_events.py", line 634, in run_until_complete                                               
        self.run_forever()                                                                                                                  
      File "/usr/local/lib/python3.9/asyncio/base_events.py", line 601, in run_forever                                                      
        self._run_once()                                                                                                                                                                                                                                                            
      File "/usr/local/lib/python3.9/asyncio/base_events.py", line 1897, in _run_once                                                       
        handle._run()                                                                                                                       
      File "/usr/local/lib/python3.9/asyncio/events.py", line 80, in _run                                                                   
        self._context.run(self._callback, *self._args)                                                                                      
      File "/usr/home/hass/hass/.tox/python/lib/python3.9/site-packages/aioesphomeapi/reconnect_logic.py", line 171, in _reconnect_loop                                                                                                                                             
        await self._reconnect_once()                                    
      File "/usr/home/hass/hass/.tox/python/lib/python3.9/site-packages/aioesphomeapi/reconnect_logic.py", line 166, in _reconnect_once
        await self._try_connect()                                       
      File "/usr/home/hass/hass/.tox/python/lib/python3.9/site-packages/aioesphomeapi/reconnect_logic.py", line 121, in _try_connect
        await self._cli.connect(on_stop=self._on_disconnect, login=True)                                                                    
      File "/usr/home/hass/hass/.tox/python/lib/python3.9/site-packages/aioesphomeapi/client.py", line 240, in connect                      
        await self._connection.connect(login=login)                                                                                         
      File "/usr/home/hass/hass/.tox/python/lib/python3.9/site-packages/aioesphomeapi/connection.py", line 305, in connect                  
        await _do_connect()                                             
      File "/usr/home/hass/hass/.tox/python/lib/python3.9/site-packages/aioesphomeapi/connection.py", line 294, in _do_connect              
        await self._connect_init_frame_helper()                         
      File "/usr/home/hass/hass/.tox/python/lib/python3.9/site-packages/aioesphomeapi/connection.py", line 205, in _connect_init_frame_helper
        asyncio.create_task(self._process_loop())                                                                                           
      File "/usr/local/lib/python3.9/asyncio/tasks.py", line 361, in create_task                                                            
        task = loop.create_task(coro)                                   
    
    opened by trombik 4
  • `ValueError: 6 is not a valid ClimateMode` when getting climate device entities

    `ValueError: 6 is not a valid ClimateMode` when getting climate device entities

    I'm encountering this error enumerating the entities of my climate device.

    This problem is occurring within Homeassistant as well (see logs).

    asyncio funkiness because I'm running in Jupyter.

    Successfully installed aioesphomeapi-2.8.0

    import nest_asyncio
    nest_asyncio.apply()
    import aioesphomeapi
    import asyncio
    
    async def main():
        """Connect to an ESPHome device and get details."""
        loop = asyncio.get_running_loop()
    
        # Establish connection
        api = aioesphomeapi.APIClient(loop, "prusa_enclosure.local", 6053, "")
        await api.connect(login=True)
    
        # Get API version of the device's firmware
        print(api.api_version)
    
        # Show device details
        device_info = await api.device_info()
    
        # List all entities of the device
        entities = await api.list_entities_services()
        for entity in entities[0]:
            print(entity)
    
    
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
    
    APIVersion(major=1, minor=4)
    
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-2-764d321eea0b> in <module>
         25 
         26 loop = asyncio.get_event_loop()
    ---> 27 loop.run_until_complete(main())
    
    ~/.venv3/lib/python3.9/site-packages/nest_asyncio.py in run_until_complete(self, future)
         68                 raise RuntimeError(
         69                     'Event loop stopped before Future completed.')
    ---> 70             return f.result()
         71 
         72     def _run_once(self):
    
    /usr/lib/python3.9/asyncio/futures.py in result(self)
        199         self.__log_traceback = False
        200         if self._exception is not None:
    --> 201             raise self._exception
        202         return self._result
        203 
    
    /usr/lib/python3.9/asyncio/tasks.py in __step(***failed resolving arguments***)
        254                 # We use the `send` method directly, because coroutines
        255                 # don't have `__iter__` and `__next__` methods.
    --> 256                 result = coro.send(None)
        257             else:
        258                 result = coro.throw(exc)
    
    <ipython-input-2-764d321eea0b> in main()
         19 
         20     # List all entities of the device
    ---> 21     entities = await api.list_entities_services()
         22     for entity in entities[0]:
         23         print(entity)
    
    ~/.venv3/lib/python3.9/site-packages/aioesphomeapi/client.py in list_entities_services(self)
        135             for key, _ in attr.fields_dict(cls).items():
        136                 kwargs[key] = getattr(msg, key)
    --> 137             entities.append(cls(**kwargs))
        138         return entities, services
        139 
    
    ~/.venv3/lib/python3.9/site-packages/aioesphomeapi/model.py in __init__(self, object_id, key, name, unique_id, supports_current_temperature, supports_two_point_target_temperature, supported_modes, visual_min_temperature, visual_max_temperature, visual_temperature_step, supports_away, supports_action, supported_fan_modes, supported_swing_modes)
          7     self.supports_two_point_target_temperature = supports_two_point_target_temperature
          8     if supported_modes is not NOTHING:
    ----> 9         self.supported_modes = __attr_converter_supported_modes(supported_modes)
         10     else:
         11         self.supported_modes = __attr_converter_supported_modes(__attr_factory_supported_modes())
    
    ~/.venv3/lib/python3.9/site-packages/aioesphomeapi/model.py in _convert_climate_modes(value)
        243 
        244 def _convert_climate_modes(value):
    --> 245     return [ClimateMode(val) for val in value]
        246 
        247 
    
    ~/.venv3/lib/python3.9/site-packages/aioesphomeapi/model.py in <listcomp>(.0)
        243 
        244 def _convert_climate_modes(value):
    --> 245     return [ClimateMode(val) for val in value]
        246 
        247 
    
    /usr/lib/python3.9/enum.py in __call__(cls, value, names, module, qualname, type, start)
        358         """
        359         if names is None:  # simple value lookup
    --> 360             return cls.__new__(cls, value)
        361         # otherwise, functional API: we're creating a new Enum type
        362         return cls._create_(
    
    /usr/lib/python3.9/enum.py in __new__(cls, value)
        675             ve_exc = ValueError("%r is not a valid %s" % (value, cls.__qualname__))
        676             if result is None and exc is None:
    --> 677                 raise ve_exc
        678             elif exc is None:
        679                 exc = TypeError(
    
    ValueError: 6 is not a valid ClimateMode
    
    esphome:
      name: prusa_enclosure
      platform: ESP32
      board: esp32dev
    
    wifi:
      ssid: ""
      password: ""
    
      # Enable fallback hotspot (captive portal) in case wifi connection fails
      ap:
        ssid: "Prusa Enclosure Fallback Hotspot"
        password: ""
    
    captive_portal:
    
    # Enable logging
    logger:
    
    # Enable Home Assistant API
    api:
    
    ota:
    
    output:
      - platform: ledc
        pin: GPIO32
        id: fan_output
        frequency: "25kHz"
    
      - platform: template
        id: fan_output_scaled
        type: float
        write_action:
          - output.set_level:
              id: fan_output
              level: !lambda |-
                     return (state ? state*.55+.20 : 0);
    
    light:
      - platform: monochromatic
        name: "Enclosure fan"
        output: fan_output_scaled
        gamma_correct: 1
        default_transition_length: 0s
    
      - platform: fastled_clockless
        chipset: WS2812B
        pin: GPIO26
        num_leds: 68
        rgb_order: GRB
        name: "Enclosure light"
    
    sensor:
      - platform: pulse_counter
        pin: GPIO33
        name: 'Fan speed'
        filters:
          - multiply: 0.5
        update_interval: 1s
            
      - platform: dht
        pin: 25
        temperature:
                name: "Enclosure temperature"
                id: "enclosure_temp"
                unit_of_measurement: "°C"
        humidity:
                name: "Enclosure humidity"
        update_interval: 1s
        model: DHT22
    
    
    climate:
      - platform: pid
        name: "Enclosure PID controller"
        id: pid_enclosure
        sensor: enclosure_temp
        default_target_temperature: 26.00C
        cool_output: fan_output
        control_parameters:
            kp: 0.25000
            ki: 0.00150
            kd: 0.15000
    
    
    switch:
      - platform: template
        name: "PID Autotune"
        turn_on_action:
          - climate.pid.autotune:
                  id: pid_enclosure
                  noiseband: 0.10
                  negative_output: -75%
    
    2021-06-16 09:15:10 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
    Traceback (most recent call last):
      File "/usr/src/homeassistant/homeassistant/components/esphome/__init__.py", line 214, in on_login
        entity_infos, services = await cli.list_entities_services()
      File "/usr/local/lib/python3.8/site-packages/aioesphomeapi/client.py", line 137, in list_entities_services
        entities.append(cls(**kwargs))
      File "<attrs generated init aioesphomeapi.model.ClimateInfo>", line 9, in __init__
        self.supported_modes = __attr_converter_supported_modes(supported_modes)
      File "/usr/local/lib/python3.8/site-packages/aioesphomeapi/model.py", line 245, in _convert_climate_modes
        return [ClimateMode(val) for val in value]
      File "/usr/local/lib/python3.8/site-packages/aioesphomeapi/model.py", line 245, in <listcomp>
        return [ClimateMode(val) for val in value]
      File "/usr/local/lib/python3.8/enum.py", line 339, in __call__
        return cls.__new__(cls, value)
      File "/usr/local/lib/python3.8/enum.py", line 662, in __new__
        raise ve_exc
    ValueError: 6 is not a valid ClimateMode
    
    opened by Quantum-cross 4
  • log level issue

    log level issue

    My ESPHome device publish some logs with log level DEBUG.

    If I try to subscribe to the log with subscribe_logs(log_callback, LOG_LEVEL_DEBUG) I receive nothing. Messages are received only with subscribe_logs(log_callback, LOG_LEVEL_VERBOSE) or subscribe_logs(log_callback, LOG_LEVEL_VERY_VERBOSE).

    Output example:

    level: LOG_LEVEL_VERBOSE
    message: "\033[0;36m[D][AirCon:976]: 0001776712: [=>] [BB 00 01 80 01 00 08 00] 1C 27 00 00 00 00 00 00 [1E 58] \033[0m"
    

    There is a string "[D]" in output. It means that message has LOG_LEVEL = DEBUG.

    It looks like an incorrect comparison somewhere in the code. "<" instead of "<=" or something like that.

    opened by GrKoR 4
  • Simplify connection flow with an asyncio.Protocol

    Simplify connection flow with an asyncio.Protocol

    This removes ~ 20k call_soons per minute which translates to a significant latency improvement (also reduces the run time by ~ 18-24%) with 7 ble proxies.

    With this change we can refactor a significant number of coroutines into normal functions.

    Eliminates:

    • read_loop
    • process_loop
    • queue
    opened by bdraco 5
  • Update mock requirement from <5,>=4.0.3 to >=4.0.3,<6

    Update mock requirement from <5,>=4.0.3 to >=4.0.3,<6

    Updates the requirements on mock to permit the latest version.

    Changelog

    Sourced from mock's changelog.

    5.0.0

    • gh-98624: Add a mutex to unittest.mock.NonCallableMock to protect concurrent access to mock attributes.

    • bpo-43478: Mocks can no longer be used as the specs for other Mocks. As a result, an already-mocked object cannot have an attribute mocked using autospec=True or be the subject of a create_autospec(...) call. This can uncover bugs in tests since these Mock-derived Mocks will always pass certain tests (e.g. isinstance) and builtin assert functions (e.g. assert_called_once_with) will unconditionally pass.

    • bpo-45156: Fixes infinite loop on :func:unittest.mock.seal of mocks created by :func:~unittest.create_autospec.

    • bpo-41403: Make :meth:mock.patch raise a :exc:TypeError with a relevant error message on invalid arg. Previously it allowed a cryptic :exc:AttributeError to escape.

    • gh-91803: Fix an error when using a method of objects mocked with :func:unittest.mock.create_autospec after it was sealed with :func:unittest.mock.seal function.

    • bpo-41877: AttributeError for suspected misspellings of assertions on mocks are now pointing out that the cause are misspelled assertions and also what to do if the misspelling is actually an intended attribute name. The unittest.mock document is also updated to reflect the current set of recognised misspellings.

    • bpo-43478: Mocks can no longer be provided as the specs for other Mocks. As a result, an already-mocked object cannot be passed to mock.Mock(). This can uncover bugs in tests since these Mock-derived Mocks will always pass certain tests (e.g. isinstance) and builtin assert functions (e.g. assert_called_once_with) will unconditionally pass.

    • bpo-45010: Remove support of special method __div__ in :mod:unittest.mock. It is not used in Python 3.

    • gh-84753: :func:inspect.iscoroutinefunction now properly returns True when an instance of :class:unittest.mock.AsyncMock is passed to it. This makes it consistent with behavior of :func:asyncio.iscoroutinefunction. Patch by Mehdi ABAAKOUK.

    • bpo-46852: Remove the undocumented private float.__set_format__() method, previously known as float.__setformat__() in Python 3.7. Its docstring said: "You probably don't want to use this function. It exists mainly to be used in Python's test suite." Patch by Victor Stinner.

    • gh-98086: Make sure patch.dict() can be applied on async functions.

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump actions/cache from 3.0.11 to 3.2.2

    Bump actions/cache from 3.0.11 to 3.2.2

    Bumps actions/cache from 3.0.11 to 3.2.2.

    Release notes

    Sourced from actions/cache's releases.

    v3.2.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/cache/compare/v3.2.1...v3.2.2

    v3.2.1

    What's Changed

    Full Changelog: https://github.com/actions/cache/compare/v3.2.0...v3.2.1

    v3.2.0

    What's Changed

    New Contributors

    ... (truncated)

    Changelog

    Sourced from actions/cache's changelog.

    3.0.11

    • Update toolkit version to 3.0.5 to include @actions/core@^1.10.0
    • Update @actions/cache to use updated saveState and setOutput functions from @actions/core@^1.10.0

    3.1.0-beta.1

    • Update @actions/cache on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. (issue)

    3.1.0-beta.2

    • Added support for fallback to gzip to restore old caches on windows.

    3.1.0-beta.3

    • Bug fixes for bsdtar fallback if gnutar not available and gzip fallback if cache saved using old cache action on windows.

    3.2.0-beta.1

    • Added two new actions - restore and save for granular control on cache.

    3.2.0

    • Released the two new actions - restore and save for granular control on cache

    3.2.1

    • Update @actions/cache on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. (issue)
    • Added support for fallback to gzip to restore old caches on windows.
    • Added logs for cache version in case of a cache miss.

    3.2.2

    • Reverted the changes made in 3.2.1 to use gnu tar and zstd by default on windows.
    Commits
    • 4723a57 Revert compression changes related to windows but keep version logging (#1049)
    • d1507cc Merge pull request #1042 from me-and/correct-readme-re-windows
    • 3337563 Merge branch 'main' into correct-readme-re-windows
    • 60c7666 save/README.md: Fix typo in example (#1040)
    • b053f2b Fix formatting error in restore/README.md (#1044)
    • 501277c README.md: remove outdated Windows cache tip link
    • c1a5de8 Upgrade codeql to v2 (#1023)
    • 9b0be58 Release compression related changes for windows (#1039)
    • c17f4bf GA for granular cache (#1035)
    • ac25611 docs: fix an invalid link in workarounds.md (#929)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Bump isort from 5.11.2 to 5.11.4

    Bump isort from 5.11.2 to 5.11.4

    Bumps isort from 5.11.2 to 5.11.4.

    Release notes

    Sourced from isort's releases.

    5.11.4

    Changes

    :package: Dependencies

    5.11.3

    Changes

    :beetle: Fixes

    :construction_worker: Continuous Integration

    v5.11.3

    Changes

    :beetle: Fixes

    :construction_worker: Continuous Integration

    Changelog

    Sourced from isort's changelog.

    5.11.4 December 21 2022

    5.11.3 December 16 2022

    Commits
    • 98390f5 Merge pull request #2059 from PyCQA/version/5.11.4
    • df69a05 Bump version 5.11.4
    • f9add58 Merge pull request #2058 from PyCQA/deps/poetry-1.3.1
    • 36caa91 Bump Poetry 1.3.1
    • 3c2e2d0 Merge pull request #1978 from mgorny/toml-test
    • 45d6abd Remove obsolete toml import from the test suite
    • 3020e0b Merge pull request #2057 from mgorny/poetry-install
    • a6fdbfd Stop installing documentation files to top-level site-packages
    • ff306f8 Fix tag template to match old standard
    • 227c4ae Merge pull request #2052 from hugovk/main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump pylint from 2.15.8 to 2.15.9

    Bump pylint from 2.15.8 to 2.15.9

    Bumps pylint from 2.15.8 to 2.15.9.

    Commits
    • 1ded4d0 Bump pylint to 2.15.9, update changelog (#7952)
    • 785c629 [testutil] More information in output for functional test fail (#7948)
    • 3c3ab98 [pypy3.8] Disable multiple-statements false positive on affected functional t...
    • dca3940 Fix inconsistent argument exit code when argparse exit with its own error cod...
    • 494e514 Fix ModuleNotFoundError when using pylint_django (#7940) (#7941)
    • 83668de fix: bump dill to >= 0.3.6, prevents tests hanging with python3.11 (#7918)
    • eadc308 [github actions] Fix enchant's install in the spelling job
    • 391323e Avoid hanging forever after a parallel job was killed (#7834) (#7930)
    • 4655b92 Prevent used-before-assignment in pattern matching with a guard (#7922) (#7...
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Home Assistant can not connected to ESPHome device due to: google.protobuf.message.DecodeError: Field number 0 is illegal.

    Home Assistant can not connected to ESPHome device due to: google.protobuf.message.DecodeError: Field number 0 is illegal.

    Error while reading incoming messages: Invalid preamble 5e 2022-12-13 12:14:38.800 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/aioesphomeapi/connection.py", line 137, in _do_cleanup await self._process_task File "/usr/local/lib/python3.10/site-packages/aioesphomeapi/connection.py", line 559, in _process_loop msg.ParseFromString(pkt.data) File "/usr/local/lib/python3.10/site-packages/google/protobuf/message.py", line 202, in ParseFromString return self.MergeFromString(serialized) File "/usr/local/lib/python3.10/site-packages/google/protobuf/internal/python_message.py", line 1128, in MergeFromString if self._InternalParse(serialized, 0, length) != length: File "/usr/local/lib/python3.10/site-packages/google/protobuf/internal/python_message.py", line 1178, in InternalParse raise message_mod.DecodeError('Field number 0 is illegal.') google.protobuf.message.DecodeError: Field number 0 is illegal.

    opened by abrilevskiy 13
Releases(v13.0.2)
  • v13.0.2(Dec 13, 2022)

    What's Changed

    • Fix failure to reconnect when the process task raises an exception during decoding a protobuf message (#339) @bdraco
    • Only start task if existing one is done (#337) @alexyao2015
    Source code(tar.gz)
    Source code(zip)
  • v13.0.1(Dec 4, 2022)

    What's Changed

    • Small speed up to parsing LE advertisement data (#330) @bdraco
    • Fix leak if send_message_callback_response raises (#334) @bdraco
    • Handle socket reset errors while reading (#333) @bdraco
    Source code(tar.gz)
    Source code(zip)
  • v13.0.0(Dec 2, 2022)

    What's Changed

    • Callback messages to listeners by type (#328) @bdraco
    • Optimize throughput of api to decrease latency (#327) @bdraco

    Breaking Changes

    • Add method to cancel bluetooth_gatt_start_notify upon ble device disconnect (#329) @bdraco
    Source code(tar.gz)
    Source code(zip)
  • v12.2.1(Nov 30, 2022)

    What's Changed

    • Reduce number of calls to readexactly (#324) @bdraco
    • Move message parsing out of the read loop (#323) @bdraco
    • Small speed ups to the bluetooth advertisement converts (#325) @bdraco
    • Fix bluetooth write without response (#326) @bdraco

    Dependencies

    2 changes
    • Bump types-protobuf from 3.20.4.6 to 4.21.0.1 (#321) @dependabot
    • Bump pylint from 2.15.6 to 2.15.7 (#322) @dependabot
    Source code(tar.gz)
    Source code(zip)
  • v12.2.0(Nov 29, 2022)

  • v12.1.0(Nov 29, 2022)

  • v12.0.1(Nov 28, 2022)

    What's Changed

    • Increase timeout while waiting for ListEntities to be done (#318) @jesserockz
    • Fix connection subscription leak on cancelation (#316) @bdraco

    Dependencies

    2 changes
    • Bump flake8 from 5.0.4 to 6.0.0 (#314) @dependabot
    • Bump types-protobuf from 3.20.4.5 to 3.20.4.6 (#313) @dependabot
    Source code(tar.gz)
    Source code(zip)
  • v12.0.0(Nov 22, 2022)

    What's Changed

    • Wait for BLE disconnect when connecting timeouts (#310) @bdraco
    • Update actions set-output to GITHUB_OUTPUT (#312) @jesserockz
    • Protobuf version upgrades (#307) @jesserockz

    Dependencies

    2 changes
    • Bump types-protobuf from 3.20.4.4 to 3.20.4.5 (#308) @dependabot
    • Bump pylint from 2.15.5 to 2.15.6 (#311) @dependabot
    Source code(tar.gz)
    Source code(zip)
  • v11.5.0(Nov 17, 2022)

    What's Changed

    • Add device class support to number (#309) @frenck
    • Catch error when task is stopped (#306) @jesserockz
    • Add vscode task to Generate files (#305) @jesserockz
    • Dev container (#302) @juliekoubova

    Dependencies

    2 changes
    • Bump mypy from 0.982 to 0.991 (#304) @dependabot
    • Bump types-protobuf from 3.20.4.2 to 3.20.4.4 (#300) @dependabot
    Source code(tar.gz)
    Source code(zip)
  • v11.4.3(Nov 6, 2022)

  • v11.4.2(Oct 31, 2022)

  • v11.4.1(Oct 31, 2022)

  • v11.4.0(Oct 30, 2022)

    What's Changed

    • Raise GATT errors on read and write etc (#272) @jesserockz
    • Fix race while disconnecting after connect timeout (#295) @bdraco
    Source code(tar.gz)
    Source code(zip)
  • v11.3.0(Oct 30, 2022)

    What's Changed

    • Disconnect ble device if connect attempt fails to recover slot (#293) @bdraco
    • Add esp ble error code mappings (#292) @bdraco

    Dependencies

    • Bump types-protobuf from 3.20.4.1 to 3.20.4.2 (#294) @dependabot
    Source code(tar.gz)
    Source code(zip)
  • v11.2.0(Oct 25, 2022)

    What's Changed

    • Get manufacturer name string from device (#290) @jesserockz
    • Adjust ble timeouts to be longer than bleak timeouts (#287) @bdraco
    • Fix permanent disconnect issue (#273) @alexyao2015

    Dependencies

    8 changes
    • Bump docker/build-push-action from 3.1.1 to 3.2.0 (#278) @dependabot
    • Bump types-protobuf from 3.20.4 to 3.20.4.1 (#284) @dependabot
    • Bump docker/login-action from 2.0.0 to 2.1.0 (#279) @dependabot
    • Bump docker/setup-qemu-action from 2.0.0 to 2.1.0 (#281) @dependabot
    • Bump actions/cache from 3.0.10 to 3.0.11 (#282) @dependabot
    • Bump docker/setup-buildx-action from 2.0.0 to 2.2.1 (#283) @dependabot
    • Bump black from 22.8.0 to 22.10.0 (#274) @dependabot
    • Bump pylint from 2.15.3 to 2.15.5 (#289) @dependabot
    Source code(tar.gz)
    Source code(zip)
  • v11.1.1(Oct 6, 2022)

    What's Changed

    • Bump actions/cache from 3.0.9 to 3.0.10 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/269
    • Bump mypy from 0.981 to 0.982 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/270
    • Fix process_task not ending correctly by @jesserockz in https://github.com/esphome/aioesphomeapi/pull/271

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v11.1.0...v11.1.1

    Source code(tar.gz)
    Source code(zip)
  • v11.1.0(Oct 2, 2022)

    What's Changed

    • Only try remove callbacks when not None (#268) @jesserockz
    • Bump types-protobuf from 3.20.1 to 3.20.4 (#256) @dependabot
    • Bump actions/cache from 3.0.8 to 3.0.9 (#266) @dependabot
    • Increase underlying socket receive buffer (#267) @bdraco
    Source code(tar.gz)
    Source code(zip)
  • v11.0.0(Sep 30, 2022)

    What's Changed

    • Change has_bluetooth_proxy to a version (#264) @jesserockz
    • Process messages in a separate task loop (#263) @jesserockz
    • Change BLE advertisement data to bytes (#262) @jesserockz
    • A few fixes for BLE GATT (#261) @jesserockz

    Breaking Changes

    • Bump min python to 3.9 (#265) @jesserockz
    Source code(tar.gz)
    Source code(zip)
  • v10.14.0(Sep 28, 2022)

    What's Changed

    • Add Bluetooth GATT calls (#259) @jesserockz
    • Bump pylint from 2.15.0 to 2.15.3 (#257) @dependabot
    • Bump mypy from 0.971 to 0.981 (#260) @dependabot
    • Add async-timeout to requirements.txt (#255) @mjonuschat
    • Bump pylint from 2.14.5 to 2.15.0 (#250) @dependabot
    • Bump types-protobuf from 3.19.22 to 3.20.1 (#249) @dependabot
    • Bump actions/cache from 3.0.7 to 3.0.8 (#248) @dependabot
    • Bump black from 22.6.0 to 22.8.0 (#251) @dependabot
    Source code(tar.gz)
    Source code(zip)
  • v10.13.0(Aug 22, 2022)

    What's Changed

    • Add has_bluetooth_proxy flag to device info by @jesserockz in https://github.com/esphome/aioesphomeapi/pull/247

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.12.0...v10.13.0

    Source code(tar.gz)
    Source code(zip)
  • v10.12.0(Aug 22, 2022)

    What's Changed

    • Change out asyncio.wait_for with async_timeout by @bdraco in https://github.com/esphome/aioesphomeapi/pull/243
    • Implement Bluetooth LE advertisement receiving by @jesserockz in https://github.com/esphome/aioesphomeapi/pull/246
    Dependencies
    • Bump actions/cache from 3.0.4 to 3.0.7 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/245
    • Bump docker/build-push-action from 3.0.0 to 3.1.1 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/244
    • Bump pylint from 2.14.4 to 2.14.5 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/236
    • Bump mypy from 0.961 to 0.971 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/237
    • Bump flake8 from 4.0.1 to 5.0.4 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/241

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.11.0...v10.12.0

    Source code(tar.gz)
    Source code(zip)
  • v10.11.0(Jul 7, 2022)

    What's Changed

    • Increase ListEntitiesRequest timeout to 30 seconds by @syndtr in https://github.com/esphome/aioesphomeapi/pull/234
    • state class TOTAL added by @peterg79 in https://github.com/esphome/aioesphomeapi/pull/229
    Dependencies
    • Bump types-protobuf from 3.19.20 to 3.19.21 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/216
    • Bump mypy from 0.950 to 0.960 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/218
    • Bump actions/cache from 3.0.2 to 3.0.3 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/219
    • Bump pylint from 2.13.9 to 2.14.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/220
    • Bump pylint from 2.14.0 to 2.14.1 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/222
    • Bump mypy from 0.960 to 0.961 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/223
    • Bump actions/cache from 3.0.3 to 3.0.4 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/224
    • Bump actions/setup-python from 3 to 4 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/225
    • Bump pylint from 2.14.1 to 2.14.2 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/226
    • Bump pylint from 2.14.2 to 2.14.3 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/228
    • Bump types-protobuf from 3.19.21 to 3.19.22 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/227
    • Bump black from 22.3.0 to 22.6.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/230
    • Bump pylint from 2.14.3 to 2.14.4 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/231

    New Contributors

    • @syndtr made their first contribution in https://github.com/esphome/aioesphomeapi/pull/234
    • @peterg79 made their first contribution in https://github.com/esphome/aioesphomeapi/pull/229

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.10.0...v10.11.0

    Source code(tar.gz)
    Source code(zip)
  • v10.10.0(May 18, 2022)

    What's Changed

    • Assume volume (and therefore mute) is always supported by @jesserockz in https://github.com/esphome/aioesphomeapi/pull/215

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.9.0...v10.10.0

    Source code(tar.gz)
    Source code(zip)
  • v10.9.0(May 18, 2022)

    What's Changed

    • Add media player entities by @jesserockz in https://github.com/esphome/aioesphomeapi/pull/214
    Dependencies
    • Bump types-protobuf from 3.19.11 to 3.19.12 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/177
    • Bump docker/login-action from 1.12.0 to 1.13.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/178
    • Bump actions/setup-python from 2 to 3 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/180
    • Bump docker/login-action from 1.13.0 to 1.14.1 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/181
    • Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/182
    • Bump mypy from 0.931 to 0.940 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/184
    • Bump docker/build-push-action from 2.9.0 to 2.10.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/186
    • Bump mypy from 0.940 to 0.941 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/185
    • Bump black from 22.1.0 to 22.3.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/195
    • Bump mypy from 0.941 to 0.942 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/192
    • Bump types-protobuf from 3.19.12 to 3.19.15 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/190
    • Bump pylint from 2.12.2 to 2.13.4 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/197
    • Bump actions/cache from 2 to 3.0.1 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/196
    • Bump pylint from 2.13.4 to 2.13.5 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/198
    • Bump actions/cache from 3.0.1 to 3.0.2 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/199
    • Bump types-protobuf from 3.19.15 to 3.19.17 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/200
    • Bump docker/setup-buildx-action from 1.6.0 to 1.7.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/205
    • Bump pylint from 2.13.5 to 2.13.8 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/206
    • Bump docker/build-push-action from 2.10.0 to 3.0.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/210
    • Bump docker/setup-buildx-action from 1.7.0 to 2.0.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/209
    • Bump docker/setup-qemu-action from 1.2.0 to 2.0.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/208
    • Bump docker/login-action from 1.14.1 to 2.0.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/207
    • Bump pylint from 2.13.8 to 2.13.9 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/213
    • Bump types-protobuf from 3.19.17 to 3.19.20 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/212
    • Bump mypy from 0.942 to 0.950 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/204

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.8.2...v10.9.0

    Source code(tar.gz)
    Source code(zip)
  • v10.8.2(Feb 9, 2022)

    What's Changed

    • Fix no timeout for handshake (#176) @OttoWinter
    • Update pytest requirement from <7,>=6.2.4 to >=6.2.4,<8 (#173) @dependabot
    • Bump types-protobuf from 3.19.8 to 3.19.11 (#175) @dependabot
    • Bump types-protobuf from 3.19.7 to 3.19.8 (#172) @dependabot
    • Bump docker/build-push-action from 2.8.0 to 2.9.0 (#171) @dependabot
    • Bump black from 21.12b0 to 22.1.0 (#169) @dependabot
    • Bump types-protobuf from 3.19.6 to 3.19.7 (#170) @dependabot
    • Bump types-protobuf from 3.19.5 to 3.19.6 (#167) @dependabot
    Source code(tar.gz)
    Source code(zip)
  • v10.8.1(Jan 23, 2022)

    What's Changed

    • Export BadNameAPIError in main module by @OttoWinter in https://github.com/esphome/aioesphomeapi/pull/166

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.8.0...v10.8.1

    Source code(tar.gz)
    Source code(zip)
  • v10.8.0(Jan 20, 2022)

    What's Changed

    • Expect a name for connections by @OttoWinter in https://github.com/esphome/aioesphomeapi/pull/122
    • Bump types-protobuf from 3.19.4 to 3.19.5 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/165

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.7.0...v10.8.0

    Source code(tar.gz)
    Source code(zip)
  • v10.7.0(Jan 19, 2022)

    What's Changed

    • Bump docker/login-action from 1.10.0 to 1.12.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/153
    • Bump black from 21.11b1 to 21.12b0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/150
    • Bump pylint from 2.12.1 to 2.12.2 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/149
    • Remove loop argument by @jesserockz in https://github.com/esphome/aioesphomeapi/pull/155
    • Add device class support to Switch by @frenck in https://github.com/esphome/aioesphomeapi/pull/157
    • Catch conn reset by @zathras777 in https://github.com/esphome/aioesphomeapi/pull/159
    • Bump types-protobuf from 3.18.2 to 3.18.3 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/160
    • Bump mypy from 0.910 to 0.930 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/156
    • Add lock entity by @kbickar in https://github.com/esphome/aioesphomeapi/pull/158
    • Bump docker/build-push-action from 2.7.0 to 2.8.0 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/164
    • Bump types-protobuf from 3.18.3 to 3.19.4 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/163
    • Bump mypy from 0.930 to 0.931 by @dependabot in https://github.com/esphome/aioesphomeapi/pull/162

    New Contributors

    • @zathras777 made their first contribution in https://github.com/esphome/aioesphomeapi/pull/159
    • @kbickar made their first contribution in https://github.com/esphome/aioesphomeapi/pull/158

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.6.0...v10.7.0

    Source code(tar.gz)
    Source code(zip)
  • v10.6.0(Nov 30, 2021)

    What's Changed

    • Add mode to number entities by @jesserockz in https://github.com/esphome/aioesphomeapi/pull/148

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.5.0...v10.6.0

    Source code(tar.gz)
    Source code(zip)
  • v10.5.0(Nov 30, 2021)

    What's Changed

    • Add unit_of_measurement to number components by @jesserockz in https://github.com/esphome/aioesphomeapi/pull/147

    Full Changelog: https://github.com/esphome/aioesphomeapi/compare/v10.4.0...v10.5.0

    Source code(tar.gz)
    Source code(zip)
Owner
ESPHome
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
ESPHome
ESP32 micropython implementation of Art-Net client

E_uArtnet ESP32 micropython implementation of Art-Net client Instalation Use thonny Open the root folder in thonny and upload the Empire folder like i

2 Dec 07, 2021
An embedded application for toy-car controlling based on Raspberry Pi 3 Model B and AlphaBot2-Pi.

An embedded application for toy-car controlling based on Raspberry Pi 3 Model B and AlphaBot2-Pi. This is the source codes of my programming assignmen

StardustDL 4 Oct 19, 2022
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
Sensor of Temperature Feels Like for Home Assistant.

Please ⭐ this repo if you find it useful Sensor of Temperature Feels Like for Home Assistant Installation Install from HACS (recommended) Have HACS in

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

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

Matthew Garrett 1.2k Jan 04, 2023
Micropython-wifimanager-esp8266 - Simple Wifi Manager for ESP8266 using MicroPython

micropython-wifimanager-esp8266 Simple Wifi Manager for ESP8266 using MicroPytho

Abhinuv Nitin Pitale 1 Jan 04, 2022
Testing additional addon devices, and their working scripts

ESP32-addon-devices-potpurri Testing additional addon devices, and their micropython working scripts 📑 List of device addons tested so far Ethernet P

f-caro 0 Nov 26, 2022
Controlling fireworks with micropython

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

Montso Mokake 1 Jan 08, 2022
Software framework to enable agile robotic assembly applications.

ConnTact Software framework to enable agile robotic assembly applications. (Connect + Tactile) Overview Installation Development of framework was done

Southwest Research Institute Robotics 29 Dec 01, 2022
Automatic Watering System using Soil Moisture Sensor and RTC Timer with Arduino

Automatic-Watering-System - Technical Answers to Real-World Problems. Evolution of Watering Manually to Watering Automatically.

Vaishnavi Pothugunta 4 Dec 31, 2021
A lightweight script for updating custom components for Home Assistant

Updater for Home Assistant This is a lightweight script for updating custom components for Home Assistant. If for some reason you do not want to use H

Alex X 12 Sep 21, 2022
Trajectory optimization package for Mini-Pupper robot

Trajectory optimization package for Mini-Pupper robot Purpose of this repository is to provide low-torque and low-impact trajectory for Mini-Pupper qu

Sotaro Katayama 38 Aug 17, 2022
Custom component for MPC-HC for home-assistant

mpc_hc The current mpchc integration in homeassistant violates ADR0004, so it will be deleted from core. This is just the existing integration copied

3 Dec 15, 2022
Port of Uxn to digital hardware in the Logisim simulator

Uxn-Logisim Implements the Uxn instruction set in digital hardware. Very WIP. Contents cpu.circ - The Logisim file microcode.mc - Microcode source fil

DeltaF1 11 Mar 27, 2022
BoneIO is a compact IO controller for home automation.

Project description BoneIO is a compact IO controller for home automation. Main features of this controller are Compact size (27x11x6)cm - 15 DIN modu

Maciej Krasuski 120 Nov 30, 2022
PyTorch implementation of paper "MT-ORL: Multi-Task Occlusion Relationship Learning" (ICCV 2021)

MT-ORL: Multi-Task Occlusion Relationship Learning Official implementation of paper "MT-ORL: Multi-Task Occlusion Relationship Learning" (ICCV 2021) P

Panhe Feng 12 Oct 11, 2022
a weather application for the raspberry pi and the Pimorioni Inky pHAT.

raspi-weather a weather application for the raspberry pi and the Inky pHAT

Derek Caelin 59 Oct 24, 2022
Programmable Rainbow Redstone Computer

Programmable Rainbow Redstone Computer Table of contents What is it? Program flasher How to use it What is it? PRRC is Programmable Rainbow Redstone C

Fern H 2 Jun 07, 2022
Hardware: CTWingSKIT_BC28 Development Toolkit

IoT Portal Monitor Tools hardware: CTWingSKIT_BC28 Development Toolkit serial port driver: ST-LINK hardware development environment: Keli 5 MDK IoT pl

Fengming Zhang 1 Nov 07, 2021
Simple python3 implementation of microKanren with lots of type annotations for clarity

MicroKanren-py This is (yet another) python implementation of microKanren. It's a reasonably 1:1 translation of the code provided in the paper, but ev

Erik Derohanian 3 Dec 10, 2022