Changes to ASEKO Pool Live and API that will affect the current integration

I agree it is very frustrating. Perhaps we could request the developer to change this to a local integration? @milanmeu

The ASIN Aseko unit in my house is just a serial to TCP converter. (Designated K5 in my DHCP).
I was able to change the IP address it sends the serial data stream to my Node-red server. (username / password is admin/admin)

It sends some datagrams that are unencrypted and are reverse engineered.
The TCP packets > 27 bytes all contain the same information and is updated once every second.

Most are int16 numbers

I.e.

  • first 4 bytes are the serial number
  • 2 bytes starting from byte 14 are the pH value
  • 2 bytes starting from byte 20 are the cholorine value in mV
  • 2 bytes starting from byte 25 are the water temperature in °C
  • etc.

The only hiccup I can see for a possible home assistant integration is that you need to accept a tcp connection from the device. I don’t know if the core developers allow this and that a user of this integration would need to change some parameters in his Aseko unit.

Wow, yes, good sleuthing. Yes, my unit is the same. I agree that is the easiest way and actually a local mode would be favourable rather than cloud based. Might even be possible to keep the cloud app working by forwarding the messages onto aseko, if that was desirable.

Most likely it would need some kind of server process that could act as a message forwarder, perhaps via MQTT protocol or modbus-over-tcp?

1 Like

@tipofthesowrd Frustrating is only the first name of it. I hate cloud solutions. So tired and done with it. All devices should be local at base and if anyone wants a cloud solution they should decided to use whatever is good for them.

How did you manage to change the IP address to where it sends the serial data-stream? Is there a more detailed guide on how to do what you have done?

Thanks

Hi there,

I have done some RS485 sniffing (Aseko has internal RS485 port as well) and you can find the RS485 datagram description ( i have found somewhere) below:

It looks that this is producer´s working document, the translation reflects the state of the document in 2020.

New external display:
the automate sends cca 1 x per 10 seconds data at speed 57600 bauds. The data consist in following bytes:
1th byte: 0ah
2th byte: type of automate lower 4 byte 0 - 3 bit

  • 0 bit ,1’ - Cl probe *
  • 1 bit ,1’ - Rx probe*
  • 2 bit ,1’ - without probe dose*
  • 3 bit ,1’ - without probe sanosil *
  • upper 4 byte 4 - 7 bit*
  • 4 bit ,1’ aqua NET*
  • 5 bit ,1’ salt*
  • 6 bit ,1’ home*
  • 7 bit ,1’ profi *

3rd byte: ph upper byte
4th byte: ph lower byte
*5th byte: Rx or Cl upper byte *
*6th byte: Rx or Cl lower byte *
7th byte: Rx or Cl upper byte
*8th byte: Rx or Cl lower byte *
9th byte: teplota upper byte
10th byte: teplota lower byte
11th byte: error_1 - 00h no error, >00h error
12-15. byte - serial number
16th byte 0xff hexa
17th byte required pH - 1 dec, place
18th byte required Cl or Rx - for Cl 1 dec. place, for Rx needs to be multiplied by 10
19th byte 0xff hexa
20th byte how many hours without filtration
21th byte hourly dosage ml/m3 per hour
22th byte states of pumps0 0.bit - pump pH, 1.bit - pump Cl
23th byte not for general use
24th byte display
25th byte not for general use
26th byte not for general use
27th byte: crc - aah xor 1th byte xor…xor 26th byte

every value sent as hexadecimal number
pH, Cl,temperature - sent with 2 digits
for measured values 0xff hexa - error value
the communication should look like this:
0A 41 03 CF 00 00 00 00 00 C0 00 00 00 00 01 00 46 00 19 05 03 08 FF 00 02 00 40

Unfortunatelly I haven’t found a way how to overwrite any parameters.
Maybe we could sniff datagrams when changing configuration at unit itself.
I am pretty sure it sends some datagrams, so we could reverse engineering the protocol itself.

I would preffer local communication as well.
Feel free to ask for any testing if needed.

That’s really helpful, thanks! I wonder how the app calculates the pH/chlorine consumption from this data?

I have done sniffing for one of RS485 ports, dedicated only for External Aseko Display (External Touch Display en - Aseko Pool Technology ) connection. There is no need for consumption data for the scenarion. we could try sniffing another RS485 port, as stated in the user manual (red marked one):

Using cheap RS485->TCP converter like elfin ew 11 we could create local TCP connection quite easily and it would not affect cloud connection using inbuilt Aseko K5 TCP converter.

This is just a question of navigating to the local IP address of your Aseko unit via a web browser, then it is quite easy to see where you would change ‘pool.aseko.com’ to a different daddress.

1 Like

Ah, I see. This is the Aseko Pool Controller you are using I think, rather than the dosing unit?

The information above seems to be correct. I quickly threw together a Node-Red to check the information. With the position of the serial number I quickly came up with the following:

My dosing unit connects to my node red:

The unit always sends two packets. One of 27 bytes, which corresponds with the datagram above, and one of 120 bytes.

With the serial number I was able to find out some information in the 120 bytes packet as well. Most is double information but I also found temperature in the 120 bytes packets. This is my buffer parsers for the 27 bytes packet

I have Asin Aqua Salt : ASIN AQUA Salt en - Aseko Pool Technology

@jmnemonicj Sorry have to edit my reply. Went through your posts and noticed that the image over the ports might be the controller and not the dosing unit?

However the dosing unit might also have an RS485 port. Or I’ll try your suggestion on picking up the data via the IP port into Node-Red.

It is very little info or blogs on this product online. I am very grateful that you are sharing your knowledge with us. BIG Thank you. I am getting to work ASAP. :smile:

Hi, Asin Aqua Salt is controller and dosing unit all in one, plz check: Changes to ASEKO Pool Live and API that will affect the current integration - #13 by jmnemonicj

The image I posted is internal diagram from user guide (Aseko - Files ), just for purpose we can make local serial RS485 connection for sniffing the comm protocol.

My first step…

Weird that I never thought that this Aseko device would have a web UI. :lying_face: never crossed my mind. Pretty stupid.
@tipofthesowrd Thanks for knocking on my head and bringing this option to my attention. Now it’s a completely new ballgame. :thinking:

(Device is Aseko, Asin Net)
First step, get the data flow into Home Assistant via Node-Red (creating MQTT sensors) to monitor the current data from the Aseko Asin sensors.

This is what I’ve done:
In the Aseko Web UI: Changed the Aseko Local IP settings from DHCP to a static IP (to keep all comms steady)
In the Aseko Web UI: Changed the Aseko setting for Serial Port “Remote Server Adds” to my HA server (with Node-Red) IP address.

In NODE-RED:
Screenshot 2024-09-11 at 15.02.12

In Node-red the “TCP-IN” Node is Listening to the default port 47524 (stream of Buffer). I am getting data almost every second.

Screenshot 2024-09-11 at 15.02.28

Tried to identify where the correct data is in the Buffer. First used what was posted but got the wrong data. Spent some time going through the Buffer to parse. So I am starting with the main sensors for my first version. This is what I found. (Only receiving the 120 bytes packet, haven’t seen 27… yet).

In my function node:

const buffer = msg.payload;
const serialNumber = buffer.readUInt32BE(0);
const pH = buffer.readUInt16BE(14) / 100.0;
const redox = buffer.readUInt16BE(16);
const temperature = buffer.readUInt16BE(25) / 10.0;

msg.payload = {
    serialNumber: serialNumber,
    pH: pH,
    redox: redox,
    temperature: temperature
};

Next I’ll try to see what else I can find.
Anyone that manage to identify the data in the Buffer… please share so we can create an overview table for everyone who wants to go down this route.

Prio now is to find and parse the state of water flow to the probes.

From the Aseko Asin NET model. (If streams are different.)

Finding the data for Status of “Water Flow” to the probes.

My re-search and dig for the correct part to parse.
So how is it presented. As boolean or text. In the HA integration it turns up as “OK”. And the ASCII values are O=0x4F, K = 0x4B

If Boolean Flags? Looking at the offsets 6-9, 18-19, 22-23, etc. (Multiple occurrences of 0xFF) Could 255 be true as in Active?

or… Potential Text for Status (“OK”): Offsets 23-24 (0x50 0x58)**
The hex values 0x50 and 0x58 are not directly “OK” in ASCII (0x4F 0x4B for “OK”)

Anyone else having a thought?

> EDIT 15 SEP 2024
Haven’t figured out the “Water Flow”… need more time for that…

Listening to the streams coming out from the TCP port I got errors in Node-Red so I setup a switch to filter the different packages that seem to be sent out. Confirming what has been identified in previous posts in this thread there are different sizes on these packages.

  • First and most common 120. (Using, is where I get my data for the common sensors inc Redox. Works ok from what I can see without a deep dive into it.)
  • Second there is a 14
  • Third a 128 sized package
  • Then 106 sized starts to pop up
  • Later a 112 sized

So would be interesting what the different ones are containing and what function.

Hi All

In the link you will find a dump with several transfers via TCP. Unfortunately, I can neither recognize the serial number (110157093) nor pool values. Does anyone know how this is coded exactly? is the data processed in binary form? Thank you

Hi, adding my 2 cents, I found the following:
offset 20 might be Salinity * 10
offset 73 pool volume?
offset 74-75 startup delay in seconds? - in my case app shows 8 minutes, that’s 480 seconds, that’s 1 and 224 on 74-75

EDIT:
20 is definitely Salinity * 10
46-51 is date and time (YY MO DD HH MM SS)
the same data again on 86-91
68 Backwash every N days
69 Backwash starts at HH
70 Backwash starts at MM
71 Backwash takes N * 10 secs

1 Like

Hello everyone, there is information also here “Add support for ASIN AQUA Home after major update. · Issue #125657 · home-assistant/core · GitHub” and milanmeu is already on the subject. Have a nice evening.

Regarding this post. Prev Post with image of the connectors on the board.

I found this image of the board in the “Home” model user guide 2024 ver (owners manuals) under the page “Accessories Connection”. Not sure that all models have the same functions?

We have the smaller unit called “NET”. The cheaper slimmed down model. An option to connect other functions to the board is not shown in the manual (Except You can connect an external screen though.) Doesn’t mean that some of the connectors doesn’t exist. It doesn’t have built in WiFi, however not an issue as I prefer stable connections with Ethernet cables. Connecting via TCP stream now to capture the data streams.

ASEKO Pool Manuals (Downloads)

Hi,

even the “NET” unit has RS485 connector for External display, as you have found in the user guide:

When I asked technician at Aseko (I got the cell phone no. from my pool wholeseller) about possibility (or the whole protocol description) to control my pool pump through my dosing unit through the cloud app few months ago, he answered there is no such functionality implemented in the cloud api (maybe it was just the way how to avoid to send me the protocol, i don’t know).
That’s why I focused on RS485 connection after then. The cloud api has been changed completely now, we will see later when populated.

The external display can read all the necessary parameters (External Touch Display en - Aseko Pool Technology ), but can control the pool pump (on/off) and other functionalities of dosing unit as well.
Focusing on cloud api protocol by sniffing the TCP packets is easy way, but it could happen the protocol itself will be limited (as stated by the technician) for our units. Maybe that’s the reason there are two mobile apps, Pool Live and Pool remote. Pool remote app can definitely control pool pump.
Cloud api endpoint for my unit is ipool.aseko.com, but for Pool remote units it should be iremote.aseko.com (check: iPool REMOTE change address - Aseko Pool Technology ). Different endpoints = different protocols?, I don’t know.

BTW Aseko has small app to setup the Kx cloud communication module, you can download it here: Aseko - Files.
My config is as follows:

It seems K1 device is the dosing unit itself and USK-K6 is cloud api communication module. The device and module are connected locally through LAN? It seems so, but I thought it is RS485 interconnection (as checked at the screenshot checkbox) .

But of course you can use web interface to setup USR-K6 as well.

2 Likes

I like the idea of a locally connected solution. Do you think it would be possible to keep the cloud connectivity by having nodeRED copying the TCP stream back to Aseko.com?