Hello there!
I own a SolaX X1-Micro 2 in 1 grid-tie solar inverter and I was surprised to see it would require a cloud based integration to get data out of it, which I don’t like.
The workarounds I found here and there talk about REST API available on the device wifi, or JSON payloads over MQTT (by faking the DNS resolution and redirecting the inverter to your own broker) but none of those work with the X1-Micro. The “pocket wifi” is embedded in the inverter, there is no API available, and MQTT payloads are proprietary (or at least not documented) binary messages…
That was untill I could decode the binary payloads and write my own integration ![]()
HACS SolaX X1-Micro integration
Everything is explained on my repo:
- Your MQTT broker must have 2 listeners configured (Mosquitto configuration is provided on the repo):
- TLS on port 8883: this is the main listener on which the device communicates. Self signed server certificate is enough.
- Plain (no TLS) on port 2901: this one is used at boot and a few times during the day for registration and time sync over the cloud, it might not be useful in local mode but hey why not… It might become handy later.
- You need to spoof the mqtt001.solaxcloud.com DNS record in your network so the inverter thinks it is talking to the cloud but is actually talking to your broker. Configuration examples are provided for Technitium DNS Server, Bind9, Pihole.
It looks like the inverter has everything required to check the identity of the server it is communicating with, it does client certificate authentification, but does not verify the server identity… That’s a flaw! To our advantage here, but that’s a flaw.
I would like to add support for the 4 in 1 models as well so if someone wants to share the binary payloads with me I would be glad to give it a look.
Also, I would love to get my hands on the device firmware… Either from an update file, or from a spare donor inverter. Feel free to PM me if you have a file or a broken unit.
I hope this integration will help others!