Intex PureSpa SBH20 control interface for esphome.
Idea came from https://github.com/YorffoeG/diyscip and https://github.com/jnsbyr/esp8266-intexsbh20 for their great comprehension of PureSpa protocol. Since many reports problems with controlling target temperature due to heavy processing in interrupts, I decide to give raspberry pi pico W a try.
That's my very project first with :
- Raspberry Pi Pico W
- esphome
So please be indulgent, I've learnt a lot, but it's just a beginning.
Don't blame me, it's not my professional activity !!! Advices are welcome.
Hardware is very simple :
- Raspberry Pi Pico W
- Level shifters
- 10 µF capcitor
If you know how to connect level shifters, you just need to connect :
- DATA (3.3V) on GP3
- CLK (3.3V) on GP4
- HOLD (3.3V) on GP5
Credits : https://github.com/YorffoeG/diyscip/blob/master/docs/connector%20pinout.png
Mostly GPIO just read data bit on clock rising edge. When ISR is full of 16 bits, then store that value on Y register. ISR is also pushed to FIFO and an IRQ is fired. Then C program have time to proces all these words in FIFO and decodes leds and digits.
For push button, a function put expected push button code in FIFO and the PIO program loads it in X register.
When X and Y are equal, a pulse is done on DATA line (4µs after CS rising edge and during 2 µs)
I'm using WSL Ubuntu on windows 11.
Go to your favourite dev directory then git clone
this repository
git clone https://github.com/RealByron/PicoW-Intex-PureSpa.git PicowSpa
cd PicowSpa
enable virtual env and activate it
python -m venv spa-env
source spa-env/bin/activate
install esphome
pip install wheel
pip install esphome
and execute it
esphome dashboard .
Then you're at (esp)home
Contributions to this project are welcome. If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.
This project is licensed under the MIT License.
Using this project to control your Intex PureSpa may void your warranty. Please consult the documentation and terms of service provided by Intex before using this project.