Levoit air purifiers - killing the vesync app and going local

I’m actually super excited for this one xD
This began as a project to integrate my air conditioning units with Google home, got completely sidetracked, and ended up working on my air purifier.

God damn it!

Anyway! As usual, this is purely documenting my work and experience, your own may vary, if you hurt yourself or break your device I am absolutely not liable for any of it. So please don’t do it!

With that out of the way…
GitHub link to the original work by acvigue: GitHub - acvigue/esphome-levoit-air-purifier: ESPHome custom component for Levoit branded smart WiFi air purifiers
Documentation and disassembly and pinout by acvigue:
Levoit Air Purifier ESPHome Conversion - Aiden Vigue

This will be a terrible guide on how to change the oficial firmware of the levoit 400s purifier to ESPhome, let’s go:

Don’t judge, I had no idea I could also go from the top to get to the board…
If you use a plastic spudger, you can get the top part of the purifier out easily, where the main board with the esp32 is. The plastic rim is stuck in place with plastic clips, which is terrible because I broke them all, but on the other hand now it’s quite easy to remove the stuff my one year old sticks inside of the purifier. So yay?


So really, you don’t need to do all I did there…

Wiring:
Now this is the scary part,


If you double check the blog post, one of the pictures is his amazing soldering work (no judgement, I soldered an esp32 to my desk leg by mistake.):
image

Now this is where I had some difficulties, because the pin out he used is actually inverted for the 400s. So instead of having TX and RX closest to the esp board, they are actually opposite of that. Once I inverted the pins, and wired IO to GND I was off to the races.

Next, firmware:
For the 300s you can use the sample yaml in the GitHub directly it seems. In my case, for the 400s a small edit in the yaml was needed, please look for the following snippet and add the line missing, as shown in the example below:

levoit:
  id: levoit1
  model: core400s

Oh, and because it’s an esp32 I tried my luck and added the web server component. Seems to handle it fine…. Mileage may vary…?

HINT: PLEASE backup your original firmware. I was messing with the pins and when I looked it was already erasing it -.- my bad…

Alright. Time for flashing! FYI I did not solder anything, just used DuPont wires, and lots of cursing.



All of the channels are populated and I got data incoming :slight_smile:

Now, here’s the fun bit. It’s an esp32….running esphome. Which means lots of space of activities… and modding :smiley: I might add an bme680 inside since I have one lying around anyway.

And there you go. A big thanks to @dorcari for his assistance in the yaml! This didn’t work as well before his intervention xD

4 Likes