1. 程式人生 > >Hacking my Smart Heating with AWS

Hacking my Smart Heating with AWS

Hacking the Hub

The Wiser system has an app with the usual Alexa etc. integrations, as well as small but growing support for IFTTT. I wanted to log as much as possible, including room temperatures and boiler states, so needed to dig a bit deeper into the internal platform.

When the system is first setup, the hub creates a wireless access point that the user connects to with their phone, in order to connect the app. A secret token is exchanged during this process, which is then used to authenticate all further requests to the Wiser hub. A bit of packet sniffing later and it turns out it’s really easy to grab this secret for our own purposes. During the setup process, while connected to the Wiser AP, I could simply point a browser to the URL: http://192.168.8.1/secret

The secret then appears in the browser!

Snippet of the response from the Wiser hub.

When everything is up and running, the hub can be queried to give a JSON blob that summarises the state of the system. I used Postman to try out some example GET requests. The endpoint is: https://hubip/data/domain/In order for the request to work, the header has to contain the secret token value under the key SECRET

.

A subset of the JSON response is shown here, the full output is pretty comprehensive! Of particular interest were the HeatingRelayState and CalculatedTemperature fields. For optimising my heating setup, it also made sense to capture the target for each room from CurrentSetPoint, as well as the PercentageDemand

being asked of the boiler. In practice, my plan was to grab everything and store it in S3.

I’d previously picked up some NodeMCUs and not yet had a project to use them for. I set one up to poll the Wiser hub every minute and pass the JSON blob to an AWS Lambda function (serverless code that runs in response to an event).