Intex Pure Spa wifi control

Hurray :wink:

I can push the buttons, but it does not know the state of buttons and i donā€™t know why

Nice !

Did you find how to read:

  • The error codes ? @elkropac found that E81 error influences the current_temp, but we still have to reverse engineer the actual coding of it and the other error codes
  • The heating actual state ? We have the heat setting but not the fact wether it is actually heating or the temperature is reached.

I didnā€™t understand how I could use the last part of code, could you rephrase it please ?

Last, AES might be used for communicating with intex cloud servers ? Do you think of another usage ?

Iā€™m very happy you could use it, it gives me support to go on developing the integration !
Keep posting issues for errors, enhancements, and feature requests !

Nice, it helps me in visualizing the expected dashboard to produceā€¦

ā€¦and I think I found a contributor for internationalization of the future integration!
Can I come back to you when strings are ready to be translated ?

1 Like

AES might be for mqtts , i think, it talks mqtts to cloud

Can anybody check hassio-intex-spa/switch.py at 8417514b788395a688a6ebef39e5c461944e762d Ā· Elkropac/hassio-intex-spa Ā· GitHub and tell me, why it does not have switch state?

In temperature sensors hassio-intex-spa/sensor.py at 8417514b788395a688a6ebef39e5c461944e762d Ā· Elkropac/hassio-intex-spa Ā· GitHub , i get the current temps and it also updates when temps change ā€¦

I read your integration code this afternoon and it helped me much, namely your use of DataCoordinator.
I achieved to get a device and a working power switchā€¦ more to come !

Looks like you messed something up with class arguments, I donā€™t know what but here is the class declaration I came to:
class IntexSpaPowerSwitch(IntegrationIntexSpaEntity, SwitchEntity)
using:
class IntegrationIntexSpaEntity(CoordinatorEntity)

I used this much:

Yes, thanks, that helped :slight_smile: Now i have proper switch, but after switching on, it bounces back to off and then, on coordinator update, it bounces back to on. Do you update coordinator in async_turn_on() or async_turn_off() with return values from async_set_power() ?

Iā€™m glad it helped. I spend lot of time on trial and error. Itā€™s just glued together from pieces i found online. Problem is, that some things - for example entity attributes, can be defined in many ways and it seems, all are right

I will try to create cilimate entity for controling temperature and heating and then, i will wait for your properly written code :slight_smile:

Does the decompiled code contain table of error codes?

ok, i figured out how to update coordinator using status returned from turn on or off methods

    async def async_turn_off(self, **kwargs: Any) -> None:
        """Turn off switch"""
        status = await self.spa.async_set_heater(False)
        self.coordinator.async_set_updated_data(status)
1 Like

Ok, climate entity was extremely easy, using all the knowledge from yesterday.
Does it make sense, to control ā€œbubblesā€ here as fan?

image

    <string name="e81_content">Make sure the spa is powered on and the wireless control panel is within range of the control base (5m / 16ft).</string>
    <string name="e81_title">E81 - Transmission signal failure!</string>
    <string name="e90_content">Check the filter cartridge and ensure nothing is clogging the circulation system.</string>
    <string name="e90_title">E90 - Low or no water ļ¬‚ow!</string>
    <string name="e91_content">Add more salt and make sure the electrolytic cell cord is firmly plugged in.</string>
    <string name="e91_title">E91 - Low salt level or no salt!</string>
    <string name="e92_content">Partially drain the spa and refill with fresh water.</string>
    <string name="e92_title">E92 - High salt level!</string>
    <string name="e94_content">Add warm water to raise the spa temperature above 5ĀŗC / 41ĀŗF.</string>
    <string name="e94_title">E94 -Water temperature too low!</string>
    <string name="e95_content">Turn off the heater, check the filter cartridge and ensure nothing is clogging the circulation system.</string>
    <string name="e95_title">E95 -Water temperature too high!</string>
    <string name="e96_content">Turn oļ¬€ and unplug the spa. Check the ļ¬lter cartridge and ensure nothing is clogging the circulation system, then restart the spa.</string>
    <string name="e96_title">E96 - Control base system error!</string>
    <string name="e97_content">Turn oļ¬€ and unplug the spa immediately. Contact Intex Service Center.</string>
    <string name="e97_title">E97 - Heater dry-ļ¬re protection activated!</string>
    <string name="e99_content">Turn oļ¬€ and unplug the spa immediately. Contact Intex Service Center.</string>
    <string name="e99_title">E99 - Damaged water temperature sensor!</string>

I hope it helps

Thanks @CyrilP
We still have to find out how the errors are coded inside of the status response.
Iā€™ll try and go on working on the integration todayā€¦ @elkropac, you got so far!!!

Thanks, I implemented it !

I personally tend to consider bubbles as a specific switch.
If not, how to consider jets ?

have a look in DeviceSPAActivity

            } else if ((parseInt < 182 || ((parseInt >= 190 && parseInt <= 197) || parseInt == 199)) && needShowErrorCode(appendZeroToStr(binaryString))) {
                this.hasErrorCode = true;
                TextView textView = this.mErrorCode;
                StringBuilder sb = new StringBuilder();
                sb.append("E");
                int i = parseInt - 100;
                sb.append(i);
                textView.setText(sb.toString());
                showErrorContent("E" + i);
            }

2 Likes

Great ! But do some error detection please, i donā€™t know, what happens, if status is not instance of IntexSpaStatus - maybe do some method in your IntegrationIntexSpaEntity class to handle errors and call it from all async_turn_on/off methods?

I did not consider jets, i donā€™t have them :slight_smile: . You are right, you cannot cram all functionality to enitity not to ment to be SPA