├── .DS_Store
├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── library-package-addition-request.md
│ └── question---other.md
├── .gitignore
├── LICENSE
├── README.md
├── demo.js
└── spanet.md
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlaT2512/spanet-api/f8131f19d112c5855bccd134beb1eb7e85f59576/.DS_Store
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help improve this repository
4 | title: ''
5 | labels: bug, help wanted
6 | assignees: BlaT2512
7 |
8 | ---
9 |
10 | **Offending file/documentation**
11 | Name of the code snippet which contains the error (e.g. code-demos/code-demo.ts), documentation file which contains the error (e.g. README file) or other.
12 |
13 | **Describe the bug**
14 | A clear and concise description of what the bug is.
15 |
16 | **To Reproduce**
17 | Steps to reproduce the behavior:
18 | 1. Go to '...'
19 | 2. Click on '....'
20 | 3. Scroll down to '....'
21 | 4. See error
22 |
23 | **Expected behavior**
24 | A clear and concise description of what you expected to happen.
25 |
26 | **Screenshots**
27 | If applicable, add screenshots to help explain your problem.
28 |
29 | **Desktop (please complete the following information):**
30 | - OS: [e.g. Windows 10]
31 | - Version [CHOOSE BASED ON ISSUE]: Node.JS & NPM version, Python & PIP version, Xcode and Swift version, Golang version or N/A.
32 |
33 | **Additional context**
34 | Add any other context about the problem here.
35 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/library-package-addition-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Library/package addition request
3 | about: Request your library/package to be added to the official list
4 | title: ''
5 | labels: Library/package addition
6 | assignees: BlaT2512
7 |
8 | ---
9 |
10 | **Name and URL to repository**
11 | The name of your library/package (e.g. homebridge-spanet) and the URL to the Github repository or public repo on another website. Also add the URL to the package manager it is listed on if applicable.
12 |
13 | **Describe your package/library**
14 | A clear and concise description of what platform/programming language it is created for, how it is installed and how much of the API it implements.
15 |
16 | **Code example**
17 | A well-commented simple example of using the various commands/calls of your library/package in any programming language you like (preferably one of the ones used for the examples: typescript, javascript, python, golang or swift).
18 |
19 | ```
20 | // Place your code in here, between the 3 backticks for it to be formatted correctly
21 | ```
22 |
23 | **Additional context**
24 | Add any other details or screenshots about the library/package here.
25 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/question---other.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Question / Other
3 | about: Simply ask a question or detail other types of issues here
4 | title: ''
5 | labels: question
6 | assignees: BlaT2512
7 |
8 | ---
9 |
10 | **Question**
11 | Clear and concise question or description of your issue.
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 | package-lock.json
278 |
279 | # Visual Studio 6 build log
280 | *.plg
281 |
282 | # Visual Studio 6 workspace options file
283 | *.opt
284 |
285 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
286 | *.vbw
287 |
288 | # Visual Studio LightSwitch build output
289 | **/*.HTMLClient/GeneratedArtifacts
290 | **/*.DesktopClient/GeneratedArtifacts
291 | **/*.DesktopClient/ModelManifest.xml
292 | **/*.Server/GeneratedArtifacts
293 | **/*.Server/ModelManifest.xml
294 | _Pvt_Extensions
295 |
296 | # Paket dependency manager
297 | .paket/paket.exe
298 | paket-files/
299 |
300 | # FAKE - F# Make
301 | .fake/
302 |
303 | # CodeRush personal settings
304 | .cr/personal
305 |
306 | # Python Tools for Visual Studio (PTVS)
307 | __pycache__/
308 | *.pyc
309 |
310 | # Cake - Uncomment if you are using it
311 | # tools/**
312 | # !tools/packages.config
313 |
314 | # Tabs Studio
315 | *.tss
316 |
317 | # Telerik's JustMock configuration file
318 | *.jmconfig
319 |
320 | # BizTalk build output
321 | *.btp.cs
322 | *.btm.cs
323 | *.odx.cs
324 | *.xsd.cs
325 |
326 | # OpenCover UI analysis results
327 | OpenCover/
328 |
329 | # Azure Stream Analytics local run output
330 | ASALocalRun/
331 |
332 | # MSBuild Binary and Structured Log
333 | *.binlog
334 |
335 | # NVidia Nsight GPU debugger configuration file
336 | *.nvuser
337 |
338 | # MFractors (Xamarin productivity tool) working folder
339 | .mfractor/
340 |
341 | # Local History for Visual Studio
342 | .localhistory/
343 |
344 | # BeatPulse healthcheck temp database
345 | healthchecksdb
346 |
347 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
348 | MigrationBackup/
349 |
350 | # Ionide (cross platform F# VS Code tools) working folder
351 | .ionide/
352 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Blake Tourneur
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # SpaNET API
6 | This documentation allows you to control SpaNET WiFi controllers which can be found in Vortex/SpaNET spa's. If your spa works with the SpaNET SpaLINK app, this documentation will help you automate and integrate control of it into your own code.
7 |
8 | # Plugins & Libraries
9 | * Homebridge: homebridge-spanet
10 | [Github](https://github.com/BlaT2512/homebridge-spanet)
11 |
12 | # Credits
13 | Thanks to [@devbobo's](https://github.com/devbobo) original work and inspiration to make this full API.
14 | Also thanks to [@thehoff](https://github.com/thehoff) for contributions and assistance developing this.
15 |
16 | # API (DEPRECATED)
17 | ### See [spanet.md](spanet.md)
18 | Note - SpaNET have now moved to a much easier to work with endpoint-based API, see https://github.com/BlaT2512/spanet-api/issues/4
19 |
20 | Please email for the new Swagger documentation and/or sample code
21 |
22 | # FAQs
23 | **Q - Which spa companies produce spa's using the SpaNET spa controller and are compatible with the SmartLINK module?**
24 | SpaNET spa controllers can be found in a variety of Vortex, Oasis and many other brand spas/swim spas/spa pools.
25 |
26 | **Q - If my spa has a compatible SpaNET controller without WiFi, can I make my own SmartLINK module?**
27 | This should be possible, and testing to successfully make and program a homemade SmartLINK compatible module is currently underway. This will be updated if it is completed and a documentation is decided to be released about it.
28 |
--------------------------------------------------------------------------------
/demo.js:
--------------------------------------------------------------------------------
1 | const axios = require('axios');
2 |
3 | const email = 'YOUR SMARTLINK EMAIL';
4 | const password = 'YOUR SMARTLINK PASSWORD';
5 |
6 | // Create the base API details
7 | const spanetapi = axios.create ({
8 | baseURL: 'https://app.spanet.net.au/api',
9 | timeout: 2000,
10 | headers: {'User-Agent': 'SpaNET/2 CFNetwork/1465.1 Darwin/23.0.0'},
11 | validateStatus: function (status) {
12 | return status === 200;
13 | },
14 | });
15 |
16 | // Post to the authenticate endpoint with email and password in JSON body
17 | spanetapi.post('/Login/Authenticate', {
18 | 'email': email,
19 | 'password': password,
20 | 'userDeviceId': 'Any random string / UUID',
21 | 'language': 'en',
22 | })
23 | .then((response) => {
24 | const accessToken = response.data.access_token;
25 | console.log('Logged in successfully, Access Token', accessToken);
26 |
27 | // Now use the auth token in authorization header for further requests made
28 | spanetapi.defaults.headers.common['Authorization'] = 'Bearer ' + accessToken;
29 |
30 | // Get from the devices endpoint to list your spas
31 | spanetapi.get('/Devices')
32 | .then((response) => {
33 | console.log('Devices on your account:', response.data.devices);
34 |
35 | // Use the first spa and get the current temperature
36 | if (response.data.devices.length > 0) {
37 | const spa = response.data.devices[0];
38 | console.log('Using spa "' + spa.name + '"');
39 |
40 | spanetapi.get('/Dashboard/' + spa.id)
41 | .then((response) => {
42 | console.log('Current water temperature is', response.data.setTemperature / 10);
43 | })
44 | .catch((error) => {
45 | console.log('Failed to get details of this spa', error);
46 | });
47 |
48 | } else {
49 | console.log('There are no spas on your account');
50 | }
51 | })
52 | .catch((error) => {
53 | console.log('Failed to get list of spas', error);
54 | });
55 | })
56 | .catch((error) => {
57 | console.log('Failed to authenticate, check email and password?', error);
58 | });
59 |
--------------------------------------------------------------------------------
/spanet.md:
--------------------------------------------------------------------------------
1 | # SpaNET SpaLINK API
2 | Thanks to [@devbobo's](https://gist.github.com/devbobo) original work and assistance of [@thehoff](https://github.com/thehoff)
3 |
4 | - [1. Logging into SpaNET](#1-logging-into-spanet)
5 | - [1.1. Obtaining Login Password](#11-obtaining-login-password)
6 | - [1.2. Making Login Request](#12-making-login-request)
7 | - [2. Spa Socket](#2-spa-socket)
8 | - [2.1. Spa Socket Request](#21-spa-socket-request)
9 | - [2.2. Connecting to Spa Socket](#22-connecting-to-spa-socket)
10 | - [3. Spa Status](#3-spa-status)
11 | - [4. Commands](#4-commands)
12 | - [4.1. Spa](#41-spa)
13 | - [4.1.1. Temperature](#411-temperature)
14 | - [4.1.2. Clean/Santise](#412-cleansantise)
15 | - [4.2. Pumps](#42-pumps)
16 | - [4.2.1. Pump 1](#421-pump-1)
17 | - [4.2.2. Pump 2](#422-pump-2)
18 | - [4.2.3. Pump 3](#423-pump-3)
19 | - [4.2.4. Pump 4](#424-pump-4)
20 | - [4.2.5. Pump 5](#425-pump-5)
21 | - [4.3. Blower](#43-blower)
22 | - [4.3.1. Blower](#431-blower)
23 | - [4.3.2. Blower Variable Speed](#432-blower-variable-speed)
24 | - [4.4. Lights](#44-lights)
25 | - [4.4.1. Lights](#441-lights)
26 | - [4.4.2. Lights Off](#442-lights-off)
27 | - [4.4.3. Lights mode](#443-lights-mode)
28 | - [4.4.4. Lights brightness](#444-lights-brightness)
29 | - [4.4.5. Lights effect speed](#445-lights-effect-speed)
30 | - [4.4.6. Lights colour](#446-lights-colour)
31 | - [4.5. Settings](#45-settings)
32 | - [4.5.1. Operation Mode](#451-operation-mode)
33 | - [4.5.2. Filtration](#452-filtration)
34 | - [4.5.2.1. Filtration Runtime](#4521-filtration-runtime)
35 | - [4.5.2.2. Time Between Filtration Cycles](#4522-time-between-filtration-cycles)
36 | - [4.5.3. Sleep Timers](#453-sleep-timers)
37 | - [4.5.3.1. Sleep Timer 1 State](#4531-sleep-timer-1-state)
38 | - [4.5.3.2. Sleep Timer 1 Start Time](#4532-sleep-timer-1-start-time)
39 | - [4.5.3.3. Sleep Timer 1 Finish Time](#4533-sleep-timer-1-finish-time)
40 | - [4.5.3.4. Sleep Timer 2 State](#4534-sleep-timer-2-state)
41 | - [4.5.3.5. Sleep Timer 2 Start Time](#4535-sleep-timer-2-start-time)
42 | - [4.5.3.6. Sleep Timer 2 Finish Time](#4536-sleep-timer-2-finish-time)
43 | - [4.5.4. Power Save](#454-power-save)
44 | - [4.5.4.1. Power Save](#4541-power-save)
45 | - [4.5.4.2. Peak Power Time Start](#4542-peak-power-time-start)
46 | - [4.5.4.3. Peak Power Time End](#4543-peak-power-time-end)
47 | - [4.5.5. Auto Santise](#455-auto-santise)
48 | - [4.5.6. Time Out Duration](#456-time-out-duration)
49 | - [4.5.7. Heat Pump Mode](#457-heat-pump-mode)
50 | - [4.5.7.1. Heat Pump Mode](#4571-heat-pump-mode)
51 | - [4.5.7.2. SV Element Boost](#4572-sv-element-boost)
52 | - [4.5.8. Set Time/Date](#458-set-timedate)
53 | - [4.5.8.1. Time: Hour](#4581-time-hour)
54 | - [4.5.8.2. Time: Minute](#4582-time-minute)
55 | - [4.5.8.3. Date: Year](#4583-date-year)
56 | - [4.5.8.4. Date: Month](#4584-date-month)
57 | - [4.5.8.5. Date: Day](#4585-date-day)
58 | - [4.5.9. Support Mode](#459-support-mode)
59 | - [4.5.10. Lock Mode](#4510-lock-mode)
60 | - [4.5.11. Notification](#4511-notification)
61 | - [5. Raw command list](#5-raw-command-list)
62 | - [6. Reading Spa Data](#6-reading-spa-data)
63 | - [6.1. Spa Status](#61-spa-status)
64 | - [6.1.1. Set Temperature](#611-set-temperature)
65 | - [6.1.2. Water Temperature](#612-water-temperature)
66 | - [6.1.3. Heater Temperature](#613-heater-temperature)
67 | - [6.1.4. Pool Temperature](#614-pool-temperature)
68 | - [6.1.5. Heating](#615-heating)
69 | - [6.1.6. Cleaning (UV/Ozone running)](#616-cleaning-uvozone-running)
70 | - [6.1.7. Cleaning (Sanitise cycle running)](#617-cleaning-sanitise-cycle-running)
71 | - [6.1.8. Auto](#618-auto)
72 | - [6.1.9. Sleeping](#619-sleeping)
73 | - [6.1.10. Water Present](#6110-water-present)
74 | - [6.1.11. Awake Minutes Remaining](#6111-awake-minutes-remaining)
75 | - [6.1.12. Filter Pump Runtime Total](#6112-filter-pump-runtime-total)
76 | - [6.1.13. Filter Pump Req Minutes](#6113-filter-pump-req-minutes)
77 | - [6.1.14. Load Timeout](#6114-load-timeout)
78 | - [6.1.15. Load Timeout](#6115-load-timeout)
79 | - [6.1.16. Hour Meter](#6116-hour-meter)
80 | - [6.1.17. Relay 1](#6117-relay-1)
81 | - [6.1.18. Relay 2](#6118-relay-2)
82 | - [6.1.19. Relay 3](#6119-relay-3)
83 | - [6.1.20. Relay 4](#6120-relay-4)
84 | - [6.1.21. Relay 5](#6121-relay-5)
85 | - [6.1.22. Relay 6](#6122-relay-6)
86 | - [6.1.23. Relay 7](#6123-relay-7)
87 | - [6.1.24. Relay 8](#6124-relay-8)
88 | - [6.1.25. Relay 9](#6125-relay-9)
89 | - [6.2. Pumps](#62-pumps)
90 | - [6.2.1. Pump 1](#621-pump-1)
91 | - [6.2.1.1. Pump 1](#6211-pump-1)
92 | - [6.2.1.2. Pump 1 Installation State](#6212-pump-1-installation-state)
93 | - [6.2.2. Pump 2](#622-pump-2)
94 | - [6.2.2.1. Pump 2](#6221-pump-2)
95 | - [6.2.2.2. Pump 2 Installation State](#6222-pump-2-installation-state)
96 | - [6.2.2.3. Pump 2 Switch On Status](#6223-pump-2-switch-on-status)
97 | - [6.2.3. Pump 3](#623-pump-3)
98 | - [6.2.3.1. Pump 3](#6231-pump-3)
99 | - [6.2.3.2. Pump 3 Installation State](#6232-pump-3-installation-state)
100 | - [6.2.3.3. Pump 3 Switch On Status](#6233-pump-3-switch-on-status)
101 | - [6.2.4. Pump 4](#624-pump-4)
102 | - [6.2.4.1. Pump 4](#6241-pump-4)
103 | - [6.2.4.2. Pump 4 Installation State](#6242-pump-4-installation-state)
104 | - [6.2.4.3. Pump 4 Switch On Status](#6243-pump-4-switch-on-status)
105 | - [6.2.5. Pump 5](#625-pump-5)
106 | - [6.2.5.1. Pump 5 Installation State](#6251-pump-5-installation-state)
107 | - [6.2.5.2. Pump 5 Switch On Status](#6252-pump-5-switch-on-status)
108 | - [6.3. Blower](#63-blower)
109 | - [6.3.1. Blower](#631-blower)
110 | - [6.3.2. Blower Variable Speed](#632-blower-variable-speed)
111 | - [6.4. Lights](#64-lights)
112 | - [6.4.1. Lights](#641-lights)
113 | - [6.4.2. Lights Mode](#642-lights-mode)
114 | - [6.4.3. Lights Brightness](#643-lights-brightness)
115 | - [6.4.4. Lights Effect Speed](#644-lights-effect-speed)
116 | - [6.4.5. Lights Colour](#645-lights-colour)
117 | - [6.5. Settings](#65-settings)
118 | - [6.5.1. Operation Mode](#651-operation-mode)
119 | - [6.5.2. Filtration](#652-filtration)
120 | - [6.5.2.1. Filtration Runtime](#6521-filtration-runtime)
121 | - [6.5.2.2. Time Between Filtration Cycles](#6522-time-between-filtration-cycles)
122 | - [6.5.3. Sleep Timers](#653-sleep-timers)
123 | - [6.5.3.1. Sleep Timer 1 State](#6531-sleep-timer-1-state)
124 | - [6.5.3.2. Sleep Timer 1 Start Time](#6532-sleep-timer-1-start-time)
125 | - [6.5.3.3. Sleep Timer 1 Finish Time](#6533-sleep-timer-1-finish-time)
126 | - [6.5.3.4. Sleep Timer 2 State](#6534-sleep-timer-2-state)
127 | - [6.5.3.5. Sleep Timer 2 Start Time](#6535-sleep-timer-2-start-time)
128 | - [6.5.3.6. Sleep Timer 2 Finish Time](#6536-sleep-timer-2-finish-time)
129 | - [6.5.4. Power Save](#654-power-save)
130 | - [6.5.4.1. Power Save](#6541-power-save)
131 | - [6.5.4.2. Peak Power Time Start](#6542-peak-power-time-start)
132 | - [6.5.4.3. Peak Power Time End](#6543-peak-power-time-end)
133 | - [6.5.5. Auto Sanitise](#655-auto-sanitise)
134 | - [6.5.6. Time Out Mode](#656-time-out-mode)
135 | - [6.5.7. Heat Pump Mode](#657-heat-pump-mode)
136 | - [6.5.7.1. Heat Pump Mode](#6571-heat-pump-mode)
137 | - [6.5.7.2. SV Element Boost](#6572-sv-element-boost)
138 | - [6.5.8. Time/Date](#658-timedate)
139 | - [6.5.8.1. Time: Hour](#6581-time-hour)
140 | - [6.5.8.2. Time: Minute](#6582-time-minute)
141 | - [6.5.8.3. Date: Year](#6583-date-year)
142 | - [6.5.8.4. Date: Month](#6584-date-month)
143 | - [6.5.8.5. Date: Day](#6585-date-day)
144 | - [6.5.9. Support Mode](#659-support-mode)
145 | - [6.5.10. Lock Mode](#6510-lock-mode)
146 | - [6.5.11. Notification](#6511-notification)
147 | - [6.6. Operating Environment](#66-operating-environment)
148 | - [6.6.1. Power](#661-power)
149 | - [6.6.1.1. Supply Volts](#6611-supply-volts)
150 | - [6.6.1.2. Current Draw](#6612-current-draw)
151 | - [6.6.1.3. Variable Heat Element Current Draw](#6613-variable-heat-element-current-draw)
152 | - [6.6.2. Environment](#662-environment)
153 | - [6.6.2.1. Case Temperature](#6621-case-temperature)
154 | - [6.7. OEM Settings](#67-oem-settings)
155 | - [6.7.1. Current Limit](#671-current-limit)
156 | - [6.7.2. Load Shed](#672-load-shed)
157 |
158 |
159 | ## 1. Logging into SpaNET
160 | ### 1.1. Obtaining Login Password
161 | To obtain your Encrypted Password for use below, use the utility for your platform from @thehoff's [SpaNET Password Hash Generator](https://github.com/thehoff/spanet-password-creator)
162 |
163 | ### 1.2. Making Login Request
164 | `POST` https://api.spanet.net.au/api/MemberLogin
165 |
166 | *Request:*
167 | ```javascript
168 | {
169 | "login": [Username],
170 | "api_key": "4a483b9a-8f02-4e46-8bfa-0cf5732dbbd5",
171 | "password": [Encrypted Password]
172 | }
173 | ```
174 | *Response:*
175 | ```javascript
176 | {
177 | "data": {
178 | "email": null,
179 | "id_member": [MemberId],
180 | "login": [Username],
181 | "name": null,
182 | "password": null,
183 | "notification_enabled": 1,
184 | "id_session": [SessionId]
185 | },
186 | "error": null,
187 | "error_code": null,
188 | "message": null,
189 | "success": true
190 | }
191 | ```
192 |
193 | ## 2. Spa Socket
194 | ### 2.1. Spa Socket Request
195 | `GET` https://api.spanet.net.au/api/membersockets?id_member=[MemberId]&id_session=[SessionId]
196 |
197 | *Response:*
198 | ```javascript
199 | {
200 | "data": {
201 | "email": null,
202 | "id_member": 0,
203 | "login": null,
204 | "name": null,
205 | "password": null,
206 | "notification_enabled": 0,
207 | "id_session": null
208 | },
209 | "sockets": [{
210 | "id": [SocketId],
211 | "active": "1",
212 | "id_member": [MemberId],
213 | "id_sockets": [SocketId],
214 | "mac_addr": [MacAddress],
215 | "moburl": [WebSocketUrl]:9090,
216 | "name": [SpaName],
217 | "spaurl": [WebSocketUrl]:9090,
218 | "signalStrength": -69,
219 | "error": false
220 | }],
221 | "error": null,
222 | "error_code": null,
223 | "message": "",
224 | "success": true
225 | }
226 | ```
227 |
228 | ### 2.2. Connecting to Spa Socket
229 | Open TCP Socket to `[WebUrl]` port `9090`, then send:
230 |
231 | *Request:*
232 | ```
233 |
234 | ```
235 |
236 | *Response:*
237 | ```
238 | Successfully connected
239 | ```
240 |
241 | ## 3. Spa Status
242 | Get the current status of the spa.
243 |
244 | *Request:*
245 | ```
246 | RF\n
247 | ```
248 |
249 | *Sample Response:*
250 | ```
251 | RF:
252 | ,R2,18,250,51,70,4,13,50,55,19,6,2020,376,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:
253 | ,R3,32,1,4,4,4,SW V5 17 05 31,SV3,18480001,20000826,1,0,0,0,0,0,NA,7,0,470,Filtering,4,0,7,7,0,0,:
254 | ,R4,NORM,0,0,0,1,0,3547,4,20,4500,7413,567,1686,0,8388608,0,0,5,0,98,0,10084,4,80,100,0,0,4,:
255 | ,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,0,376,0,3,4,0,0,0,0,0,1,2,6,:
256 | ,R6,1,5,30,2,5,8,1,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:
257 | ,R7,2304,0,1,1,1,0,1,0,0,0,253,191,253,240,483,125,77,1,0,0,0,23,200,1,0,1,31,32,35,100,5,:
258 | ,R9,F1,255,0,0,0,0,0,0,0,0,0,0,:
259 | ,RA,F2,0,0,0,0,0,0,255,0,0,0,0,:
260 | ,RB,F3,0,0,0,0,0,0,0,0,0,0,0,:
261 | ,RC,0,1,1,0,0,0,0,0,0,2,0,0,1,0,:
262 | ,RE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,-4,13,30,8,5,1,0,0,0,0,0,:*
263 | ,RG,1,1,1,1,1,1,1-1-014,1-1-01,1-1-01,0-,0-,0,:*
264 | ```
265 | Full documentation of parsing this data is below at section 7
266 |
267 | ## 4. Commands
268 | NOTE - Make sure to include newline (\n) after all websocket commands
269 | ### 4.1. Spa
270 | #### 4.1.1. Temperature
271 | Set the target temperature for the spa.
272 |
273 | *Request:*
274 | ```
275 | W40:nnn
276 | ```
277 |
278 | *Response:*
279 | ```
280 | nnn
281 | ```
282 | where `nnn` denotes temperature in celsius * 10 between `5.0`-`41.0`c (ie: for 35.6c, `nnn` = 356)
283 |
284 | #### 4.1.2. Clean/Santise
285 | Start (or cancel) a Clean cycle.
286 |
287 | *Request:*
288 | ```
289 | W12
290 | ```
291 |
292 | *Response:*
293 | ```
294 | W12
295 | ```
296 |
297 | ### 4.2. Pumps
298 | #### 4.2.1. Pump 1
299 | Control Pump 1.
300 |
301 | *Request:*
302 | ```
303 | S22:n
304 | ```
305 |
306 | *Response:*
307 | ```
308 | S22-OK
309 | ```
310 | where `n` denotes
311 | * `0` - Off
312 | * `1` - On
313 | * `4` - Auto
314 |
315 | #### 4.2.2. Pump 2
316 | Control Pump 2.
317 |
318 | *Request:*
319 | ```
320 | S23:n
321 | ```
322 |
323 | *Response:*
324 | ```
325 | S23-OK
326 | ```
327 | where `n` denotes
328 | * `0` - Off
329 | * `1` - On
330 |
331 | #### 4.2.3. Pump 3
332 | Control Pump 3.
333 |
334 | *Request:*
335 | ```
336 | S24:n
337 | ```
338 |
339 | *Response:*
340 | ```
341 | S24-OK
342 | ```
343 | where `n` denotes
344 | * `0` - Off
345 | * `1` - On
346 |
347 | #### 4.2.4. Pump 4
348 | Control Pump 4, if installed (section 6.2 shows how to check whether pumps are installed).
349 |
350 | *Request:*
351 | ```
352 | S25:n
353 | ```
354 |
355 | *Response:*
356 | ```
357 | S25-OK
358 | ```
359 | where `n` denotes
360 | * `0` - Off
361 | * `1` - On
362 |
363 | #### 4.2.5. Pump 5
364 | Control Pump 5, if installed (section 6.2 shows how to check whether pumps are installed).
365 |
366 | *Request:*
367 | ```
368 | S26:n
369 | ```
370 |
371 | *Response:*
372 | ```
373 | S26-OK
374 | ```
375 | where `n` denotes
376 | * `0` - Off
377 | * `1` - On
378 |
379 | ### 4.3. Blower
380 | #### 4.3.1. Blower
381 | Control the Blower.
382 |
383 | *Request:*
384 | ```
385 | S28:n
386 | ```
387 |
388 | *Response:*
389 | ```
390 | S28-OK
391 | ```
392 | where `n` denotes
393 | * `0` - Variable
394 | * `1` - Ramp
395 | * `2` - Off
396 |
397 | #### 4.3.2. Blower Variable Speed
398 | Set the variable speed of the blower.
399 |
400 | *Request:*
401 | ```
402 | S13:n
403 | ```
404 |
405 | *Response:*
406 | ```
407 | n S13
408 | ```
409 | where `n` denotes speed `1`-`5`
410 |
411 | ### 4.4. Lights
412 | #### 4.4.1. Lights
413 | Toggle the state of the lights (on/off). Other commands should be sent first to set the brightness, mode, effect speed and colour if applicable otherwise last used settings will be applied.
414 |
415 | *Request:*
416 | ```
417 | W14
418 | ```
419 |
420 | *Response:*
421 | ```
422 | W14
423 | ```
424 |
425 | #### 4.4.2. Lights Off
426 | Turn all lights off.
427 |
428 | *Request:*
429 | ```
430 | S11
431 | ```
432 |
433 | *Response:*
434 | ```
435 | S11
436 | ```
437 |
438 | #### 4.4.3. Lights mode
439 | Set the mode for the lights.
440 |
441 | *Request:*
442 | ```
443 | S07:n
444 | ```
445 |
446 | *Response:*
447 | ```
448 | n S07
449 | ```
450 | where `n` denotes
451 | * `0` - White
452 | * `1` - Colour
453 | * `2` - Fade
454 | * `3` - Step
455 | * `4` - Party
456 |
457 | #### 4.4.4. Lights brightness
458 | Set the brightness for the lights.
459 |
460 | *Request:*
461 | ```
462 | S08:n
463 | ```
464 |
465 | *Response:*
466 | ```
467 | n S08
468 | ```
469 | where `n` denotes brightness `1`-`5`
470 |
471 | #### 4.4.5. Lights effect speed
472 | Set the effect speed for the lights. Only applicable for modes fade, step and party.
473 |
474 | *Request:*
475 | ```
476 | S09:n
477 | ```
478 |
479 | *Response:*
480 | ```
481 | n S09
482 | ```
483 | where `n` denotes effect speed `1`-`5`
484 |
485 | #### 4.4.6. Lights colour
486 | Set the colour for the lights. Only applicable for colour mode.
487 |
488 | *Request:*
489 | ```
490 | S10:n
491 | ```
492 |
493 | *Response:*
494 | ```
495 | n S10
496 | ```
497 | where `n` denotes colour `0`-`30`
498 |
499 | ### 4.5. Settings
500 | #### 4.5.1. Operation Mode
501 | Set the operation mode.
502 |
503 | *Request:*
504 | ```
505 | W66:n
506 | ```
507 |
508 | *Response:*
509 | ```
510 | n
511 | ```
512 | where `n` denotes
513 | * `0` - Norm
514 | * `1` - Econ
515 | * `2` - Away
516 | * `3` - Week
517 |
518 | #### 4.5.2. Filtration
519 | ##### 4.5.2.1. Filtration Runtime
520 | Set the filtration runtime.
521 |
522 | *Request:*
523 | ```
524 | W60:n
525 | ```
526 |
527 | *Response:*
528 | ```
529 | n
530 | ```
531 | where `n` denotes hours between `1`-`24`.
532 |
533 | ##### 4.5.2.2. Time Between Filtration Cycles
534 | Set the time between filtration cycles.
535 |
536 | *Request:*
537 | ```
538 | W90:n
539 | ```
540 |
541 | *Response:*
542 | ```
543 | n
544 | ```
545 | where `n` denotes hours as
546 | * `1` - 1 hr
547 | * `2` - 2 hr
548 | * `3` - 3 hr
549 | * `4` - 4 hr
550 | * `6` - 6 hr
551 | * `8` - 8 hr
552 | * `12` - 12 hr
553 | * `24` - 24 hr
554 |
555 | #### 4.5.3. Sleep Timers
556 | ##### 4.5.3.1. Sleep Timer 1 State
557 | Set the state of sleep timer 1.
558 |
559 | *Request:*
560 | ```
561 | W67:n
562 | ```
563 |
564 | *Response:*
565 | ```
566 | n
567 | ```
568 | where `n` denotes
569 | * `128` - Off
570 | * `127` - Everyday
571 | * `96` - Weekends
572 | * `31` - Weekdays
573 |
574 | ##### 4.5.3.2. Sleep Timer 1 Start Time
575 | Set the start time of sleep timer 1 in 24-hour time.
576 |
577 | *Request:*
578 | ```
579 | W68:nnnn
580 | ```
581 |
582 | *Response:*
583 | ```
584 | nnnn
585 | ```
586 | where `nnnn` denotes time between `0`-`5947` with the formula `h*256+m` (ie: for 20:00, `nnnn` = 20\*256+0 = 5120; for 13:47, `nnnn` = 13\*256+47 = 3375)
587 |
588 | ##### 4.5.3.3. Sleep Timer 1 Finish Time
589 | Set the finish time of sleep timer 1 in 24-hour time.
590 |
591 | *Request:*
592 | ```
593 | W69:nnnn
594 | ```
595 |
596 | *Response:*
597 | ```
598 | nnnn
599 | ```
600 | where `nnnn` denotes time between `0`-`5947` with the formula `h*256+m` (ie: for 20:00, `nnnn` = 20\*256+0 = 5120; for 13:47, `nnnn` = 13\*256+47 = 3375)
601 |
602 | ##### 4.5.3.4. Sleep Timer 2 State
603 | Set the state of sleep timer 2.
604 |
605 | *Request:*
606 | ```
607 | W70:n
608 | ```
609 |
610 | *Response:*
611 | ```
612 | n
613 | ```
614 | where `n` denotes
615 | * `128` - Off
616 | * `127` - Everyday
617 | * `96` - Weekends
618 | * `31` - Weekdays
619 |
620 | ##### 4.5.3.5. Sleep Timer 2 Start Time
621 | Set the start time of sleep timer 2 in 24-hour time.
622 |
623 | *Request:*
624 | ```
625 | W71:nnnn
626 | ```
627 |
628 | *Response:*
629 | ```
630 | nnnn
631 | ```
632 | where `nnnn` denotes time between `0`-`5947` with the formula `h*256+m` (ie: for 20:00, `nnnn` = 20\*256+0 = 5120; for 13:47, `nnnn` = 13\*256+47 = 3375)
633 |
634 | ##### 4.5.3.6. Sleep Timer 2 Finish Time
635 | Set the finish time of sleep timer 2 in 24-hour time.
636 |
637 | *Request:*
638 | ```
639 | W72:nnnn
640 | ```
641 |
642 | *Response:*
643 | ```
644 | nnnn
645 | ```
646 | where `nnnn` denotes time between `0`-`5947` with the formula `h*256+m` (ie: for 20:00, `nnnn` = 20\*256+0 = 5120; for 13:47, `nnnn` = 13\*256+47 = 3375)
647 |
648 | #### 4.5.4. Power Save
649 | ##### 4.5.4.1. Power Save
650 | Set the Power Save option.
651 |
652 | *Request:*
653 | ```
654 | W63:n
655 | ```
656 |
657 | *Response:*
658 | ```
659 | n
660 | ```
661 | where `n` denotes
662 | * `0` - Off
663 | * `1` - Low
664 | * `2` - High
665 |
666 | ##### 4.5.4.2. Peak Power Time Start
667 | Set the start of the Peak Power Time, in hours and minutes.
668 |
669 | *Request:*
670 | ```
671 | W64:nnnn
672 | ```
673 |
674 | *Response:*
675 | ```
676 | nnnn
677 | ```
678 | where `nnnn` denotes time between `0`-`5947` with the formula `h*256+m` (ie: for 20:00, `nnnn` = 20\*256+0 = 5120; for 13:47, `nnnn` = 13\*256+47 = 3375)
679 |
680 | ##### 4.5.4.3. Peak Power Time End
681 | Set the end of the Peak Power Time, in hours and minutes.
682 |
683 | *Request:*
684 | ```
685 | W64:nnnn
686 | ```
687 |
688 | *Response:*
689 | ```
690 | nnnn
691 | ```
692 | where `nnnn` denotes time between `0`-`5947` with the formula `h*256+m` (ie: for 20:00, `nnnn` = 20\*256+0 = 5120; for 13:47, `nnnn` = 13\*256+47 = 3375)
693 |
694 | #### 4.5.5. Auto Santise
695 | Set the Auto Sanitise starting time.
696 |
697 | *Request:*
698 | ```
699 | W73:nnnn
700 | ```
701 |
702 | *Response:*
703 | ```
704 | nnnn
705 | ```
706 | where `nnnn` denotes time between `0`-`5947` with the formula `h*256+m` (ie: for 20:00, `nnnn` = 20\*256+0 = 5120; for 13:47, `nnnn` = 13\*256+47 = 3375)
707 |
708 | #### 4.5.6. Time Out Duration
709 | Set the Time Out duration for pumps and blower.
710 |
711 | *Request:*
712 | ```
713 | W74:nn
714 | ```
715 |
716 | *Response:*
717 | ```
718 | nn
719 | ```
720 | where `nn` denotes time in minutes from `10`-`60`
721 |
722 | #### 4.5.7. Heat Pump Mode
723 | ##### 4.5.7.1. Heat Pump Mode
724 | Set the Heat Pump Mode.
725 |
726 | *Request:*
727 | ```
728 | W99:n
729 | ```
730 |
731 | *Response:*
732 | ```
733 | n
734 | ```
735 | where `n` denotes
736 | * `0` - Auto
737 | * `1` - Heat
738 | * `2` - Cool
739 | * `3` - Disabled
740 |
741 | ##### 4.5.7.2. SV Element Boost
742 | Turn on/off SV Element Boost.
743 |
744 | *Request:*
745 | ```
746 | W98:n
747 | ```
748 |
749 | *Response:*
750 | ```
751 | n
752 | ```
753 | where `n` denotes
754 | * `0` - Off
755 | * `1` - On
756 |
757 | #### 4.5.8. Set Time/Date
758 | ##### 4.5.8.1. Time: Hour
759 | Set the hour of the day for the spa.
760 |
761 | *Request:*
762 | ```
763 | S04:nn
764 | ```
765 |
766 | *Response:*
767 | ```
768 | nn
769 | S04
770 | ```
771 | where `nn` denotes hour of the day from `0`-`23`
772 |
773 | ##### 4.5.8.2. Time: Minute
774 | Set the minute of the hour for the spa.
775 |
776 | *Request:*
777 | ```
778 | S05:nn
779 | ```
780 |
781 | *Response:*
782 | ```
783 | nn
784 | S05
785 | ```
786 | where `nn` denotes minute of the hour from `00`-`59`
787 |
788 | ##### 4.5.8.3. Date: Year
789 | Set the year for the spa.
790 |
791 | *Request:*
792 | ```
793 | S01:nnnn
794 | ```
795 |
796 | *Response:*
797 | ```
798 | nnnn
799 | S01
800 | ```
801 | where `nnnn` denotes a valid year from `1970`-`2037` (correct 2021)
802 |
803 | ##### 4.5.8.4. Date: Month
804 | Set the month for the spa.
805 |
806 | *Request:*
807 | ```
808 | S02:nn
809 | ```
810 |
811 | *Response:*
812 | ```
813 | nn
814 | S02
815 | ```
816 | where `nn` denotes the month represented by a number from `1`-`12`
817 |
818 | ##### 4.5.8.5. Date: Day
819 | Set the day for the spa.
820 |
821 | *Request:*
822 | ```
823 | S03:nn
824 | ```
825 |
826 | *Response:*
827 | ```
828 | nn
829 | S03
830 | ```
831 | where `nn` denotes the day represented from `1`-`31` (must be a valid day for the current month)
832 |
833 | #### 4.5.9. Support Mode
834 | Set support mode on/off for the spa with a pin.
835 |
836 | `POST` https://api.spanet.net.au/api/MemberLogin
837 |
838 | *Request:*
839 | ```javascript
840 | {
841 | "login": [Username],
842 | "pin": [Pin],
843 | "password": [Encrypted Password]
844 | }
845 | ```
846 | *Response:*
847 | ```javascript
848 | {
849 | "error": null,
850 | "error_code": null,
851 | "message": null,
852 | "success": true
853 | }
854 | ```
855 | where Pin is either a 6-digit pin which will be used as the support code to turn it on (should be randomly generated by code), or a blank string to turn it off ("").
856 |
857 | #### 4.5.10. Lock Mode
858 | Set the Lock Mode.
859 |
860 | *Request:*
861 | ```
862 | S21:n
863 | ```
864 |
865 | *Response:*
866 | ```
867 | n
868 | ```
869 | where `n` denotes
870 | * `0` - Off
871 | * `1` - Partial
872 | * `2` - Full
873 |
874 | #### 4.5.11. Notification
875 | Set push notification mode on/off
876 |
877 | `GET` https://api.spanet.net.au/api/membersetnotification?login=[Username]&password=[Encrypted Password]&token=(null)¬ificationOnOff=[Bool]&type=1
878 |
879 | *Response:*
880 | ```javascript
881 | {
882 | "error": null,
883 | "error_code": null,
884 | "message": null,
885 | "success": true
886 | }
887 | ```
888 | where Bool is either true for notifications on, or false for notifications off.
889 |
890 | ## 5. Raw command list
891 |
892 | S01 - Date / Year
893 | S02 - Date / Month
894 | S03 - Date / Day
895 | S04 - Time / Hour
896 | S05 - Time / Minute
897 | S06 - Time / N/A
898 | S07 - Lights / Mode
899 | S08 - Lights / Brightness
900 | S09 - Lights / Effect Speed
901 | S10 - Lights / Colour
902 | S11 - Lights / Off
903 | S13 - Blower / Variable Speed
904 | S21 - Settings / Lock Mode
905 | S22 - Pumps / Pump 1
906 | S23 - Pumps / Pump 2
907 | S24 - Pumps / Pump 3
908 | S25 - Pumps / Pump 4
909 | S26 - Pumps / Pump 5
910 | S27 - Pumps / Pump Variable
911 | S28 - Blower / Blower
912 | W12 - Clean / Sanitise
913 | W14 - Lights / Toggle
914 | W40 - Spa / Temperature
915 | W60 - Filtration / Runtime
916 | W63 - Settings / Power Save
917 | W64 - Settings / Power Save / Peak Power Time Begin
918 | W65 - Settings / Power Save / Peak Power Time End
919 | W66 - Settings / Operation Mode
920 | W67 - Sleep Timers / Sleep Timer 1 State
921 | W68 - Sleep Timers / Sleep Timer 1 Start Time
922 | W69 - Sleep Timers / Sleep Timer 1 Finish Time
923 | W70 - Sleep Timers / Sleep Timer 2 State
924 | W71 - Sleep Timers / Sleep Timer 2 Start Time
925 | W72 - Sleep Timers / Sleep Timer 2 Finish Time
926 | W73 - Settings / Auto Sanitise
927 | W74 - Settings / Time Out Duration
928 | W90 - Settings / Time Between Filtration Cycles
929 | W98 - Settings / SV Element Boost
930 | W99 - Settings / Heat Pump Mode
931 |
932 | ## 6. Reading Spa Data
933 | NOTE: The command to get spa data is RF\n as shown in section 4
934 |
935 | A sample response is:
936 | ```
937 | RF:
938 | ,R2,18,250,51,70,4,13,50,55,19,6,2020,376,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:
939 | ,R3,32,1,4,4,4,SW V5 17 05 31,SV3,18480001,20000826,1,0,0,0,0,0,NA,7,0,470,Filtering,4,0,7,7,0,0,:
940 | ,R4,NORM,0,0,0,1,0,3547,4,20,4500,7413,567,1686,0,8388608,0,0,5,0,98,0,10084,4,80,100,0,0,4,:
941 | ,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,0,376,0,3,4,0,0,0,0,0,1,2,6,:
942 | ,R6,1,5,30,2,5,8,1,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:
943 | ,R7,2304,0,1,1,1,0,1,0,0,0,253,191,253,240,483,125,77,1,0,0,0,23,200,1,0,1,31,32,35,100,5,:
944 | ,R9,F1,255,0,0,0,0,0,0,0,0,0,0,:
945 | ,RA,F2,0,0,0,0,0,0,255,0,0,0,0,:
946 | ,RB,F3,0,0,0,0,0,0,0,0,0,0,0,:
947 | ,RC,0,1,1,0,0,0,0,0,0,2,0,0,1,0,:
948 | ,RE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,-4,13,30,8,5,1,0,0,0,0,0,:*
949 | ,RG,1,1,1,1,1,1,1-1-014,1-1-01,1-1-01,0-,0-,0,:*
950 | ```
951 |
952 | Each below aspect of the spa will show which value of this RF fix needs to be read and what it's possible values are. It will say the read line (R2, R3, R4 etc.) and the read bit, which is the index number of the value to read from the line seperated by commas. The first value of each line is index number 2 (the name of each line is index number 1). e.g. If an aspect of the spa was represented by the 70 on line R2, the information for reading it would be *Line R2, Read Bit 5*.
953 |
954 | ### 6.1. Spa Status
955 | #### 6.1.1. Set Temperature
956 | `,R6,1,5,30,2,5,8,1,`360`,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
957 |
958 | Line: R6
959 | Read Bit: 9
960 | Data Type: Integer
961 | Range: `50` to `410`
962 | Data: Represents spa set temperature in degrees celcius * 10 (e.g. `360` is 36.00°C and `76` is 7.60°C)
963 |
964 | #### 6.1.2. Water Temperature
965 | `,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,0,`376`,0,3,4,0,0,0,0,0,1,2,6,:`
966 |
967 | Line: R5
968 | Read Bit: 16
969 | Data Type: Integer
970 | Data: Represents spa actual temperature in degrees celcius * 10 (e.g. `360` is 36.00°C and `76` is 7.60°C)
971 |
972 | #### 6.1.3. Heater Temperature
973 | `,R2,18,250,51,70,4,13,50,55,19,6,2020,`376`,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:`
974 |
975 | Line: R2
976 | Read Bit: 13
977 | Data Type: Integer
978 | Data: Represents heater temperature in degrees celcius * 10 (e.g. `360` is 36.00°C and `76` is 7.60°C)
979 |
980 | #### 6.1.4. Pool Temperature
981 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,`9999`,1,0,106,607,0,147,33207,791,819,0,721,0,0,1673,354,854,241,:`
982 |
983 | Line: R2
984 | Read Bit: 14
985 | Data Type: Integer
986 | Data: Pool temperature * 10. Note seems to return rubish value on most spas. Use Water Temperature instead.
987 |
988 | #### 6.1.5. Heating
989 | `,R5,0,1,0,1,0,0,0,0,0,0,1,`0`,1,0,376,0,3,4,0,0,0,0,0,1,2,6,:`
990 |
991 | Line: R5
992 | Read Bit: 13
993 | Data Type: Integer
994 | Range: `0` to `1`
995 | Data: Integer is `1` when the heater is on (currently heating/cooling the water) and `0` when it is off
996 |
997 | #### 6.1.6. Cleaning (UV/Ozone running)
998 | `,R5,0,1,0,1,0,0,0,0,0,0,`1`,0,1,0,376,0,3,4,0,0,0,0,0,1,2,6,:`
999 |
1000 | Line: R5
1001 | Read Bit: 12
1002 | Data Type: Integer
1003 | Range: `0` to `1`
1004 | Data: Integer is `1` when the Ozone/UV is cleaning the spa and `0` when it is off
1005 |
1006 | #### 6.1.7. Cleaning (Sanitise cycle running)
1007 | `,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,0,376,`0`,3,4,0,0,0,0,0,1,2,6,:`
1008 |
1009 | Line: R5
1010 | Read Bit: 17
1011 | Data Type: Integer
1012 | Range: `0` to `1`
1013 | Data: Integer is `1` when clean cycle is running and `0` when it is not
1014 |
1015 | #### 6.1.8. Auto
1016 | `,R5,0,1,0,1,0,0,0,0,0,0,1,0,`1`,0,376,0,3,4,0,0,0,0,0,1,2,6,:`
1017 |
1018 | Line: R5
1019 | Read Bit: 14
1020 | Data Type: Integer
1021 | Range: `0` to `1`
1022 | Data: Integer is `1` when the auto is enabled and `0` when it is not
1023 |
1024 | #### 6.1.9. Sleeping
1025 | `,R5,0,1,0,1,0,0,0,0,0,`0`,1,0,1,0,376,0,3,4,0,0,0,0,0,1,2,6,:`
1026 |
1027 | Line: R5
1028 | Read Bit: 11
1029 | Data Type: Integer
1030 | Range: `0` to `1`
1031 | Data: Integer is `1` when the spa is currently sleeping due to a sleep timer `0` when it is not
1032 |
1033 | #### 6.1.10. Water Present
1034 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,`1`,0,106,607,0,147,33207,791,819,0,721,0,0,1673,354,854,241,:`
1035 |
1036 | Line: R2
1037 | Read Bit: 15
1038 | Data Type: Integer
1039 | Data: 1 = Water present, 0 = No water detected
1040 |
1041 | #### 6.1.11. Awake Minutes Remaining
1042 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,`106`,607,0,147,33207,791,819,0,721,0,0,1673,354,854,241,:`
1043 |
1044 | Line: R2
1045 | Read Bit: 17
1046 | Data Type: Integer
1047 | Data: Minutes remaining of Awake time. Note: Clarification of this would be appreciated.
1048 |
1049 | #### 6.1.12. Filter Pump Runtime Total
1050 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,`607`,0,147,33207,791,819,0,721,0,0,1673,354,854,241,:`
1051 |
1052 | Line: R2
1053 | Read Bit: 18
1054 | Data Type: Integer
1055 | Data: Total filter pump run time (min)
1056 |
1057 | #### 6.1.13. Filter Pump Req Minutes
1058 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,`0`,147,33207,791,819,0,721,0,0,1673,354,854,241,:`
1059 |
1060 | Line: R2
1061 | Read Bit: 19
1062 | Data Type: Integer
1063 | Data Unit: Minutes
1064 | Data: Unsure
1065 |
1066 | #### 6.1.14. Load Timeout
1067 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,`147`,33207,791,819,0,721,0,0,1673,354,854,241,:`
1068 |
1069 | Line: R2
1070 | Read Bit: 20
1071 | Data Type: Integer
1072 | Data Unit of Measure: Seconds
1073 | Data: Unsure
1074 |
1075 | #### 6.1.15. Load Timeout
1076 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,`33207`,791,819,0,721,0,0,1673,354,854,241,:`
1077 |
1078 | Line: R2
1079 | Read Bit: 21
1080 | Data Type: Integer
1081 | Data Unit of Measure: Seconds
1082 | Data: Unsure
1083 |
1084 | #### 6.1.16. Hour Meter
1085 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,`33207`,791,819,0,721,0,0,1673,354,854,241,:`
1086 |
1087 | Line: R2
1088 | Read Bit: 22
1089 | Data Type: Integer
1090 | Data Unit of Measure: Hours * 10
1091 | Data: Hours of runtime. 33207 = 3320.7 hours
1092 |
1093 | #### 6.1.17. Relay 1
1094 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,`791`,819,0,721,0,0,1673,354,854,241,:`
1095 |
1096 | Line: R2
1097 | Read Bit: 23
1098 | Data Type: Integer
1099 | Data Unit of Measure: Unknown
1100 | Data: Unknown
1101 |
1102 | #### 6.1.18. Relay 2
1103 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,791,`819`,0,721,0,0,1673,354,854,241,:`
1104 |
1105 | Line: R2
1106 | Read Bit: 24
1107 | Data Type: Integer
1108 | Data Unit of Measure: Unknown
1109 | Data: Unknown
1110 |
1111 | #### 6.1.19. Relay 3
1112 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,791,819,`0`,721,0,0,1673,354,854,241,:`
1113 |
1114 | Line: R2
1115 | Read Bit: 25
1116 | Data Type: Integer
1117 | Data Unit of Measure: Unknown
1118 | Data: Unknown
1119 |
1120 | #### 6.1.20. Relay 4
1121 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,791,819,0,`721`,0,0,1673,354,854,241,:`
1122 |
1123 | Line: R2
1124 | Read Bit: 26
1125 | Data Type: Integer
1126 | Data Unit of Measure: Unknown
1127 | Data: Unknown
1128 |
1129 | #### 6.1.21. Relay 5
1130 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,791,819,0,721,`0`,0,1673,354,854,241,:`
1131 |
1132 | Line: R2
1133 | Read Bit: 27
1134 | Data Type: Integer
1135 | Data Unit of Measure: Unknown
1136 | Data: Unknown
1137 |
1138 | #### 6.1.22. Relay 6
1139 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,791,819,0,721,0,`0`,1673,354,854,241,:`
1140 |
1141 | Line: R2
1142 | Read Bit: 28
1143 | Data Type: Integer
1144 | Data Unit of Measure: Unknown
1145 | Data: Unknown
1146 |
1147 | #### 6.1.23. Relay 7
1148 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,791,819,0,721,0,0,`1673`,354,854,241,:`
1149 |
1150 | Line: R2
1151 | Read Bit: 29
1152 | Data Type: Integer
1153 | Data Unit of Measure: Unknown
1154 | Data: Unknown
1155 |
1156 | #### 6.1.24. Relay 8
1157 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,791,819,0,721,0,0,1673,`354`,854,241,:`
1158 |
1159 | Line: R2
1160 | Read Bit: 30
1161 | Data Type: Integer
1162 | Data Unit of Measure: Unknown
1163 | Data: Unknown
1164 |
1165 | #### 6.1.25. Relay 9
1166 | `,R2,0,243,43,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,791,819,0,721,0,0,1673,354,`854`,241,:`
1167 |
1168 | Line: R2
1169 | Read Bit: 31
1170 | Data Type: Integer
1171 | Data Unit of Measure: Unknown
1172 | Data: Unknown
1173 |
1174 |
1175 | ### 6.2. Pumps
1176 | #### 6.2.1. Pump 1
1177 | ##### 6.2.1.1. Pump 1
1178 | `,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,0,376,0,3,`4`,0,0,0,0,0,1,2,6,:`
1179 |
1180 | Line: R5
1181 | Read Bit: 19
1182 | Data Type: Integer
1183 | Range: `0` to `4`
1184 | Data: Integer is `4` when pump is set to auto, `1` when it is on and `0` when it is off
1185 |
1186 | ##### 6.2.1.2. Pump 1 Installation State
1187 | `,RG,1,1,1,1,1,1,`1-1-014`,1-1-01,1-1-01,0-,0-,0,:*`
1188 |
1189 | Line: RG
1190 | Read Bit: 8
1191 | Data Type: String
1192 | Data: First part (1- or 0-) indicates whether the pump is installed/fitted. If so (1- means it is), the second part (1- above) indicates it's speed type. The third part (014 above) represents it's possible states (0 OFF, 1 ON, 4 AUTO)
1193 |
1194 | #### 6.2.2. Pump 2
1195 | ##### 6.2.2.1. Pump 2
1196 | `,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,0,376,0,3,4,`0`,0,0,0,0,1,2,6,:`
1197 |
1198 | Line: R5
1199 | Read Bit: 20
1200 | Data Type: Integer
1201 | Range: `0` to `1`
1202 | Data: Integer is `1` when pump is on and `0` when it is off
1203 |
1204 | ##### 6.2.2.2. Pump 2 Installation State
1205 | `,RG,1,1,1,1,1,1,1-1-014,`1-1-01`,1-1-01,0-,0-,0,:*`
1206 |
1207 | Line: RG
1208 | Read Bit: 9
1209 | Data Type: String
1210 | Data: First part (1- or 0-) indicates whether the pump is installed/fitted. If so (1- means it is), the second part (1- above) indicates it's speed type. The third part (01 above) represents it's possible states (0 OFF, 1 ON)
1211 |
1212 | ##### 6.2.2.3. Pump 2 Switch On Status
1213 | `,RG,1,`1`,1,1,1,1,1-1-014,1-1-01,1-1-01,0-,0-,0,:*`
1214 |
1215 | Line: RG
1216 | Read Bit: 3
1217 | Data Type: Integer
1218 | Range: `0` to `1`
1219 | Data: Integer is `1` when the pump is OK to turn on and `0` when it is not
1220 |
1221 | #### 6.2.3. Pump 3
1222 | ##### 6.2.3.1. Pump 3
1223 | `,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,0,376,0,3,4,0,`0`,0,0,0,1,2,6,:`
1224 |
1225 | Line: R5
1226 | Read Bit: 21
1227 | Data Type: Integer
1228 | Range: `0` to `1`
1229 | Data: Integer is `1` when pump is on and `0` when it is off
1230 |
1231 | ##### 6.2.3.2. Pump 3 Installation State
1232 | `,RG,1,1,1,1,1,1,1-1-014,1-1-01,`1-1-01`,0-,0-,0,:*`
1233 |
1234 | Line: RG
1235 | Read Bit: 10
1236 | Data Type: String
1237 | Data: First part (1- or 0-) indicates whether the pump is installed/fitted. If so (1- means it is), the second part (1- above) indicates it's speed type. The third part (01 above) represents it's possible states (0 OFF, 1 ON)
1238 |
1239 | ##### 6.2.3.3. Pump 3 Switch On Status
1240 | `,RG,1,1,`1`,1,1,1,1-1-014,1-1-01,1-1-01,0-,0-,0,:*`
1241 |
1242 | Line: RG
1243 | Read Bit: 4
1244 | Data Type: Integer
1245 | Range: `0` to `1`
1246 | Data: Integer is `1` when the pump is OK to turn on and `0` when it is not
1247 |
1248 | #### 6.2.4. Pump 4
1249 | ##### 6.2.4.1. Pump 4
1250 | `,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,0,376,0,3,4,0,0,`0`,0,0,1,2,6,:`
1251 |
1252 | Line: R5
1253 | Read Bit: 22
1254 | Data Type: Integer
1255 | Range: `0` to `1`
1256 | Data: Integer is `1` when pump is on and `0` when it is off
1257 |
1258 | ##### 6.2.4.2. Pump 4 Installation State
1259 | `,RG,1,1,1,1,1,1,1-1-014,1-1-01,1-1-01,`0-`,0-,0,:*`
1260 |
1261 | Line: RG
1262 | Read Bit: 11
1263 | Data Type: String
1264 | Data: First part (1- or 0-) indicates whether the pump is installed/fitted. If so (1- means it is), the second part indicates it's speed type. The third part represents it's possible states
1265 |
1266 | ##### 6.2.4.3. Pump 4 Switch On Status
1267 | `,RG,1,1,1,`1`,1,1,1-1-014,1-1-01,1-1-01,0-,0-,0,:*`
1268 |
1269 | Line: RG
1270 | Read Bit: 5
1271 | Data Type: Integer
1272 | Range: `0` to `1`
1273 | Data: Integer is `1` when the pump is OK to turn on and `0` when it is not
1274 |
1275 | #### 6.2.5. Pump 5
1276 | `,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,0,376,0,3,4,0,0,0,`0`,0,1,2,6,:`
1277 |
1278 | Line: R5
1279 | Read Bit: 23
1280 | Data Type: Integer
1281 | Range: `0` to `1`
1282 | Data: Integer is `1` when pump is on and `0` when it is off
1283 |
1284 | ##### 6.2.5.1. Pump 5 Installation State
1285 | `,RG,1,1,1,1,1,1,1-1-014,1-1-01,1-1-01,0-,`0-`,0,:*`
1286 |
1287 | Line: RG
1288 | Read Bit: 12
1289 | Data Type: String
1290 | Data: First part (1- or 0-) indicates whether the pump is installed/fitted. If so (1- means it is), the second part indicates it's speed type. The third part represents it's possible states
1291 |
1292 | ##### 6.2.5.2. Pump 5 Switch On Status
1293 | `,RG,1,1,1,1,`1`,1,1-1-014,1-1-01,1-1-01,0-,0-,0,:*`
1294 |
1295 | Line: RG
1296 | Read Bit: 6
1297 | Data Type: Integer
1298 | Range: `0` to `1`
1299 | Data: Integer is `1` when the pump is OK to turn on and `0` when it is not
1300 |
1301 | ### 6.3. Blower
1302 | #### 6.3.1. Blower
1303 | `,RC,0,1,1,0,0,0,0,0,0,`2`,0,0,1,0,:`
1304 |
1305 | Line: RC
1306 | Read Bit: 11
1307 | Data Type: Integer
1308 | Range: `0` to `2`
1309 | Data: Integer is `2` when pump is off, `1` when it is on ramp mode and `0` when it is on variable mode
1310 |
1311 | #### 6.3.2. Blower Variable Speed
1312 | `,R6,`1`,5,0,2,5,8,1,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1313 |
1314 | Line: R6
1315 | Read Bit: 2
1316 | Data Type: Integer
1317 | Range: `1` to `5`
1318 | Data: Integer represents blower variable speed from speed `1` to speed `5`
1319 |
1320 | ### 6.4. Lights
1321 | #### 6.4.1. Lights
1322 | `,R5,0,1,0,1,0,0,0,0,0,0,1,0,1,`0`,376,0,3,4,0,0,0,0,0,1,2,6,:`
1323 |
1324 | Line: R5
1325 | Read Bit: 15
1326 | Data Type: Integer
1327 | Range: `0` to `1`
1328 | Data: Integer is `1` when lights are on `0` when they are off
1329 |
1330 | #### 6.4.2. Lights Mode
1331 | `,R6,1,5,0,`2`,5,8,1,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1332 |
1333 | Line: R6
1334 | Read Bit: 5
1335 | Data Type: Integer
1336 | Range: `0` to `4`
1337 | Data: Integer is `0` for mode white, `1` for mode colour, `2` for mode step, `3` for mode fade and `4` for mode party
1338 |
1339 | #### 6.4.3. Lights Brightness
1340 | `,R6,1,`5`,0,2,5,8,1,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1341 |
1342 | Line: R6
1343 | Read Bit: 3
1344 | Data Type: Integer
1345 | Range: `1` to `5`
1346 | Data: Integer represents brightness from `1` to `5`
1347 |
1348 | #### 6.4.4. Lights Effect Speed
1349 | `,R6,1,5,30,2,`5`,8,1,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1350 |
1351 | Line: R6
1352 | Read Bit: 6
1353 | Data Type: Integer
1354 | Range: `1` to `5`
1355 | Data: Integer represents effect speed from `1` to `5`
1356 |
1357 | #### 6.4.5. Lights Colour
1358 | `,R6,1,5,`0`,2,5,8,1,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1359 |
1360 | Line: R6
1361 | Read Bit: 4
1362 | Data Type: Integer
1363 | Range: `0` to `30`
1364 | Data: Integer represents colour from `0` to `30`
1365 |
1366 | ### 6.5. Settings
1367 | #### 6.5.1. Operation Mode
1368 | `,R4,`NORM`,0,0,0,1,0,3547,4,20,4500,7413,567,1686,0,8388608,0,0,5,0,98,0,10084,4,80,100,0,0,4,:`
1369 |
1370 | Line: R4
1371 | Read Bit: 2
1372 | Data Type: String
1373 | Data: `NORM` represents normal mode, `ECON` economy mode, `AWAY` away mode and `WEEK` weekdays mode
1374 |
1375 | #### 6.5.2. Filtration
1376 | ##### 6.5.2.1. Filtration Runtime
1377 | `,R6,1,5,30,2,5,`8`,1,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1378 |
1379 | Line: R6
1380 | Read Bit: 7
1381 | Data Type: Integer
1382 | Range: `1` to `24`
1383 | Data: Integer represents hours from `1` to `24`
1384 |
1385 | ##### 6.5.2.2. Time Between Filtration Cycles
1386 | `,R6,1,5,30,2,5,8,`1`,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1387 |
1388 | Line: R6
1389 | Read Bit: 8
1390 | Data Type: Integer
1391 | Range: `1` to `24`
1392 | Data: Integer represents hours, where possible values are `1`, `2`, `3`, `4`, `6`, `8`, `12` and `24`
1393 |
1394 | #### 6.5.3. Sleep Timers
1395 | ##### 6.5.3.1. Sleep Timer 1 State
1396 | `,R6,1,5,30,2,5,8,1,360,1,0,3584,5120,`127`,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1397 |
1398 | Line: R6
1399 | Read Bit: 14
1400 | Data Type: Integer
1401 | Range: `1` to `128`
1402 | Data: `128` represents off, `127` represents everyday mode, `96` represents weekends mode and `31` represents weekdays mode
1403 |
1404 | ##### 6.5.3.2. Sleep Timer 1 Start Time
1405 | `,R6,1,5,30,2,5,8,1,360,1,0,3584,5120,127,128,`5632`,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1406 |
1407 | Line: R6
1408 | Read Bit: 16
1409 | Data Type: Integer
1410 | Range: `0` to `5947`
1411 | Data: Time with the formula `h*256+m` (ie: for 20:00, integer will be 20\*256+0 = 5120; for 13:47, integer will be 13\*256+47 = 3375)
1412 |
1413 | ##### 6.5.3.3. Sleep Timer 1 Finish Time
1414 | `,R6,1,5,30,2,5,8,1,360,1,0,3584,5120,127,128,5632,5632,`2304`,1792,0,30,0,0,0,0,2,3,0,:`
1415 |
1416 | Line: R6
1417 | Read Bit: 18
1418 | Data Type: Integer
1419 | Range: `0` to `5947`
1420 | Data: Time with the formula `h*256+m` (ie: for 20:00, integer will be 20\*256+0 = 5120; for 13:47, integer will be 13\*256+47 = 3375)
1421 |
1422 | ##### 6.5.3.4. Sleep Timer 2 State
1423 | `,R6,1,5,30,2,5,8,1,360,1,0,3584,5120,127,`128`,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1424 |
1425 | Line: R6
1426 | Read Bit: 15
1427 | Data Type: Integer
1428 | Range: `1` to `128`
1429 | Data: `128` represents off, `127` represents everyday mode, `96` represents weekends mode and `31` represents weekdays mode.
1430 |
1431 | ##### 6.5.3.5. Sleep Timer 2 Start Time
1432 | `,R6,1,5,30,2,5,8,1,360,1,0,3584,5120,127,128,5632,`5632`,2304,1792,0,30,0,0,0,0,2,3,0,:`
1433 |
1434 | Line: R6
1435 | Read Bit: 17
1436 | Data Type: Integer
1437 | Range: `0` to `5947`
1438 | Data: Time with the formula `h*256+m` (ie: for 20:00, integer will be 20\*256+0 = 5120; for 13:47, integer will be 13\*256+47 = 3375)
1439 |
1440 | ##### 6.5.3.6. Sleep Timer 2 Finish Time
1441 | `,R6,1,5,30,2,5,8,1,360,1,0,3584,5120,127,128,5632,5632,2304,`1792`,0,30,0,0,0,0,2,3,0,:`
1442 |
1443 | Line: R6
1444 | Read Bit: 19
1445 | Data Type: Integer
1446 | Range: `0` to `5947`
1447 | Data: Time with the formula `h*256+m` (ie: for 20:00, integer will be 20\*256+0 = 5120; for 13:47, integer will be 13\*256+47 = 3375)
1448 |
1449 | #### 6.5.4. Power Save
1450 | ##### 6.5.4.1. Power Save
1451 | `,R6,1,5,30,2,5,8,1,360,1,`0`,3584,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1452 |
1453 | Line: R6
1454 | Read Bit: 11
1455 | Data Type: Integer
1456 | Range: `0` to `2`
1457 | Data: Integer is `0` for off, `1` for low and `2` for high
1458 |
1459 | ##### 6.5.4.2. Peak Power Time Start
1460 | `,R6,1,5,30,2,5,8,1,360,1,0,`3584`,5120,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1461 |
1462 | Line: R6
1463 | Read Bit: 12
1464 | Data Type: Integer
1465 | Range: `0` to `5947`
1466 | Data: Time with the formula `h*256+m` (ie: for 20:00, integer will be 20\*256+0 = 5120; for 13:47, integer will be 13\*256+47 = 3375)
1467 |
1468 | ##### 6.5.4.3. Peak Power Time End
1469 | `,R6,1,5,30,2,5,8,1,360,1,0,3584,`5120`,127,128,5632,5632,2304,1792,0,30,0,0,0,0,2,3,0,:`
1470 |
1471 | Line: R6
1472 | Read Bit: 13
1473 | Data Type: Integer
1474 | Range: `0` to `5947`
1475 | Data: Time with the formula `h*256+m` (ie: for 20:00, integer will be 20\*256+0 = 5120; for 13:47, integer will be 13\*256+47 = 3375)
1476 |
1477 | #### 6.5.5. Auto Sanitise
1478 | `,R7,`2304`,0,1,1,1,0,1,0,0,0,253,191,253,240,483,125,77,1,0,0,0,23,200,1,0,1,31,32,35,100,5,:`
1479 |
1480 | Line: R7
1481 | Read Bit: 2
1482 | Data Type: Integer
1483 | Range: `0` to `5947`
1484 | Data: Time with the formula `h*256+m` (ie: for 20:00, integer will be 20\*256+0 = 5120; for 13:47, integer will be 13\*256+47 = 3375)
1485 |
1486 | #### 6.5.6. Time Out Mode
1487 | `,R6,1,5,30,2,5,8,1,360,1,0,3584,5120,127,128,5632,5632,2304,1792,0,`30`,0,0,0,0,2,3,0,:`
1488 |
1489 | Line: R6
1490 | Read Bit: 21
1491 | Data Type: Integer
1492 | Range: `10` to `30`
1493 | Data: Integer is time in minutes before pump and blower auto time-out
1494 |
1495 | #### 6.5.7. Heat Pump Mode
1496 | ##### 6.5.7.1. Heat Pump Mode
1497 | `,R7,2304,0,1,1,1,0,1,0,0,0,253,191,253,240,483,125,77,1,0,0,0,23,200,1,0,`1`,31,32,35,100,5,:`
1498 |
1499 | Line: R7
1500 | Read Bit: 27
1501 | Data Type: Integer
1502 | Range: `0` to `3`
1503 | Data: `0` represents auto mode, `1` heat mode, `2` cool mode and `3` disabled mode
1504 |
1505 | ##### 6.5.7.2. SV Element Boost
1506 | `,R7,2304,0,1,1,1,0,1,0,0,0,253,191,253,240,483,125,77,1,0,0,0,23,200,1,`0`,1,31,32,35,100,5,:`
1507 |
1508 | Line: R7
1509 | Read Bit: 26
1510 | Data Type: Integer
1511 | Range: `0` to `1`
1512 | Data: Integer is `0` when off and `1` when on
1513 |
1514 | #### 6.5.8. Time/Date
1515 | ##### 6.5.8.1. Time: Hour
1516 | `,R2,18,250,51,70,4,`13`,50,55,19,6,2020,376,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:`
1517 |
1518 | Line: R2
1519 | Read Bit: 7
1520 | Data Type: Integer
1521 | Range: `0` to `23`
1522 | Data: Represents hour of the day in 24-hour time
1523 |
1524 | ##### 6.5.8.2. Time: Minute
1525 | `,R2,18,250,51,70,4,13,`50`,55,19,6,2020,376,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:`
1526 |
1527 | Line: R2
1528 | Read Bit: 8
1529 | Data Type: Integer
1530 | Range: `0` to `59`
1531 | Data: Represents minute of the hour
1532 |
1533 | ##### 6.5.8.3. Date: Year
1534 | `,R2,18,250,51,70,4,13,50,55,19,6,`2020`,376,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:`
1535 |
1536 | Line: R2
1537 | Read Bit: 12
1538 | Data Type: Integer
1539 | Range: `1970` to `2037` (correct 2021)
1540 | Data: Represents current year
1541 |
1542 | ##### 6.5.8.4. Date: Month
1543 | `,R2,18,250,51,70,4,13,50,55,19,`6`,2020,376,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:`
1544 |
1545 | Line: R2
1546 | Read Bit: 11
1547 | Data Type: Integer
1548 | Range: `1` to `12`
1549 | Data: Represents current month of the year, where `1` is January and `12` is December
1550 |
1551 | ##### 6.5.8.5. Date: Day
1552 | `,R2,18,250,51,70,4,13,50,55,`19`,6,2020,376,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:`
1553 |
1554 | Line: R2
1555 | Read Bit: 10
1556 | Data Type: Integer
1557 | Range: `1` to `31`
1558 | Data: Represents current day of the month, where the integer will only be a valid day of the current month
1559 |
1560 | #### 6.5.9. Support Mode
1561 | If your application sets a support pin for the spa, it must locally store this pin. Support PIN's created by the official SpaLINK app are registered through a web request (see 4.5.9) but not shared across to other devices running the same app with the same spa logged in. That goes to say, PIN's are registered for the spa on the SpaNET server but individual to devices on which they were created/registered.
1562 |
1563 | #### 6.5.10. Lock Mode
1564 | `,RG,1,1,1,1,1,1,1-1-014,1-1-01,1-1-01,0-,0-,`0`,:*`
1565 |
1566 | Line: RG
1567 | Read Bit: 13
1568 | Data Type: Integer
1569 | Range: `0` to `2`
1570 | Data: `0` represents keypad lock off, `1` partial keypad lock and `2` full keypad lock
1571 |
1572 | #### 6.5.11. Notification
1573 | Notifications status for devices is sent to the SpaNET API server but is individual to devices, so your app must keep track if it has turned notifications on for itself. This setting should not be applicable for most plugins/code anyway, unless you are making an app which can send a type of notifications (e.g. push notifications).
1574 |
1575 | ### 6.6. Operating Environment
1576 | #### 6.6.1. Power
1577 | ##### 6.6.1.1. Supply Volts
1578 | `,R2,18,`250`,51,70,4,13,50,55,19,6,2020,376,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:`
1579 |
1580 | Line: R2
1581 | Read Bit: 3
1582 | Data Type: Integer, current power supply voltage (volts)
1583 |
1584 | ##### 6.6.1.2. Current Draw
1585 | `,R2,`18`,250,51,70,4,13,50,55,19,6,2020,376,9999,1,0,490,207,34,6000,602,23,20,0,0,0,0,44,35,45,:`
1586 |
1587 | Line: R2
1588 | Read Bit: 2
1589 | Data Type: Integer, current power supply current draw (amps)
1590 |
1591 | ##### 6.6.1.3. Variable Heat Element Current Draw
1592 | `,R3,32,1,4,4,4,SW V5 17 05 31,SV3,18480001,20000826,1,0,0,0,0,0,NA,7,0,470,Filtering,4,`0`,7,7,0,0,:`
1593 |
1594 | Line: R3
1595 | Read Bit: 23
1596 | Data Type: Integer, current variable heat element current draw x 10 (amps) eg 213 = 21.3 amps
1597 |
1598 | #### 6.6.2. Environment
1599 | ##### 6.6.2.1. Case Temperature
1600 | `,R2,0,243,`43`,223,6,19,14,36,9,1,2022,320,9999,1,0,106,607,0,147,33207,791,819,0,721,0,0,1673,354,854,241,:`
1601 |
1602 | Line: R2
1603 | Read Bit: 4
1604 | Data Type: Integer, current case temperature C
1605 |
1606 |
1607 | ### 6.7. OEM Settings
1608 | #### 6.7.1. Current Limit
1609 | `,R3,`32`,1,4,4,4,SW V5 17 05 31,SV3,18480001,20000826,1,0,0,0,0,0,NA,7,0,470,Filtering,4,0,7,7,0,0,:`
1610 |
1611 | Line: R3
1612 | Read Bit: 2
1613 | Data Type: Integer, current limit.
1614 |
1615 | #### 6.7.2. Load Shed
1616 | `,R3,32,1,4,4,4,SW V5 17 05 31,SV3,18480001,20000826,1,0,0,0,0,0,NA,`7`,0,470,Filtering,4,0,7,7,0,0,:`
1617 |
1618 | Line: R3
1619 | Read Bit: 18
1620 | Data Type: Integer, current limit.
1621 |
1622 | # SpaNET API Requests List
1623 | COMING SOON - IN DEVELOPMENT
1624 |
--------------------------------------------------------------------------------