Intex binding

Ist there already a binding controlling Intex pools with build-in WiFi interface?
Or does someone know where to find an API?

May be we can use some information from here: https://github.com/Yogui79/IntexPureSpa

Did anyone tried this?
If this work binding should be possible using Mqtt in Openhab.

Nope, I did some research, but never started to work on this. Let us know if you try mqwt integration.

There is some nice research here.

Following their instructions, I have tried controlling my pool from my computer via telnet protocol (port 8990, although port 23 is also open presumably for other purposes) and it works great. I am now focusing on finding the commands to turn sanitization on and off, and to schedule actions.

looks straight forward, shouldn’t be to complicated to turn it into the binding

This is what I have found so far (most of the informations taken from here):

Communication with the pool occurs by exchanging JSON strings via telnet protocol, port 8990.

Simple request must contain ‘data’, ‘sid’, and ‘type’ fields as in this example:

{"data":"8888060FEE0F01DA","sid":"1647025880598","type":1}

where

‘data’ contains an embedded command (spaces added for clarity):

	Retrieve Status:		8888 060F EE 0F01 DA
	Switch Power:			8888 060F 01 4000 98
	Switch Heating:			8888 060F 01 0010 C8
	Switch Bubbles:			8888 060F 01 0400 D4
	Switch Filtering:		8888 060F 01 0004 D4
	Switch Jets:			8888 060F 01 1000 C8
	Switch Sanitization:	8888 060F 01 0001 D7
	Set Temp:				8888 050F 0C TT   VV	(where TT is hex Temp, and VV = 0xCE - TT)

‘sid’ is the request’s Unix epoch time (seconds that have elapsed since January 1, 1970), and ‘type’ seems to indicate whether it is a request (1) or a response (2).

Re-sending a switch command really switches the corresponding action. Thus, if bubbles are on and a swtch bubbles command is sent, then bubbles are turned off.

Note that not all pools support jets and sanitization.

Response from the pool is a JSON string containing the same ‘sid’ as the request, and ‘data’, ‘result’ and ‘type’ fields, as in this example:

{"sid":"1647025880598","data":"FFFF110F0101001B000000008080802600001B","result":"ok","type":2}

where

'data' indicates the status of the pool:

	FFFF110F01 (unknown meaning)
	0 - bubbles-sanitization status half-byte (nibble):
		0 bubbles off + sanitization off
		1 bubbles on
		2 sanitization on
		3 sanitization on + bubbles on
	1 - power-filter-jets status nibble:
		0 power off
		1 power on
		3 filter on
		7 filter on + heat on
		9 jet on
		B jet on + filter on
		F jet on + filter on + heat on
	00 (unknown meaning)
	1B - current temp (hex value)
	00000000808080 (unknown meaning)
	26 - preset temp (hex value)
	00001B (unknown meaning)

'result':
	'ok'
	'mcu_busy' (occasionally the command is not received correctly)
	'timeout'

'type':
	2 indicates a response

Assigning 0 / 1 values to each of bubbles, sanitization, jets, heat, filter and power being off or on, respectively, then

Bubbles-sanitization status nibble 	  = 2 * sanitization  +      bubbles
Jets-heat-filter-power status nibble  = 8 * jets          +  4 * heat     +  2 * filter  +  power

Now, commands to schedule heating, sanitization or filtration seem to be quite more complicated than the above. I will keep researching. If anybody has experience dissecting hex code and wants to help, please let me know.

1 Like

good job :+1: