nebulous / infinitude

Open control of Carrier/Bryant thermostats
MIT License
225 stars 50 forks source link

gaining access to everything by using systems/infinitude #42

Closed 7ooL closed 6 years ago

7ooL commented 7 years ago

so i think I've come across a different way to interact with the api, that would give me complete control over the entire system. http://192.168.1.248:3000/systems/infinitude returns and xml file of the entire system's configuration. I've noticed that the Infinitude schedule editor pushes a json version of this xml file to the same address http://192.168.1.248:3000/systems/infinitude

what i can't figure out is how to convert the XML to JSON so that i can push my own edits back to infinitude. is there a particular json convention that you use that i can look for. for example Abdera, BadgerFish, Cobra, GData, Yahoo, Parker dont seem to fit what you push.

is there a way to pull /systems/infinitude in a json format so i don't need to mess with xml?

7ooL commented 7 years ago

oh please tell me i just found it, http://192.168.1.248:3000/systems.json

7ooL commented 7 years ago

this is useful for anybody else who wants to write their own interface and control any setting found in the systems.json file

nebulous commented 7 years ago

Yep, that's it. For documentation if anyone else is interested, Infinitude makes all endpoint data available as both json and xml by changing the extension. Check the /state directory for things you might want to poke.

nebulous commented 7 years ago

Just remember that modifying the system configuration directly is more complex and can be dangerous, which is why the api endpoints are there.

7ooL commented 7 years ago

i've started creating my own python api for easier modification of the system configuration file, It's much more than what i actually needed but it thought others may find it useful. I'll do what i can to protect users from jamming in things that may break infinitude. check it out here: https://github.com/7ooL/pyInfinitude

7ooL commented 7 years ago

I appreciate the work you have done on this project but now i'm simply using it as a pass through to configure the infinity system. Can you offer me any insight on how to pass the systems.json file directly to the wall thermostat and not go through infinitude? i'd like to just pull and push the file when i need to make changes.

nebulous commented 7 years ago

The thermostat uses an xml interface which is loosely documented in the wiki. The majority of what Infinitude does is to provide endpoints adhering to the protocol the thermostat expects, and to do transparent json conversions for the web interface. So you'll need to write a translator from json to the correct xml format and answer to at least the alive, status, and system endpoints with said xml.