Commercial 'Smart Thermostats' bug the hell out of me.<p>A Thermostat is a temperature sensor, and a relay. Anyone who has a little bit of tinkering experience could probably build a smart thermostat that doesn't need the cloud and is totally private.<p>However, accepting that most people can't be bother to DIY, or even have the needed skills, I'm surprised there aren't 'Open Hardware' Thermostats available that are just as easy to fit?<p>I've not Googled, but does anyone know of any non-DIY 'open' alternatives ?
The gron tool mentioned by the author is incredibly useful for grepping json.<p><a href="https://github.com/tomnomnom/gron" rel="nofollow">https://github.com/tomnomnom/gron</a>
So the author used someones else library <a href="https://github.com/derek-miller/nest-protobuf" rel="nofollow">https://github.com/derek-miller/nest-protobuf</a> to "reverse engineer" the nest API, packaged it up and made a blog post...
I might have to look into that method for home vs away. Using Home Assistant and the HA app on my wife and I's phones solely for presence detection has been kind of a hassle.
If you want to go the other way, and have the phones ping the network instead of the other way around, there are applications that regularly publish to message queues. The Android app Presence Publisher [1] for example publishes to MQTT.<p>[1]: <a href="https://f-droid.org/en/packages/org.ostrya.presencepublisher/" rel="nofollow">https://f-droid.org/en/packages/org.ostrya.presencepublisher...</a>
Weird, I was wondering about this literally this afternoon! Nice write-up, and thanks for packaging it up nicely, hope to use it soon myself too.<p>Though I've been trying to think about being accepting of IPv6 and shunning static IPs (and DHCP) recently, maybe something can be done with MACs... Perhaps even on the broadcast when the device tries to join the network and self-assign an IP, I don't know a lot about it though.
Why use static ips? Wouldn't an ARP packet suffice? It doesn't require setting up static IPs, and also avoids the problem of "stealthed" ports, if android/ios decides to implement that sort of thing.
Did you look at possibly reversing the payload from the API into the device (vs. from the webapp into the API), and if so did it seem tractable?<p>Nice write up thank you for sharing.