|
|
- # esphome-yeelight_bs2
-
- ## Warning: this code is still under heavy development
-
- This code is not yet production-ready. Most of the work goes into reverse
- engineering the original firmware and coming up with ways to re-implement
- a device firmware based on ESPHome.
-
- Till now, the main focus was driving the LED circuitry, to make sure that the
- light quality meets that of the original firmware. This was a hard nut to
- crack, but I am happy to announce that this code has been completed.
- Therefore I will now continue on implementing the front panel buttons.
-
- The hard work for this was already done: reverse engineering the protocol
- that is used to talk to the main board. Therefore, finishing up the
- firmware should not take much time from here on.
-
- Once the front panel is working, we can move towards a stable release of the
- firmware. I have some more ideas to work on, but those can and will be
- extensions to a finalized first stable release.
-
-
- ## Is it safe to install this firmware on my device?
-
- As long as you keep a backup of the original Yeelight firmware, this is
- quite safe :-)
-
- I have two lamps that both are running the latest development firmware and
- they are functioning very well as far as the light feature is concerned.
- I sometimes see API disconnection issues, but those can all be traced back
- to the underlying frameworks. For the most prevalent issue, I did some
- debugging and wrote a fix (it is mentioned below).
-
- For each commit of the code, I will do my best to commit it in a working
- state. Once a first completed stable release is cooked up, I will tag
- production releases of the code to make it easier to pick the safe version
- for production purposes.
-
-
- ## Installation
-
- Create a folder named `custom_components` in the folder where your device's
- yaml configuration file is stored. Then clone the the Github repo into a
- subfolder `yeelight_bs2`. For example on the command line:
-
- ```
- # mkdir custom_components
- # cd custom_components
- # git clone https://github.com/mmakaay/esphome-yeelight_bs2 yeelight_bs2
- ```
-
- Your folder structure should now look like:
- ```
- config
- ├── yourdevice.yaml
- ├── custom_components/
- │ ├── yeelight_bs2/
- │ . ├── README.md
- . . ├── yeelight_bs2_light_output.h
- . . .
- ```
-
- Then add the required configuration to your device's yaml configuration file.
- For an example file, take a look at [doc/example.yaml](doc/example.yaml) in
- this repository.
-
- On a Rapsbery Pi with HomeAssistant and ESPHome as a plugin, the directory
- should be:
-
-
- /config/esphome/custom_components/yeelight_bs2/
-
- ```
- config
- ├── epshome
- │ ├── yourdevice.yaml
- │ ├── custom_components/
- | . ├── yeelight_bs2/
- │ . . ├── README.md
- . . . ├── yeelight_bs2_light_output.h
- . . . .
- ```
-
- See [doc/FLASHING.md](doc/FLASHING.md) for hints for opening up the device and
- flashing its firmware.
-
-
- ## Issue: the device keeps losing its connection to Home Assistant
-
- This is not a problem with the device or the custom firmware, but a problem
- in the upstream library "AsyncTCP". I did identify the issue and have a
- proposed fix for it. The issue was reported at:
-
- https://github.com/me-no-dev/AsyncTCP/issues/116
-
- If you want to try out this change, then create a `libs` folder in the
- folder where your device's yaml configuration file is stored, and clone the
- following repository into that folder:
-
- https://github.com/mmakaay/AsyncTCP
-
- For example on the command line:
-
- ```
- # mkdir libs
- # cd libs
- # git clone://github.com/mmakaay/AsyncTCP
- ```
-
- Then add a pointer to this folder from within your device's yaml
- configuration file, using the `lib_extra_dirs` option. Provide it with the
- absolute path to your `libs` folder. The relevant part of the config change
- looks like this:
-
- ```yaml
- esphome:
- platformio_options:
- lib_extra_dirs: /config/libs
- ```
-
- This way, the repository version of the library will override the version of
- the library that is bundled with ESPHome. Build the device firmware and
- flash the device like you would normally do.
-
|