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:
- 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.
- 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.