Wi-Fi on your Lay-Z-Spa. Great way to remote control

[Updated 2023-06]

Since last summer the Lay-Z-Spa has been in storage. In the meantime, I have gotten an explosive amount of questions regarding this year’s update as it seems many are trying to find a solution on how to Wi-Fi enable their hot tubs. So here is an update.
As of writing the current version of the integration is v4.1.3 which we will be using.
The parts/tools that are mentioned in the original guide still hold up to this day so you can still use the same ones if you are doing this fresh or upgrading an existing install. The guide assumes you have the same model pump S100101 and the d1_mini board with 5V pinout and Wi-Fi functionality.

The setup and upgrade

We download the latest version of the code from visualapproach repository. Extract it somewhere that we are going to work with it. Nothing changes here from the original guide we will still use Visual Studio Code to perform all the actions. We use PlatformIO to open the code folder. But this time the only change we need to make is the board to d1_mini.

platformio.ini file

Set the parameter as in the screenshot:
board = d1_mini

That’s all the changes we are going to make in VS Code. We now connect the board if we haven’t already with a USB cable and compile and upload the code. Follow the picture below for the proper upload steps to avoid errors.

Upload steps

Do keep in mind that if you are using my old guide as a setup for your board or you are upgrading. The pinout and your Wi-Fi/MQTT settings are reset to default and you will need to set up this again.
After the upload is complete your board should be accessible once again via http://layzspa.local I urge you to set up the basic settings like Wi-Fi so you have connectivity after you unplug it and use it as normal.
Once the UI is opened in your browser you will notice if you used it before it is slightly different. The first thing to do is click on the hamburger menu button in the top-right to open the menu. We should first go to Hardware Config and adjust the settings to our board and pump.
So here we have a multitude of settings that were not available before. This is why we no longer need to set the pump model and pinout in VS Code because it is now all done through the UI. Pretty neat!
The settings for the pump model number S100101 are as below in the screenshot. You will also need to set the PCB settings and Pinout if you soldered the wires the same way as in the original guide.

Hardware settings

So we set it to 6 wire, 2021. PCB is set to Custom and Pinout is CIO: 4/3/2 and DSP 7/6/5/0. If your board or pump or soldered pins differ you must adjust this accordingly to your model/board.
We save the config and restart the board from the hamburger menu. If everything was correct you should see your model changed at the bottom of the main menu based on your settings.

Model Information

You can test if it works properly by adjusting the settings. The way I like to test that it works is to enable the Bubbles function which will make the pump blow air. As well as adjusting the temperature settings. I would not advise trying the filter or heater options since I do this unplugged and it has no water inside so we don’t want to damage any internals.

So that is pretty much it. It has become much more straightforward to do with fewer parameter changes in VS Code. You can still follow the old method regarding the programs/tools you need. Just use this refresher for the rest once you have everything built and ready.

As always I hope this has helped you out. Happy bathing! Be sure to check out my other posts like:
Using 3D printing to improve your Lay-Z-Spa experience
If you are interested in integrating your hot tub in Home assistant you can check out this post here:
Home Assistant Hot Tub Integration

[The old method from 2022]

Since the start of summer, I have noticed a sale for some of these Lay-Z-Spa inflatable hot tubs. So I decided to get one. We used it for a few weeks outdoors in our yard and I noticed something. We usually tend to go in at the end of the day and that usually means not forgetting to heat it so that it is at the right temperature we want it to be. Sometimes you turn it on and leave the filtering on and forget the heating. Once the evening comes you go out and see that you forgot to heat it up. Bummer.
Since then I have decided there has to be a solution to this. Of course, Bestway offers pumps with Wi-Fi-enabled pumps and an app to accompany them. But most hot tubs do not include this feature and the pumps alone cost almost the same as the whole hot tub. Here comes a DIY solution courtesy visualapproach on GitHub.
You can find the page here:

https://github.com/visualapproach/WiFi-remote-for-Bestway-Lay-Z-SPA

Lay-Z-Spa Module

The solution

The idea of this is we add a module inside the pump that interfaces with the pump itself and the display. Also provides Wi-Fi connectivity with a Web interface and remote controls. This supports many different hot tub models from Bestway. The personal one that I am using is the Cancun which has the 2021 pump on it, not like the older egg-shaped models. The features of it are the same as the Miami version except for the texture of the liner.

2021 pump model

First off for this method to work we need to identify the pump model. There is a sticker on the side of the pump that will tell you what model you have. For this specific setup, I can confirm it works with model number S100101.
If you have the same one you can completely follow along to get this to work. If it is different or you have the egg-shaped pump better to refer to the GitHub page as there is better documentation on different models and what parts you need to make this work.
For this setup, we will be using a WeMos D1 Mini board.

WeMos D1 mini

A pair of male-to-female JST-SM 6-pin connectors

JST-SM 6-pin

Soldering iron, a screwdriver, and a micro USB cable for connecting it to our PC.
Firstly you need to disassemble the pump and open it up to expose the wiring. You should disconnect the pump from the tub and power it off. There are 6 screws that we need to remove around the middle of the pump they can be accessed from underneath in the groves.

Screw locations

Check the locations underneath on each side, front, and back. You will find holes and you need to remove the screws to be able to lift the top half off to expose the connections. Take care when lifting the top half the handles for lifting on the side might come off. That is normal don’t worry you can put them back in later. You will also want to take care to not lift it too much off as the wire that connects to the display is not that long and you don’t want to damage it because we will need to use it. For easier use going forward, you can disconnect the cable.
We now have the pump prepared for modding. We will need to prepare the WeMos board with the code that is needed to control it.
Download Visual Studio Code and install it. https://code.visualstudio.com/

Within the application go to Extensions or Ctrl+Shift+X search for PlatformIO IDE and install it. It might ask you to restart or reload the application too. You will see the new icon available here

PlatformIO

Download the latest release from the GitHub page https://github.com/visualapproach/WiFi-remote-for-Bestway-Lay-Z-SPA/releases

Extract the contents to your preferred location. Via the PlatformIO home page open your project and navigate to the extracted folder with the 6-wire version

Open Project

Once inside the folder click to open it

6-wire folder

You will have an editor with a list of files on the left side. First, let’s open model.h, uncomment the Miami model, and comment out the PRE2021 with the // symbols. I also use the PCB_V1 version but I do believe the V2 can be used. So comment accordingly

model.h code

At the bottom, you should find the platformio.ini file. Let’s open that up and define our board as the WeMos D1 mini

platformio.ini code

Next, we will open the BCW_6w_type1.h file and define the pins that we are going to use on our WeMos board.

BCW_6w_type1.h code

Those are the pins we will solder the JST connector wires to. Before we start soldering let’s build and upload our code to see if it works correctly.

Upload the sketch via USB with the arrow at the bottom left corner

Sketch upload

Once that is done we need to also do it via PlatformIO as it will give you a 404 error when trying to connect if you don’t do this. Click the PlatformIO icon and go to Project Tasks>nodemcuv2>Platform. Then Build Filesystem Image.

Build and upload

Wait for it to complete and then Upload Filesystem Image. Once both are done the WeMos will start providing a Wi-Fi hotspot called Lay-Z-Spa Module. The password for it is layzspam0dule. Once connected you can access the module via your browser by visiting http://layzspa.local. Click the three lines at the top and go into Network Config

Network configuration

Here you can set up your home Wi-Fi network. So that it will always connect and be accessible from your home network. Enter the SSID and password of your network and click save. Shortly it should be connected to your network. We can leave everything else as is for now and continue with the installation of the module to the pump.
Now we solder the connector cables. Here is the diagram of how the wiring should fit.

Wiring diagram

Solder the wires as shown in the above diagram. We won’t be using the one wire on the white-colored wire connector as it is not needed since it is used for the audio sound when turning on. Once installed we will get this little jingle that plays whenever you turn on the hot tub.
You should have something like this once done with one female and one male connector coming from the board.

Soldered connectors

Not my exact picture but taken from the GitHub page as an example. Now plug both the connectors into the two plugs that we disconnected which connect the display to the pump. This WeMos board will sit in between them and act as the bridge and controller.

Connections

Without assembling everything back we can test if it works. Place the top cover with the wiring and board inside somewhere in an empty space. Plug the power in and turn on the pump. If everything went well you should hear a jingle. The display will scroll some text informing you of the current version and show the IP address too. It will then display as normal showing the temperature. Now we can test if the remote control works or not.
Go into the web interface and you should have controls ready to test.

Main interface

Since when I tested the board was not connected to the tub and there was no water I avoided testing the Heater and Pump functions. I just tested if setting the temperature and activating the Bubbles works. So if you were able to turn on the Bubbles and the pump started blowing air congratulations you should have everything working. Setting the temperature up or down should reflect on the display as well. We’re done! Now all that is left is to assemble the top cover back with the 6 screws. If you are worried about the board getting wet (not that I found any water inside the pump) You might want to cover it with something or have a case for it. You can of course 3D Print one for yourself. There are many models on Thingiverse like this https://www.thingiverse.com/thing:2045664

Conclusion

That is pretty much all there is to do. Once assembled you can place it back on your hot tub and check all the other functions. Also, be aware of your Wi-Fi reception if the hot tub is far from your router it might not reach to connect so check if there is good connectivity. For additional functions, it supports MQTT so you can add the Lay-Z-Spa to something like Home Assistant for automation and control. For more information on the features, model support, issues and support go to the GitHub link https://github.com/visualapproach. The community is quite active and healthy there and can help you out.

I hope this has helped you and provided some fun functionality.

Share

Antanaitis

I always wanted to somehow document my work and ideas. I'm finally writing something.

You may also like...

51 Responses

  1. Hi, I’ve seen your Reddit post. Would you give it a try to EcO from iopool? We can ship you one smart water monitor for free to review it. We have users in France who have set up nice automation using it with Jeedom. A public API is available.

    • Antanaitis says:

      Hello Jonathan, sounds interesting. Please contact me via e-mail to discuss further

      info @ antanaitis [.] lt

      • Unfortunalty, I’ve one error when trying to send you one email. Can you send me one at jonathan @ iopool [.] com

        Thank’s!

        FYI
        Address not found
        Your message did not reach info @ antanaitis [.] it because the domain antanaitis [.] it could not be found. Please check your message for typos and unnecessary spaces and try again.

  2. James Rossell says:

    Thanks for this guide. I’ve got the same version pump as you and have ordered the parts you suggested in the blog. I’m trying to follow the instructions, but the latest version from Github linked 4.1.1 don’t have the same files or definitions you suggest in your example.

    Could you possibly help or update your guide to work with the latest version of the Code base?

  3. Jameson says:

    THANK YOU FOR THIS GUIDE! I was able to follow your guide for building the module and VS Code/PlatformIO setup. It made this project very straightforward. Everything worked the first time. I’ve never had that happen with an open source build.

    Additionally, for anybody who comes here trying to get version 4 working…. Version 4 now includes the ability to change the pin assignments and the SPA Model in the “SPA Config” tab from the webpage, once loaded.

    For my S100105 pump, I set to “6 wire 2021”, PCB = “custom” and then the wires in the order they are on this site.

    CIO = 4,3,2
    DSP = 7,6,5,0

    The only “code” change I had to make in the 4.1.2 project was switching the board to “d1_mini” in the platformio.ini file.

    All other settings we left default.

  4. flexo says:

    Shouldn’t a level converter be used? Is no converter needed for the S100101 model?

  5. Colorsone says:

    I bought the Wemos V4 version. Does this also work with that board?

  6. Alec says:

    Hi,
    Really appreciate this guide – just to confirm: with the D1 mini you do not need the PCB suggested in the visualapproach project?
    Thanks.

  7. Colorsone says:

    Bought the wemos D1 Mini V4 but my cables are also another colour. Don’t know what needs to go where now. Is it possible to contact u somewhere to send a picture?

  8. Jonathan B says:

    I bought my friend the SaluSpa Milan as a birthday gift and the factory wifi module keeps cutting out and does not broadcast long enough to get it connected to the wifi. The wifi router is 5 feet away through a glass door, and there are no devices nearby enough to cause interference. Bestway does not respond to any support requests and the warranty has since expired. Is there any instruction on how to replace the factory wifi module or connect to it to program it with the wifi information, or anything like that? If not, would this set of instructions work for a model that already has wifi?

    • Antanaitis says:

      Hello,

      Sadly I have never seen or owned a version that already has the wifi module builtin. Can’t really help you out there. I would suggest checking out the github and open up the egg to see if the wiring is anything similar to the non-wifi models and it could be perhaps incorporated the same way. Although I haven’t seen examples of this.

  9. Damian Leszczyński says:

    Hi i’m not sure how exactly I should connect the wires to d1_mini and what pinouts should be set.

    Pinout is CIO: 4/3/2 and DSP 7/6/5/0 but it applies to the S100101 pump. What should be in S200102? Same?

    I ready about various problems with controlling this pump after connecting. Maybe they are due to improper connections?

  10. Basn says:

    Hey, can you take a better picture or draw something about the soldering.. its a bit confusing.
    Since the connectors on the pictures should go together?
    I am really confused 🙂

  11. Alex says:

    Hey,

    I have posted the question on the Github and I have had some good help from there, but has anyone managed to use the V4 of the Wemos board?
    Pin numbering is slightly different and I have no success getting it to work, so not sure if I have to update one of the files as changing the numbers on the GUI does not help and I do not get anything on the display.

    Just one thing, and not sure if this is an issue, but I am using the USB-C to power the board as it has only 3.3 V, but then found after that VBUS is actaully 5V!!

    Cheers
    Alex

  12. Jordan says:

    Hello,
    Thank you for this blog post ! Very interresting !

    I want to implement it for my own but I have only few knowledge on soldering / electronics.

    On my Amazon (FR) store, I only have “JST-XH”, but you mention “JST-SM”. Based on what I read, I could use it but could you confirm it ?

    Thank you for your help 🙂
    Jordan

    • Antanaitis says:

      Hi,

      Based on what I found these do not seem the same. The connectors in the photos seem different and may not fit what is used in the egg. I can only confirm the JST-SM as I used those. The wires are probably fine but the connector I am not sure about. The matter is getting the right connectors to fit what is used inside the spa egg.

      Lukas

      • Jordan says:

        Thank you for your reply ! I have purchased the correct cable on Aliexpress, I’ll just have to be patient now before testing it 🙂

        Jordan

  13. Vesa Lappalainen says:

    Do you have any idea why my on does not work. ESP starts, I can connect there and see the interface and I have set the HW Config as descriped. When I connet it to LayZ, it shows me the temperature, but non of the buttons can be used. And the LayZ orginal panel shows the temp, but non of it’s buttons works.

  14. Vesa Lappalainen says:

    I took a picture of my shouldering and settings:

    https://tim.jyu.fi/view/users/vesal/oma/talo/talo/layz

    • Vesa Lappalainen says:

      I had problem with port D3 and moved it different place. Also added 1k resistors and LLC to cable going to CIO. Now it works.

  15. Martin says:

    I have the pump S100103 and used this guide using only a D1 mini and it is not working properly. I can control it from the app and from home assistant but all the temp readings and everything go up and down all the time which causes the heater to constantly switch on and off. Sometimes it is so bad that the pool doesn’t even get any hotter and just maintains temperature. I removed the controller now and will add logic level shifters to see if that fixes the issue.

    • Antanaitis says:

      Your pump model is different perhaps? So the configuration here may not apply in your case and may need additional tinkering with the settings. The best bet would be to check the Github page. Most likely someone has a similar model.

  16. Franck says:

    hello, I just tried to install as explained in update 2023-06 with a d1 mini v3, I soldered the pcb as in this page and finally modified as indicated board = d1_mini. however it doesn’t work when I mount all of this in the honolulu S100101 pump nothing turns on. no screen no beep. I just hear a relay that works once then goes out. Where do you think the problem could come from? advance thanks. PS: I’m new to programming.

    • Antanaitis says:

      Most likely a wiring issue. I’ve had this problem and I had to remove the board from the pump, resoldering and refitting the wires helped in my case.
      For more troubleshooting steps I would try to just plug it in and see if the web interface boots up and is accessible. At least that way you can confirm that the board is functional. Interesting to note is that sometimes it takes an actual minute or two for the screen to come on if the wifi connection is poor. I think once it boots up it tries to connect to Wifi once it’s connected it starts displaying as the first thing it shows is the software version, date and I believe IP address. Not exactly sure about the process since I can’t test it further as the tub is packed up for the season.

  17. Matthew says:

    Have you ever had it to where the “buttons” don’t work in the web interface? When I select “bubbles” or any other option the slider moves, and then goes back to off. I tried reloading software onto a new board and the same issue happens

  18. Brett Seargent says:

    Hi,

    I have a s100102 pump

    Followed the guide soldered the wires

    Vscode and set up in app was fine and working

    When plugged into heater unit the screen simply won’t turn on the heater makes like a relay click and then nothing

    The unit broadcasts its wifi while plugged into the spa but the UI won’t load (added 5v usb too it and the ui worked but still no screen)

    Any hot tips ? Soldering seems neat no cross over etc

  19. allan frandsen says:

    hey i dont know if you are the right guy to ask but i will try anyway
    i got a Lay-Z Spabad Hawaii HydroJet Pro whitout wifi
    do you know if i can buy a wifi modul for after mounting for this spa
    hope to hear from you
    b.r Allan Frandsen

  20. Richard Goforth says:

    Does the web app allow you to schedule just the filter pump to say run 8 hours a day. Or would I have to set up home assistant to do that.

  21. allan frandsen says:

    thanks for replay

  22. Bricklin says:

    I have tried to connect to the bord after setup wifi, it says that the ip to the board its not safe so i cannot acess it. Wifi setup went fine.
    I should be able to connect to the board without connecting it to the spa right ?

    • Antanaitis says:

      Your browser security is most likely blocking it. So you would need to allow the connection. Some browsers just don’t let you connect to sites that are hosted under http:// instead of https:// so they get marked as insecure.
      Example in Firefox to allow such connections. Depends on the browser and settings you are using for it may differ.
      Firefox example

  23. Bricklin says:

    Im using fireox have tried chome to an http://
    I get the message

    Content Encoding Error

    The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

    Please contact the web site owners to inform them of this problem.

    • Bricklin says:

      and its not possible to allow it

    • Antanaitis says:

      Not something I have experienced. Never seen such an error. Got any antivirus/firewalls running? Do the browsers you use have any add-ons/extensions enabled? I would try from a clean slate and test on a fresh unmodified browser.

      If all else fails best would probably be to try to do a network recording on for example Firefox:
      Recording Firefox network log

      With that you could then try to raise an issue in the maintainers GitHub page, this might have enough information to troubleshoot further.

  24. Jordan says:

    Hello @Antanaitis,
    I’ve done all steps but when connecting to the SPA I have no controls on SPA (neither on app). I have run the hwtest page and there is no error : does it mean that the soldering is ok ?

    How can I diagnose what’s wrong ? I’ve read that on most cases it’s related to soldering but the hwtest page says everything is OK so I’m in the dark here.

    Thank you for your help!

Leave a Reply

Your email address will not be published. Required fields are marked *