ASEKO ASIN AQUA Pool Tech - Data Stream Local TCP & API - Update 12 October 2025

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?

This is good although at the moment I am only seeing water flow and free chlorine entries, and not the other ones I expect (particularly water temperature and pH). My model is an Asin Aqua Net with CLF probe.

@nickloman1
Don’t know where you’re looking. The regular sensors are the easy ones.
See Link

I also thought about how to forward the data to Aseko. Like a passthrough via Node-Red for an example.

Oh apols, I was talking about the updated cloud API in latest HA.

I am sure I will be able to replicate what you have done in nodeRED, thanks for the tips!

I was wondering if it was as easy as just connecting a TCP-in to a TCP-out to forward the messages.

1 Like

Hi,

Are there any new in regards to this integration?

From reading through this thread I can’t see if we have a stable configuration that could be used as integration?

I gather that I should use serial over TCP - my system also have an IP and is connected.

But could one of you brilliant people that have figured out how to actually use it, maybe write a short write-up of how to get it working, so I can communicate with the system again?

That would be super awesome!

Hi kidnor.

I was following your steps and selected Static IP in the Aseko Web UI. After clicking on Reboot the device does not connect to my network anymore.

Any idea what this might be and how I could solve?

Thanks.

Is someone any further here? Can someone post a complete example of what he/she has so far? Thank you.

Id did that with a simple TCP Out node directly behind the TCP In node. Works fine until now.

Byte 28 of the 120 byte stream (this is all I get - there is no other package) could actually contain the flow to the probes. I can’t interpret the value yet and find it strange, but when there is water flow it contains 170 (AA) and when there is no water flow it contains 0 (00). That is also consistent. I have been able to confirm it several times.

I would need the status of the elecrolyzer and power and direction of production. But there is no production at the moment (water temp at 6 degrees)…

1 Like

If you manage to get a useful flow in NR, then please share this - would be very appreciated!

Hi @maxdet (have to change my reply), weird that it “disappeared”. This sound like an issue with your router. Did you enter the correct submask and gateway in the Aseko? If you can’t find your Aseko unit you’ll need to check your setup and structure in your router. That it can handle both static and DHCP. Make sure you don’t clash with another IP. Make sure the one you enter in your Aseko under Local IP Config is free. I would check against another router or connect directly to your PC.

Another ASIN AQUA Net user here (Dosing unit, not a salt generator). I spent a few hours studying the 120 byte packet. (Haven’t seen any other ones but I only captured for a minute). I’m using a CLF and a PH probe.

I believe the packet is actually a combination of 3 smaller ones that get send in one go. Each of those smaller (40 bytes) packets start with the serial number followed by a 9 (perhaps message type?) and another byte containing 1, 2 or 3 (maybe subtype or page number?).
The first section appears to be actual measurement values while the second contains the desired values(pH and Cl set points in my case). I didn’t make much progress on the third section.

Also, I did see two seperate bytes containing what appears to be seconds but haven’t figured out yet how the minute, hour and date parts fit in.

Link to Gist containing the ImHex pattern editor code.

On another note: The fact that these $3000+ products contain an undocumented, cheap, chinese web interface running on port 80 that accepts the username “admin” with password “admin”, which can even be used to reprogram the firmware, is an absolute disgrace to cyber security. I’m at a loss of words why Aseko would even dare to block third party access to their cloud endpoint, claiming security concerns, while leaving this blatant security hole wide open. Imagine your $100’000 pool getting absolutely destroyed after somebody brings an infected device into your network, which promptly overwrites the firmware on those machines to just pump every single canister completely empty.

2 Likes

I think it’s confirmed that Byte 28 is flow to the probes: 170 means flow, 00 means no flow. It’s consistent in my device.

Just posting this here in case it would help someone.

I have the ASIN Aqua Net (not a pool controller) and for that I’m using this docker; GitHub - cguedel/ChemDoserProxy: Proxy tool converting TCP stream from Aseko Doser systems to HTTP API

It’s not my work but I’ve been using it for a while and would recommend.

You set the unit to send the data to the docker container.
From there you can get it locally in HA using REST sensors.
The docker also forwards the data to the cloud so you don’t lose that functionality.

1 Like

Might be easier to setup a Flow in Node-RED especially if you have another device (eg SALT). But it seems to be good work and I used it to pimp my flow a little bit. But the main values for producing CL are still missing because I use an Aqua SALT device.

Would you be able to share your NR flow @marvin78 ?

Have an ASIN AQUA Salt, so hopefully much the same flow as you.

1 Like

Thanks everyone for sharing your knowledge and experience. Very helpful.

Regarding Local communcation
I’ve manage to get hold of the ASEKO RS485 communication protocol
if anyone is interested.

Thought to share as it might be helpful for others. Haven’t analysed the protocol yet and how it can be useful. (similar to a previous post in this thread)
LINK TO: GitHub Gist aseko_rs485_com_protocol_v1.txt

In my conversations with Aseko they’ve confirmed that they are working on an API platform for users. No timeline or official release dates yet. The developers is and have been focusing on the translations for the app and their partners. More on this in the future. Can’t wait.

Thanks
@milanmeu
@Ataman42
@FFV21

The flow is easy. It looks like this:

The JS Code for “prepare data” looks like this, but it’s not nearly ready and it will contain errors (I really don’t know, if I got the production right- it’s guessing only. There is no production at the moment):

var water_flow = false;
const buffer = msg.payload;
const serialNumber = buffer.readUInt32BE(0);
const state = buffer.readUIntBE(13,1);
const pH = buffer.readUInt16BE(14) / 100.0;
const redox = buffer.readUInt16BE(16);
const temperature = buffer.readUInt16BE(25) / 10.0;
const salinity = buffer.readUIntBE(20,1) / 10.0;
const pool_volume = buffer.readUIntBE(93,1);
const delay_startup = buffer.readUIntBE(74,2);
const current_power = buffer.readUIntBE(21,2) / 10.0;
const water_flow_raw = buffer.readUIntBE(28,1);
const ph_desired = buffer.readUIntBE(52,1) / 10.0;
const redox_desired = buffer.readUIntBE(53, 1) * 10.0;
const delay = buffer.readUIntBE(30,2);

// extract byte 22
const byte22 = buffer.readUInt8(22);

// production running? (test bit 4)
const eActive = (byte22 & 0b00010000) !== 0;

// direction? (test bit 6)
const eDirection = (byte22 & 0b01000000) !== 0;

if (water_flow_raw == 170)
    water_flow = true;

msg.payload = {
    serialNumber: serialNumber,
    pH: pH,
    redox: redox,
    temperature: temperature,
    salinity: salinity,
    pool_volume:pool_volume,
    delay_startup:delay_startup,
    current_power: current_power,
    water_flow: water_flow,
    pH_desired: ph_desired,
    redox_desired: redox_desired,
    status: state,
    delay: delay,
    ePower: eActive?"active":"wating",
    eDirection: eDirection?"right":"left"
};
return msg;
2 Likes