Zry.IO

Back

Background

A friend of mine recommended a smart plug Athom PG01EU16A that supports Tasmota, so I purchased two of them from AliExpress for €15.26 with free shipping. However, upon arrival, I discovered that although the appearance of the plugs was identical, the printed model number was ELIVCO LSPA9 instead.

plugs

There are no external screws, according to this post [Archive], we can crack it open by applying pressure to the top sides.

disassembled

Hardware

After disassembling it, I saw a model number CB2S printed on the Wi-Fi module, a quick search showed that it’s another Tuya module based on the Beken BK7231 series ARM SoC, this is the third time I stepped on these landmines from Tuya.

pcb-1

And what made things worse is that the CB2S module has a unique pinout that is not similar to any commonly available ESP modules:

cb2s

esp-modules

Source: https://www.iot-experiments.com/esp8266/

Anyway, I removed the module and reverse-engineered the circuit: the IC in the lower left corner is an “AMS1117-3.3” voltage regulator, it provides the +3.3 V power source for the Wi-Fi module as well as some other components; to its right is a “BL0937” AC power monitoring IC, which is used to measure the voltage, current and power on the plug.

pcb-2

The main circuit can be organized as follows, with components labeled as per their actual PCB silkscreen printings, some less important components have been omitted:

schematic

We can replace the CB2S module with a common ESP module and connect the necessary pins.

done

Here I used an ESP-12F module, with corresponding pins selected as:

CB2SESP-12F
3V3VCC
GNDGND
P6GPIO5
P7GPIO4
P8GPIO2
RX1GPIO13
P24GPIO12
P26GPIO14

And remember to pull up EN and pull down GPIO15.

Software

ESPHome configuration example:

BL0937 Voltage Divider Calculation

The parameter voltage_divider of the hlw8012 component needs to be calculated based on the actual voltage divider resistors, otherwise the voltage data will be inaccurate.

voltage_divider (Optional, float): The value of the voltage divider on the board as (R_upstream + R_downstream) / R_downstream. Defaults to the Sonoff POW’s value 2351.

Source: https://esphome.io/components/sensor/hlw8012.html#configuration-variables

According to the actual circuit, the voltage divider used in this smart plug is as follows:

voltage-divider

So the theoretical value should be (680×1000×3+1000)÷1000=2041, but then the actual result is wrong; after lots of trial-and-error, I found 1600 as a relatively accurate value, but I still don’t know why.

After that, we can add it directly in Home Assistant:

hass

ELIVCO LSPA9 Smart Plug
https://zry.io/smart-home/elivco-lspa9-smart-plug/
Author zry98
Published at February 11, 2022
Copyright CC BY-NC-SA 4.0
18 comments
AE

Hello. I need to replace the IC which is located near C1. It is AC/DC converter, but I cannot see the maker/model/numbers on it.

zry98
@AE :

Hi, I see the marking is "BP2525" on the IC above C1 on my end. It seems to be a BP2525X from Bright Power Semiconductor, used for converting 220V AC to 5V DC.

AE
@AE :

OK. Thank you. My smart plug is one of the oldest. On my it says BP2902, but I could not find anything about it. The problem is that I have only about 4V DC, instead of 5V. And because of that the AMS1117 is not working properly, so the plug is faulty now. I checked the plug through connecting the AMS1117 to 5V externally, and the plug started to work properly with no issues whatsoever. So I figured it is this AC/DC converter that is faulty, because everything else on the board seems to be fine.

Anyway, I found BP2525F on Aliexpress, so I will replace it now and it should solve my problem.

riogrande75

In the meantime you can flash OpenBeken on this device witout changing the microcontroller.

Waschtl

Your analysis of the schematic is very helpful.
Thanks a lot for that.
There are ESP32C3 replacement boards available as well. They are called ESP8685 WROOM 03. I have not tried it yet but in very recent future. Using these Boards together with Tasmota even Matter support should be possible.

Yousaf

You can use tuya cutter on these Plugs or flash it via BK7321 GUI flash tool tool to esphome.

Oli

serch ESP-02S

Axel

Have you ever heard about OpenBeken ? it might be a better way, althougth i don't know if it's compatible with this model
https://github.com/openshwprojects/OpenBK7231T_App

Alex

Hello. I came here by accident, and I want to share good news. You do not need to change CB2S! This chip can be flashed to ESPHome (like almost all chips from TUYA). And you don’t even need to open it, it is patched on the air! See LibreTuya, CloudCutter.

Original comment:


Привет. Случайно сюда попал, и хочу поделиться хорошими новостями. Можно не менять CB2S! Этот чип можно прошивать в ESPHOME (как почти все чипы от TUYA). Причем не нужно даже вскрывать, прошивается по воздуху! Поищите - LibreTuya, CloudCutter.
Простите за мой английский :)

zry98
@Alex :

Hi Alex, thanks for your comment! I have been following LibreTuya's development since they started the project, but because it's a large and slow project, and it was barely usable at the time when I got my two plugs (early February 2022), I didn't choose it. If I buy any other devices using BK723X SoC in the future, I will definitely give it a try!


Привет, Алекс! Спасибо за комментарий! Я следил за развитием LibreTuya с самого начала проекта, но поскольку это большой и медленный проект, и к тому же он едва работал в то время, когда я купил две розетки (в начале февраля 2022 года), я не выбрал его. Если в будущем я куплю еще какие-либо устройства с SoC BK723X, то обязательно попробую LibreTuya!

Oscar P

Hi zry98, it is like this: https://templates.blakadder.com/ESP-02S.html
Many thanks again for your fast answer!!!

zry98

I had no idea that modules like this existed! it will make replacing CB2S modules with Beken SoC so much easier. However you will have to change the ESPHome config to match the GPIOs.

Oscar P

Hi Zry.io,
I'm thinking about replacing the old CB2S with an ESP02, do you think I could?
Apart from that I don't know how to flash it, I didn't even google it I'll find it out!!
thanks a lot!

zry98

Hi, if by ESP02 you mean those tiny ones with only 8 pins (5 usable IO pins), I think it's still possible to do the job by giving up the blue LED indicator (connected on P8).

Oscar P

Ok, I'll give a try tomorrow, thaks a lot for such a very quick answer!!!!

Oscar P

Hi again Zry.io, I'm afraid i need some help. Yesterday I tried with ESP02 replacing the old CB2S but for some reason the relay doesn't work. According to your schema, the pin that goes to the relay is P26 which corresponds to GPIO14 in my ESP02, I have tested it with and without inverted but it still doesn't work. Any hints? Could it be that the relay is somehow broken?
Many thanks
Oscar

zry98

Hi Oscar, are you sure it's an ESP02 with 8 pins like this? Since I've never used one of these, and couldn't find any other official docs other than this, it says that GPIO14 (although I only see GPIO15 in its photo) is also connected to CH_PD (CHIP_EN in datasheet) so it won't work as a GPIO. Can you confirm the model and pins?

dima

thank so much for your research! I'v redone successfully 3 plugs according to your method