New custom integration for Pixie Plus

I wrote an HA integration for Pixie Plus. Unfortunately, it requires quite a lot of work to install due to required parameters that are not readily available.

Pixie Plus is a line of smart light products and other smart home devices made by an Australian company called SAL. I like them because they don’t require neutral, are modular, can be easily retrofitted and work well. On the down side they work with BLE (although I had no issues with reliability) and need a propitiatory hub for network control. Also, the hub requires the cloud even for local access. They don’t support HA but this can be implemented via SmartThings, although this creates prolonged reaction time. I didn’t like the indirect implementation because of the delay and because, on several occasions, I needed to reconnect HA to SmartThings which meant I needed to reconfigure some parameters for my lights. This is why I wrote this integration.

After I published the initial integration, which only supported on/off light switches, I contacted the Pixie Plus team and they kindly sent me a box with different devices which I was able to implement in the integration. As such, the integrations currently supports the following device:

Smart Switch G3 - SWL600BTAM
Smart dimmer G3 - SDD300BTAM
Smart Switch G2 - SWL350BT
Smart Dimmer G2 - SDD350BT
Smart plug - ESS105/BT
Flexi smart LED strip - FLP12V2M/RGBBT
Flexi Streamline - FLP24V2M
LED Strip Controller - LT8915DIM/BT
Smart Socket Outlet - SP023/BTAM
Dual Relay Control - PC206DR/R/BTAM
Blind & Signal Control - PC206BS/R/BTAM

For compatible devices, it supports dimming, colors and effects. The integration doesn’t support built in Pixie Plus groups, scenes, schedules or timers because I assume that you would use Home Assistant for those functions anyway. It only works if you have a Pixie Plus Hub and doesn’t support Bluetooth capabilities. All the devices need first to be setup in the Pixie Plus app to work.

The integration requires the cloud. To clarify, while Pixie Plus can work locally, without internet connection, I am not able to implement local support because I am unable to decode the TCP messages between the app and the hub (if someone from Pixie Plus is willing to help me decode the local TCP communication, I may be able to implement local support).

I am not a programmer, and my code is messy and inefficient. I had no prior knowledge of Python so go easy on me.

The difficult part, to use the integration you will need 3 parameters that are quite difficult to find. They are called ApplicationID, InstallationID and JavaScriptKey. I assume they are generated by the Pixie Plus client (i.e. mobile app) on first installation/login and are unique for user/Pixie Plus app combination. They are required for communication with the hub.

There are two ways to find those parameters:

  1. Use mitmproxy and a rooted virtual android phone (I used Android SDK). You will need to upload to the phone the mitmproxy CA certificate as a system (not user) certificate. This link is very helpful. Then install the Pixie Plus app on the virtual phone, log in to tha app and set the proxy on the virtual phone to the mitmproxy. Once all this is done you will be able to see the communication between the Pixie Plus app and the server and locate the needed parameters.
  2. For iPhone you can use Proxyman. You will need to create a new account and login with it to the Pixie Plus app when you retrieve those parameters so new ones are created, otherwise you won’t be able to use both HA and the app. It may be possible to use a packet sniffer on Android (i.e. Packet Capture) as well, but I am not sure if this will work on a non-rooted device because of the need to install a CA certificate. You will need to use a new account if you get the parameters that way.

The integration needs to be copied to the custom integration folder and after reboot can be installed from the UI. Further setup is needed for cover configuration - see more comprehensive explanation on GitHub.

I can’t guarantee the integration will work on your setup. Feel free to use, modify and add to the code as needed. I may be able to answer an occasional question (if I know the answer) but generally won’t have much time to spend on that.

2 Likes

How are you finding it several months later? Thinking of installing some in my home.

It works well. I have had no issues with it. I haven’t heard about other people having problems although I don’t know how many people are using it.

1 Like

Hello Nir,

I have tried both proxyman or mitm to get those three keys. But spent almost 2 days and got nothing in both side.

Do you have a tutorial how to get those three keys?

I don’t think X-SERVER-TOKEN is the one we aim for.

Sorry for the late response! I don’t have a tutorial as such. Do you see any data on the mitm between the phone and the internet?

Hello Nir,

Not so much.

Looks like AVD is complete blocked all the out side network even I used mitm transparent mode.

Just showing something like keep trying to connect to aws server, nothing else.

Did you upload to the AVD the mitmproxy’s CA certificate as a system (not user) certificate? Are your AVD and mitmproxy on the same machine?

Hello, Nir, yes, I did, and it is on the same machine

If you are not getting any traffic, it could be related to the proxy definitions on the AVD, which should point to the mitmproxy IP and port.

Any idea if you can have one of the pixie switches decoupled from its relay to just fire an automation? Or have the relay always on and be able to toggle a Zigbee light?

You could connect a pixie switch to power without connecting it to a light and then make an automation in HA which triggers when the switch is turned on. All the integration does is imitate the pixie plug app in AH so HA gets updates about states and can control the switches, with all this done via the pixie hub. What physically is connected to the switch is up to you.

I am not sure I understand your question though. I think the the pixie switch is the relay. It can be operated both physically via the button and remotely. In this sense, I don’t think you can decouple them.

Sounds like the Wiser mechs then.

What I mean is like a Shelly can have the switch pressed, but it does not trigger the relay, instead it triggers an automation or scene in HA. I use this for smart globes / downlights so the relay is always on and power to the fixture is always there for the zigbee globe.