Skip to content

Instantly share code, notes, and snippets.

@ccutrer
Last active April 7, 2023 13:51
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ccutrer/ba945ac2ff9508d9e151556b572f2503 to your computer and use it in GitHub Desktop.
Save ccutrer/ba945ac2ff9508d9e151556b572f2503 to your computer and use it in GitHub Desktop.
Balboa Spa Control Protocol
@smarty125
Copy link

+1 watching this topic...have Wi-Fi balboa spa controller....much home automation...just no way of tying the hot tub into the home system...

@swissboy22
Copy link

swissboy22 commented Feb 9, 2017

Hey guy! A Perfect Solution!! Worked like a charm and i translated it to php. I have just one question perhaps you know and would be great! If i want to toggle pump3 i dont know which hex to use for it. I tryed 0600 and 95 CB as Logical sequence but that is not working.

@garbled1
Copy link

garbled1 commented Apr 2, 2017

Found the crc:

python2.7 ./pycrc.py --width 8 --poly 0x07 --reflect-in false --reflect-out false --xor-out 0x02 --xor-in 0x02 --algo=bbb --generate=c -o crc.c

Output from reveng:
width=8 poly=0x07 init=0x02 refin=false refout=false xorout=0x02 check=0x04 residue=0x0e name=(none)

The data for the CRC is the full message, including the length param, without the header/footer 0x7e.

python2.7 ./pycrc.py --width 8 --poly 0x07 --reflect-in false --reflect-out false --xor-out 0x02 --xor-in 0x02 --check-hexstring=1DFFAF13000064070700000100000400000000000000000064000000
0xc2

Which matches: 7E1DFFAF13000064070700000100000400000000000000000064000000C27E

If you use pycrc with the parameters I gave above, it will generate C code that correctly computes the checksum. (I have one of these too, and am writing home automation code that talks to one. https://sourceforge.net/p/gnhast/

Your page was incredibly helpful in getting me going. Thanks!

@garbled1
Copy link

garbled1 commented Apr 4, 2017

What can you tell me about your spa? I'm trying to figure out the config response. Mine has 2 pumps, no circ pump, no blower. Config type 4. The first 3 (seem to be the significant ones) of the config response are 02 14 80
Yours appeared to be 02 02 80

Mine is a BP2000G1 with a TP800 Display.

@ccutrer
Copy link
Author

ccutrer commented Apr 11, 2017

Oh awesome! I didn't even notice your message, just happened to be searching through my gists for something else.

I have a Bullfrog A7L. Two two-speed pumps, separate circ pump, and lights. The wifi module and everything all came pre-installed.

@ccutrer
Copy link
Author

ccutrer commented Apr 12, 2017

ok, my main controller is a BFBP20 (looks like a Bullfrog specific model number, but has the Balboa logo on it), and the wifi module is a BWGWIFI1.

I've also graduated my code from the gist to an actual repo, and updated it with the CRC info. Thanks again for that! When I next find some time to work on it, I plan to pretend to be a hot tub and see what other configurations I can guess by feeding different info back to the iOS app.

@tirtaps
Copy link

tirtaps commented Apr 17, 2017

I own a balboa spa with wifi module.
I would like to monitoring it otherwise than with the ios or android app.
So I found this thread wich is fully interesting, but i am unable to run the ruby application.
May you help me ? I would like to use ubuntu script
How to logon the correct module, mac address ?
Is there a security layer, with SSID and key?
thanks a lot

@garbled1
Copy link

Hrmm.. is this the best place for me to get ahold of you? I found a bunch more information on mine, and would like you to run some specific commands on yours.

@swissboy22
Copy link

Hey garbled or ccutrer.. is there any chance to contact you :-) i still dont know how to activate for example pump3 or the blower :-( everything else work like a charm

@MHotchin
Copy link

MHotchin commented Jan 9, 2018

I'm leaving this note here since I used the info from this project to start my own. I have created a proof-of-concept Windows program to communicate with my SPA. If you would be interested in how that project develops, I have a GitHub repository:
https://github.com/MHotchin/BalboaSpaComms
NOTE - just proof of concept right now, but I would like to get it working and usable.

@GreenZapdos
Copy link

Hey I'm looking into controlling a Balboa spa over the same connection that the wifi module and topside panels connect to. It looks like it is an rs458 connection. I am thinking of connecting it to a raspberry pi and controlling it that way, something similar to this project: https://github.com/sfeakes/AqualinkD I'm trying to figure out the pinout of that port. Has anyone opened up their wifi module or button panel? If anyone has any info on this, I would love to know. Thanks

@kgerlich
Copy link

kgerlich commented Nov 20, 2018

@GreenZapdos > Hey I'm looking into controlling a Balboa spa over the same connection that the wifi module and topside panels connect to. It looks like it is an rs458 connection. I am thinking of connecting it to a raspberry pi and controlling it that way, something similar to this project: https://github.com/sfeakes/AqualinkD I'm trying to figure out the pinout of that port. Has anyone opened up their wifi module or button panel? If anyone has any info on this, I would love to know. Thanks

Have you been able to analyse a little more how the panels work? I have a VL801D that I have disassembled. Chips are etched. I can start by finding out how to power this baby, then do some serial analyser but if you have more info already, please share with me.

@da2001
Copy link

da2001 commented Jun 3, 2019

Hey guy! A Perfect Solution!! Worked like a charm and i translated it to php. I have just one question perhaps you know and would be great! If i want to toggle pump3 i dont know which hex to use for it. I tryed 0600 and 95 CB as Logical sequence but that is not working.

Hey swissboy22, can you send me or publish your php success? This would help me a lot. :)

@EspenT
Copy link

EspenT commented Jun 18, 2019

@kgerlich Did you get anywhere with this? I’m about doing the same.

@therealmysteryman
Copy link

Any sucess ?

@intergil
Copy link

intergil commented Sep 8, 2019

Wondering if anything developed on the direct wired connection bypassing the wifi module - any success?

@rsrawley
Copy link

I managed to interface a Pi directly to the controller : you need a RS-485 module and a Micro Fit ATX cable for the connection. My code and research (see README) is here : https://github.com/rsrawley/spaControl. I use Node.js as a backend server. Took me a while to figure it all out, so hopefully this helps someone out !

@EspenT
Copy link

EspenT commented May 4, 2020

Thank you @rsrawley. Will look into the details of your project when I have the time.

@cribskip
Copy link

cribskip commented Jun 6, 2020

As I just got my Spa with a Balboa BP2100G0 with a TP600 UI, I'll order the components to build a mqtt bridge with esp8266 + RS485 Transceiver.

Be prepared for me to ask questions ;-)
I'll then link my repo here.

@Smitty357
Copy link

As I just got my Spa with a Balboa BP2100G0 with a TP600 UI, I'll order the components to build a mqtt bridge with esp8266 + RS485 Transceiver.

Be prepared for me to ask questions ;-)
I'll then link my repo here.

Any update on this? I have mine down right now to replace motor, so very interested in getting it added to my Home Assistant.

@cribskip
Copy link

Yep, working really fine ;-)
https://github.com/cribskip/esp8266_spa

@andreasmader
Copy link

Hey guy! A Perfect Solution!! Worked like a charm and i translated it to php. I have just one question perhaps you know and would be great! If i want to toggle pump3 i dont know which hex to use for it. I tryed 0600 and 95 CB as Logical sequence but that is not working.

Hi swissboy - would you mind sharing your php solution?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment