From 2b88067c2d4df56a3b05f8e1dc52a3be26900152 Mon Sep 17 00:00:00 2001 From: Sven Anders Date: Sat, 3 Apr 2021 09:51:30 +0200 Subject: [PATCH 1/2] Add some example wifi config to example.yml --- doc/Yeelight_screws.jpg | Bin 0 -> 48990 bytes doc/example.yaml | 9 +++++++++ 2 files changed, 9 insertions(+) create mode 100644 doc/Yeelight_screws.jpg diff --git a/doc/Yeelight_screws.jpg b/doc/Yeelight_screws.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6fff18d98481a3bb8e57560ce5f5b781e3aadf1a GIT binary patch literal 48990 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 XkJ!z@5KT=F&wRF~f1r;=|7QOWxIFD@ literal 0 HcmV?d00001 diff --git a/doc/example.yaml b/doc/example.yaml index 92f253e..dbe51ca 100644 --- a/doc/example.yaml +++ b/doc/example.yaml @@ -5,6 +5,15 @@ substitutions: # Use your own preferences for these components. wifi: + #ssid: "Your-SSID" + #password: "Your-Password" + #use_address: 192.168.10.12 + # + # Enable fallback hotspot (captive portal) in case wifi connection fails + #ap: + # ssid: "Bedside_lamp_$name" + # password: "bedside2021" + captive_portal: api: ota: From bd7980a7fb9ba36dc4f5b913953328d7b34d264e Mon Sep 17 00:00:00 2001 From: Sven Anders Date: Sat, 3 Apr 2021 09:52:17 +0200 Subject: [PATCH 2/2] Add first flashing doc --- README.md | 23 +++++++++++-- doc/FLASHING.md | 90 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 doc/FLASHING.md diff --git a/README.md b/README.md index 2e3fced..c34dae7 100644 --- a/README.md +++ b/README.md @@ -20,13 +20,30 @@ config │ ├── 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` 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 and flashing the light. + ## 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 @@ -39,7 +56,7 @@ 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 + https://github.com/mmakaay/AsyncTCP For example on the command line: diff --git a/doc/FLASHING.md b/doc/FLASHING.md new file mode 100644 index 0000000..6cf241f --- /dev/null +++ b/doc/FLASHING.md @@ -0,0 +1,90 @@ + +# Flahsing Bedlight + +## Tools needed + +* imbus or torx screw driver (3mm?) +* Soldering Iron +* pehabs some Sticky tape +* a serial to USB adapter with 3,3 Volt output +* Some wires + +## Warning + +We have writen this instructions with care, but we will gave absoultly no warnenty. Perhabs you will destroy your device and your computer. + + +## Opening the yeelight + +Remove the rubber on the botton of the bottom of the light. + +Unbolt the 4 Screws which was hidden by the rubber. + ![Photo of the screws](Yeelight_screws.jpg "You will need an imbus or torx screw driver to remove the screws.") + +Remove the plastic. + +## Solder the wires + +Solder the wires to the points of this picture. + ![Soldering points of a yeelight](https://community-assets.home-assistant.io/optimized/3X/1/3/1340a2367e5894281ac6d042f328d9db80ae7da4_2_790x750.jpeg) + + You can use stick tape to fix the cables before soldering. + +## Connect to your flashing device +Make sure that your that your flashing device is given 3.3 Volt between GND and VCC. If not you can use the regular power adapter instead. + + | Soldering point| Serial USB Adapter name | + | -------------- |:------------------------:| + | Gnd | Gnd | + | TX | RX | + | RX | TX | + | GPIO0 | Gnd | + | 3.3 V | VCC or regular power adapter| + +Connect all wires execpt VCC or Power Adapter, then plugin the power in the last step. + +## Download and install esptool + +See: https://github.com/espressif/esptool/blob/master/README.md#installation--dependencies + +## Make a backup of the current firmware + +``` +python esptool.py -p /dev/ttyUSB0 read_flash 0x 0x400000 original-yeelight-firmware.bin +``` + +/dev/ttyUSB0 is the port of the usb adaper on linux you will see it with `dmesg`. On Windows this is often `COM1`, `COM2` or `COM3` + +Caution: You will find WLAN SSID and Password of the lasted used Wifi in this file + +**After each step with esptool, you have to unplug you power line and connect it again.** + +## Flash new firmware + +Setup a ESPHome Project, see [README.md](../README.md) + +Now you can flash the device directly with esphome or by esptool. + +If you want to flash with esptool, compile with esphome and download it. + +``` +python.exe .\esptool.py --chip esp32 --port COM3 --baud 115200 write_flash 0x1000 +``` + +One your firmware is flashed, you can flash more OTA via ESPHOME. +## Troubleshooting flash + +If you have **A fatal error occurred: MD5 of file does not match data in flash!** +you can try to use the regular power adapter instead of the vcc line. + + +After this error, user @tabacha successfully flashed esp with tasmota bootloader with the regular power adapter and the following command: + +``` +python esptool.py --chip esp32 -p /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dout --flash_freq 40m --flash_size detect 0x1000 bootloader_dout_40m.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000 ~/Downloads/schlafzimmerbedlight.bin +``` + +You will find the missing tasmota boot files here: https://github.com/arendst/Tasmota/tree/firmware/firmware/tasmota32/ESP32_needed_files + +User @tabacha was not able to use tasmota with the beedlight. +