Open ericreich opened 1 year ago
curl https://www.myinfinitytouch.carrier.com/static/js/config.ts |grep consumer
Can't find either key there either.
open chrome developer console, login to carrier infinity, in developer section click "Sources" tab, navigate in sources tab to top/www.myinfinitytouch.carrier.com/static/js/config.ts (second) put breakpoint on any line in infinityConfig, click refresh page, it should hit your breakpoint, then in your "Scope" debugger window it should show the variables in infinityConfig
This is how I found it:
Network
tab.Response
tab for main.[some-key].chunk.js
, search (ctrl-F) for consumerKey
. Same for consumerSecret
.You don't even need to log in. Those are the right variables, right?
This is how I found it:
- Open chrome developer console and go to the
Network
tab.- Navigate to https://www.myinfinitytouch.carrier.com/login.
- In the
Response
tab formain.[some-key].chunk.js
, search (ctrl-F) forconsumerKey
. Same forconsumerSecret
.You don't even need to log in. Those are the right variables, right?
wow really? hah. let me know if you get it to work. it's working for me
Got it sorted and it seems to be working, sort of:
{'energy': {'$': {'version': '1.48', 'xmlns:atom': 'http://www.w3.org/2005/Atom'}, 'atom:link': [{'$': {'href': 'https://www.app-api.ing.carrier.com/systems/2514W003792/energy', 'rel': 'self'}}, {'$': {'href': 'https://www.app-api.ing.carrier.com/systems/2514W003792', 'rel': 'http://www.api.ing.carrier.com/rels/system'}}], 'cooling': {'$': {'display': 'on', 'enabled': 'on'}}, 'cost': {'period': [{'$': {'id': 'day1'}, 'cooling': '0.0000', 'eheat': '0.0000', 'fan': '0.0000', 'fangas': '0.0000', 'gas': '1.1400', 'hpheat': '0.0000', 'looppump': '0.0000', 'reheat': '0.0000'}, {'$': {'id': 'day2'}, 'cooling': '0.0000', 'eheat': '0.0000', 'fan': '0.0000', 'fangas': '0.0000', 'gas': '1.4900', 'hpheat': '0.0000', 'looppump': '0.0000', 'reheat': '0.0000'}, {'$': {'id': 'month1'}, 'cooling': '0.0000', 'eheat': '0.0000', 'fan': '0.0000', 'fangas': '0.0000', 'gas': '78.8000', 'hpheat': '0.0000', 'looppump': '0.0000', 'reheat': '0.0000'}, {'$': {'id': 'month2'}, 'cooling': '0.0000', 'eheat': '0.0000', 'fan': '0.0000', 'fangas': '0.0000', 'gas': '95.8000', 'hpheat': '0.0000', 'looppump': '0.0000', 'reheat': '0.0000'}, {'$': {'id': 'year1'}, 'cooling': '0.0000', 'eheat': '0.0000', 'fan': '0.0000', 'fangas': '0.0000', 'gas': '187.0000', 'hpheat': '0.0000', 'looppump': '0.0000', 'reheat': '0.0000'}, {'$': {'id': 'year2'}, 'cooling': '122.0000', 'eheat': '0.0000', 'fan': '10.0000', 'fangas': '0.0000', 'gas': '505.0000', 'hpheat': '0.0000', 'looppump': '0.0000', 'reheat': '0.0000'}]}, 'eheat': {'$': {'display': 'off', 'enabled': 'on'}}, 'fan': {'$': {'display': 'on', 'enabled': 'on'}}, 'fangas': {'$': {'display': 'on', 'enabled': 'on'}}, 'gas': {'$': {'display': 'on', 'enabled': 'on'}}, 'hpheat': {'$': {'display': 'off', 'enabled': 'off'}}, 'hspf': 8.8, 'looppump': {'$': {'display': 'off', 'enabled': 'off'}}, 'reheat': {'$': {'display': 'off', 'enabled': 'on'}}, 'seer': 15, 'timestamp': '2023-03-07T05:06:18.691Z', 'usage': {'period': [{'$': {'id': 'day1'}, 'cooling': '0', 'eheat': '0', 'fan': '0', 'fangas': '0', 'gas': '142', 'hpheat': '0', 'looppump': '0', 'reheat': '0'}, {'$': {'id': 'day2'}, 'cooling': '0', 'eheat': '0', 'fan': '0', 'fangas': '0', 'gas': '187', 'hpheat': '0', 'looppump': '0', 'reheat': '0'}, {'$': {'id': 'month1'}, 'cooling': '0', 'eheat': '0', 'fan': '0', 'fangas': '0', 'gas': '9819', 'hpheat': '0', 'looppump': '0', 'reheat': '0'}, {'$': {'id': 'month2'}, 'cooling': '0', 'eheat': '0', 'fan': '0', 'fangas': '0', 'gas': '11952', 'hpheat': '0', 'looppump': '0', 'reheat': '0'}, {'$': {'id': 'year1'}, 'cooling': '0', 'eheat': '0', 'fan': '0', 'fangas': '0', 'gas': '23237', 'hpheat': '0', 'looppump': '0', 'reheat': '0'}, {'$': {'id': 'year2'}, 'cooling': '939', 'eheat': '0', 'fan': '85', 'fangas': '0', 'gas': '63019', 'hpheat': '0', 'looppump': '0', 'reheat': '0'}]}}} Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp... Adding temp...
Don't see a default db_path but it's not required. Can't find anything it has been writing.
It doesn't seem to be getting the idu_status. Am I missing something? Carrier Home app seems to be working correctly.
This can be a very useful if I can monitor temps and operating status.
Node-Red to Influxdb to Grafana is my workflow for all my other IOT devices. I was using Infinitude but that's not on an official API. This is. I just lose the ModBus connection.
Thanks for putting this together.
By default, the code just fetches the "energy" data, but you can fetch any of the fields in the CarrierSystemItem
class listed at the top of the carrier.py
file. Just tweak the lines in main()
.
If only I could modify the set point.... (Carrier's app doesn't offer enough time-of-day customizability for my tastes....) (EDIT: I just noticed that /systems/{serialNumber}/config has PUT capability. Would modifying zones[x].activities[y].htsp
work?)
Just ran into this db error...
File "/home/pi/carrier-infinity-evolution/carrier_infinity_evolution/db.py", line 167, in write_odu_status data['exvposvi']['$']['unit'], TypeError: 'NoneType' object is not subscriptable
Just ran into this db error...
Yeah, some of the fields can be empty/null, resulting in some null refs. You can comment out the write_odu_status call, or if you actually want the data in a db, then you might need to modify the schema. This patch seemed to work for me (but might break something else, I dunno):
diff --git a/carrier_infinity_evolution/db.py b/carrier_infinity_evolution/db.py
index 300c153..c6fcb95 100644
--- a/carrier_infinity_evolution/db.py
+++ b/carrier_infinity_evolution/db.py
@@ -60,7 +60,7 @@ def ensure_database(path: Path):
opmode text not null,
iducfm integer not null,
lat integer not null,
- oat integer not null,
+ oat integer,
oducoiltmp integer not null,
blwrpm integer not null,
linevolt integer not null,
@@ -89,10 +89,10 @@ def ensure_database(path: Path):
dcbusvoltage real,
dischargepressure real,
dischargesuperheat real,
- exvposvi_unit text not null,
- exvposvi_value integer not null,
+ exvposvi_unit text,
+ exvposvi_value integer,
ipmtemperature real,
- lowambientcooling text not null,
+ lowambientcooling text,
pfcmtemperature real,
outdoorfanrpm real
)''')
@@ -164,8 +164,8 @@ def write_odu_status(path: Path, data: Dict):
data['dcbusvoltage'],
data['dischargepressure'],
data['dischargesuperheat'],
- data['exvposvi']['$']['unit'],
- data['exvposvi']['_'],
+ data['exvposvi']['$']['unit'] if data['exvposvi'] else None,
+ data['exvposvi']['_'] if data['exvposvi'] else None,
data['ipmtemperature'],
data['lowambientcooling'],
data['pfcmtemperature'],
Thanks, it does look like a lot of changes are needed to make this fully functional. Good start though.
Infinitude does write htsp and clsp so it is possible to do it with a put to the config json for the desired zone. See the instructions for using the API.
I'm sure from a quick look at the API that it is possible to modify the set points. That should give gnuite what he/she wants.
I'm just a code tweaker. Writing a lot of new code is usually beyond my pay grade. (I learned coding when BASIC was a radical new idea and FORTRAN IV was taught in engineering school).
ya this is a very rough lib, you're not really supposed to use main, that's just showing you an example of how to use it.
that being said I welcome PRs! :)
btw what I really want to do is be able to communicate directly with the thermostat, the data from the website is infrequent and quite delayed
Sample output from config and status on my system. I only have one active zone. It just went into night setback mode. It says to get the json, modify it, then put it to avoid errors. idu and odu data is not being updated, just status and config on my Series A Tstat.
Unfortunately, beyond my skill level.
{'config': {'$': {'version': '1.48', 'xmlns:atom': 'http://www.w3.org/2005/Atom'}, 'atom:link': [{'$': {'href': 'https://www.app-api.ing.carrier.com/systems/2514W003792/config', 'rel': 'self'}}, {'$': {'href': 'https://www.app-api.ing.carrier.com/systems/2514W003792', 'rel': 'http://www.api.ing.carrier.com/rels/system'}}], 'blight': 80, 'blowerSpeed': 0, 'calcMinCFM': 0, 'cfgauto': 'on', 'cfgchgovr': 30, 'cfgdead': 2, 'cfgem': 'F', 'cfgfan': 'on', 'cfghumid': 'off', 'cfgpgm': 'on', 'cfgrecovery': 'on', 'cfgtype': 'heatcool', 'cfguv': 'off', 'cfgvent': 'off', 'cfgzoning': 'on', 'ducthour': 13, 'erate': 0.13, 'filterinterval': 3, 'filtertype': 'air filter', 'filtrrmd': 'off', 'fueltype': 'gas', 'gasunit': 'therm', 'grate': 0.8, 'heatsource': 'system', 'humidityAway': {'humid': 'off', 'humidifier': 'off', 'rclg': 15, 'rclgovercool': 'off', 'rhtg': 1, 'ventclg': 'off', 'venthtg': 'off', 'ventspdclg': 'high', 'ventspdhtg': 'high'}, 'humidityHome': {'humid': 'manual', 'humidifier': 'on', 'rclg': 4, 'rclgovercool': 'on', 'rhtg': 4, 'ventclg': 'auto', 'venthtg': 'auto', 'ventspdclg': 'high', 'ventspdhtg': 'high'}, 'humidityVacation': {'humidifier': 'off', 'rclg': 15, 'rclgovercool': 'off', 'rhtg': 1, 'ventclg': 'off', 'venthtg': 'off', 'ventspdclg': 'high', 'ventspdhtg': 'high'}, 'humidityfan': 'off', 'huminterval': 12, 'humoff': 0, 'humrmd': 'off', 'isMqtt': False, 'mode': 'auto', 'occParameters': 'T1=60,T2=300,MCT1=5,MCT2=10', 'occSustainTime': 120, 'odtmpoff': 0, 'previousMode': 'auto', 'screensaver': 'off', 'sound': 'on', 'staticPressure': 0, 'statpressmon': 'on', 'systemCFM': 0, 'timeAndDate': None, 'timestamp': '2023-04-19T02:17:30.491Z', 'torqueControl': 'off', 'utilityEvent': {'demandClAbs': 82, 'demandHtAbs': 60, 'demandOffset': 4, 'demandResp': 'offset', 'enabled': 'false', 'maxLimit': 90, 'minLimit': 50, 'priceClAbs': 82, 'priceHtAbs': 60, 'priceLimit': '10', 'priceOffset': 4, 'priceResp': 'offset', 'restoreDefaults': 'off'}, 'uvinterval': 12, 'uvrmd': 'off', 'vacat': 'off', 'vacfan': 'off', 'vacmaxt': '80.0', 'vacmint': '55.0', 'ventinterval': 90, 'ventrmd': 'off', 'weatherPostalCode': '46064', 'wholeHouse': {'activities': {'activity': [{'$': {'id': 'sleep'}, 'blight': 80}, {'$': {'id': 'away'}, 'blight': 80}, {'$': {'id': 'wake'}, 'blight': 80}, {'$': {'id': 'manual'}, 'blight': 80}, {'$': {'id': 'home'}, 'blight': 80}]}, 'hold': 'off', 'holdActivity': 'none'}, 'windowprotect': {'enabled': 'on', 'rhtg': 9, 'ventprotect': 'on'}, 'zones': {'zone': [{'$': {'id': '1'}, 'activities': {'activity': [{'$': {'id': 'away'}, 'clsp': '78.0', 'fan': 'off', 'htsp': '58.0', 'previousFan': None}, {'$': {'id': 'home'}, 'clsp': '75.0', 'fan': 'off', 'htsp': '71.0', 'previousFan': None}, {'$': {'id': 'manual'}, 'clsp': '75.0', 'fan': 'off', 'htsp': '72.0', 'previousFan': None}, {'$': {'id': 'sleep'}, 'clsp': '78.0', 'fan': 'off', 'htsp': '58.0', 'previousFan': None}, {'$': {'id': 'wake'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}]}, 'airflowlimit': 'high', 'cfmlimit': '3375', 'enabled': 'on', 'hold': 'off', 'name': 'tv room', 'otmr': None, 'program': {'day': [{'$': {'id': 'Sunday'}, 'period': [{'$': {'id': '1'}, 'activity': 'wake', 'enabled': 'on', 'time': '07:30'}, {'$': {'id': '2'}, 'activity': 'home', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'off', 'time': '00:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Monday'}, 'period': [{'$': {'id': '1'}, 'activity': 'wake', 'enabled': 'on', 'time': '07:30'}, {'$': {'id': '2'}, 'activity': 'home', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'off', 'time': '00:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Tuesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'wake', 'enabled': 'on', 'time': '07:30'}, {'$': {'id': '2'}, 'activity': 'home', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'off', 'time': '00:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Wednesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'wake', 'enabled': 'on', 'time': '07:30'}, {'$': {'id': '2'}, 'activity': 'home', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'off', 'time': '00:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Thursday'}, 'period': [{'$': {'id': '1'}, 'activity': 'wake', 'enabled': 'on', 'time': '07:30'}, {'$': {'id': '2'}, 'activity': 'home', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'off', 'time': '00:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Friday'}, 'period': [{'$': {'id': '1'}, 'activity': 'wake', 'enabled': 'on', 'time': '07:30'}, {'$': {'id': '2'}, 'activity': 'home', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'off', 'time': '00:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Saturday'}, 'period': [{'$': {'id': '1'}, 'activity': 'wake', 'enabled': 'on', 'time': '07:30'}, {'$': {'id': '2'}, 'activity': 'home', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'off', 'time': '00:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}]}, 'setback': 'on', 'tempoffset': '0'}, {'$': {'id': '2'}, 'activities': {'activity': [{'$': {'id': 'away'}, 'clsp': '80.0', 'fan': 'off', 'htsp': '60.0', 'previousFan': None}, {'$': {'id': 'home'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'manual'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'sleep'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'wake'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}]}, 'airflowlimit': 'high', 'cfmlimit': '0', 'enabled': 'off', 'hold': 'off', 'name': 'Zone 2', 'otmr': None, 'program': {'day': [{'$': {'id': 'Sunday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Monday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Tuesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Wednesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Thursday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Friday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Saturday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}]}, 'setback': 'on', 'tempoffset': '0'}, {'$': {'id': '3'}, 'activities': {'activity': [{'$': {'id': 'away'}, 'clsp': '80.0', 'fan': 'off', 'htsp': '60.0', 'previousFan': None}, {'$': {'id': 'home'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'manual'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'sleep'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'wake'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}]}, 'airflowlimit': 'high', 'cfmlimit': '0', 'enabled': 'off', 'hold': 'off', 'name': 'Zone 3', 'otmr': None, 'program': {'day': [{'$': {'id': 'Sunday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Monday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Tuesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Wednesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Thursday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Friday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Saturday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}]}, 'setback': 'on', 'tempoffset': '0'}, {'$': {'id': '4'}, 'activities': {'activity': [{'$': {'id': 'away'}, 'clsp': '80.0', 'fan': 'off', 'htsp': '60.0', 'previousFan': None}, {'$': {'id': 'home'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'manual'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'sleep'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'wake'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}]}, 'airflowlimit': 'high', 'cfmlimit': '0', 'enabled': 'off', 'hold': 'off', 'name': 'Zone 4', 'otmr': None, 'program': {'day': [{'$': {'id': 'Sunday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Monday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Tuesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Wednesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Thursday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Friday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Saturday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}]}, 'setback': 'on', 'tempoffset': '0'}, {'$': {'id': '5'}, 'activities': {'activity': [{'$': {'id': 'away'}, 'clsp': '80.0', 'fan': 'off', 'htsp': '60.0', 'previousFan': None}, {'$': {'id': 'home'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'manual'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'sleep'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'wake'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}]}, 'airflowlimit': 'high', 'cfmlimit': '0', 'enabled': 'off', 'hold': 'off', 'name': 'Zone 5', 'otmr': None, 'program': {'day': [{'$': {'id': 'Sunday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Monday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Tuesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Wednesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Thursday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Friday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Saturday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}]}, 'setback': 'on', 'tempoffset': '0'}, {'$': {'id': '6'}, 'activities': {'activity': [{'$': {'id': 'away'}, 'clsp': '80.0', 'fan': 'off', 'htsp': '60.0', 'previousFan': None}, {'$': {'id': 'home'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'manual'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'sleep'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'wake'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}]}, 'airflowlimit': 'high', 'cfmlimit': '0', 'enabled': 'off', 'hold': 'off', 'name': 'Zone 6', 'otmr': None, 'program': {'day': [{'$': {'id': 'Sunday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Monday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Tuesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Wednesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Thursday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Friday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Saturday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}]}, 'setback': 'on', 'tempoffset': '0'}, {'$': {'id': '7'}, 'activities': {'activity': [{'$': {'id': 'away'}, 'clsp': '80.0', 'fan': 'off', 'htsp': '60.0', 'previousFan': None}, {'$': {'id': 'home'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'manual'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'sleep'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'wake'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}]}, 'airflowlimit': 'high', 'cfmlimit': '0', 'enabled': 'off', 'hold': 'off', 'name': 'Zone 7', 'otmr': None, 'program': {'day': [{'$': {'id': 'Sunday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Monday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Tuesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Wednesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Thursday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Friday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Saturday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}]}, 'setback': 'on', 'tempoffset': '0'}, {'$': {'id': '8'}, 'activities': {'activity': [{'$': {'id': 'away'}, 'clsp': '80.0', 'fan': 'off', 'htsp': '60.0', 'previousFan': None}, {'$': {'id': 'home'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'manual'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'sleep'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}, {'$': {'id': 'wake'}, 'clsp': '76.0', 'fan': 'off', 'htsp': '68.0', 'previousFan': None}]}, 'airflowlimit': 'high', 'cfmlimit': '0', 'enabled': 'off', 'hold': 'off', 'name': 'Zone 8', 'otmr': None, 'program': {'day': [{'$': {'id': 'Sunday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Monday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Tuesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Wednesday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Thursday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Friday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}, {'$': {'id': 'Saturday'}, 'period': [{'$': {'id': '1'}, 'activity': 'home', 'enabled': 'on', 'time': '06:00'}, {'$': {'id': '2'}, 'activity': 'away', 'enabled': 'on', 'time': '08:00'}, {'$': {'id': '3'}, 'activity': 'home', 'enabled': 'on', 'time': '17:00'}, {'$': {'id': '4'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}, {'$': {'id': '5'}, 'activity': 'sleep', 'enabled': 'on', 'time': '22:00'}]}]}, 'setback': 'on', 'tempoffset': '0'}]}}} {'status': {'$': {'version': '1.48', 'xmlns:atom': 'http://www.w3.org/2005/Atom'}, 'atom:link': [{'$': {'href': 'https://www.app-api.ing.carrier.com/systems/2514W003792/status', 'rel': 'self'}}, {'$': {'href': 'https://www.app-api.ing.carrier.com/systems/2514W003792', 'rel': 'http://www.api.ing.carrier.com/rels/system'}}], 'cfgem': 'F', 'cfgtype': 'heatcool', 'configHasChanges': False, 'dealerHasChanges': False, 'dealerLogoHasChanges': 'false', 'equipEventsPingRate': 79200, 'filtrlvl': '0', 'historyPingRate': 75600, 'humid': 'off', 'humlvl': '100', 'idu': {'cfm': None, 'opstat': None, 'type': None}, 'iduConfigHasChanges': False, 'iduFaultsPingRate': 86400, 'iduStatusPingRate': 93600, 'isDisconnected': False, 'localTime': '2023-04-18T22:39:42.022', 'mode': 'off', 'name': 'Downstairs', 'oat': '47', 'odu': {'opmode': None, 'opstat': None, 'type': None}, 'oduConfigHasChanges': False, 'oduFaultsPingRate': 82800, 'oduStatusPingRate': 90000, 'oprstsmsg': 'idle', 'pingRate': 15, 'rootCausePingRate': 72000, 'sensorConfigHasChanges': 'false', 'sensorDiagnosticHasChanges': 'false', 'sensorProfileHasChanges': 'false', 'serverHasChanges': False, 'timestamp': '2023-04-19T02:39:42.022Z', 'utilityEventsHasChanges': 'false', 'uvlvl': '100', 'vacatrunning': 'off', 'ventlvl': '100', 'zones': {'zone': [{'$': {'id': '1'}, 'clsp': '78.0', 'currentActivity': 'sleep', 'damperposition': '15', 'enabled': 'on', 'fan': 'off', 'hold': 'off', 'htsp': '58.0', 'name': 'tv room', 'otmr': None, 'rh': '38', 'rt': 69, 'zoneconditioning': 'idle'}, {'$': {'id': '2'}, 'clsp': '76.0', 'currentActivity': 'sleep', 'damperposition': '15', 'enabled': 'off', 'fan': 'off', 'hold': 'off', 'htsp': '68.0', 'name': 'Zone 2', 'otmr': None, 'rh': '38', 'rt': None, 'zoneconditioning': 'idle'}, {'$': {'id': '3'}, 'clsp': '76.0', 'currentActivity': 'sleep', 'damperposition': '15', 'enabled': 'off', 'fan': 'off', 'hold': 'off', 'htsp': '68.0', 'name': 'Zone 3', 'otmr': None, 'rh': '38', 'rt': None, 'zoneconditioning': 'idle'}, {'$': {'id': '4'}, 'clsp': '76.0', 'currentActivity': 'sleep', 'damperposition': '15', 'enabled': 'off', 'fan': 'off', 'hold': 'off', 'htsp': '68.0', 'name': 'Zone 4', 'otmr': None, 'rh': '38', 'rt': None, 'zoneconditioning': 'idle'}, {'$': {'id': '5'}, 'clsp': '76.0', 'currentActivity': 'sleep', 'damperposition': '15', 'enabled': 'off', 'fan': 'off', 'hold': 'off', 'htsp': '68.0', 'name': 'Zone 5', 'otmr': None, 'rh': '38', 'rt': None, 'zoneconditioning': 'idle'}, {'$': {'id': '6'}, 'clsp': '76.0', 'currentActivity': 'sleep', 'damperposition': '15', 'enabled': 'off', 'fan': 'off', 'hold': 'off', 'htsp': '68.0', 'name': 'Zone 6', 'otmr': None, 'rh': '38', 'rt': None, 'zoneconditioning': 'idle'}, {'$': {'id': '7'}, 'clsp': '76.0', 'currentActivity': 'sleep', 'damperposition': '15', 'enabled': 'off', 'fan': 'off', 'hold': 'off', 'htsp': '68.0', 'name': 'Zone 7', 'otmr': None, 'rh': '38', 'rt': None, 'zoneconditioning': 'idle'}, {'$': {'id': '8'}, 'clsp': '76.0', 'currentActivity': 'sleep', 'damperposition': '15', 'enabled': 'off', 'fan': 'off', 'hold': 'off', 'htsp': '68.0', 'name': 'Zone 8', 'otmr': None, 'rh': '38', 'rt': None, 'zoneconditioning': 'idle'}]}}}
FYI, Infinitude is still working and it can get data directly from the tstat in real time. No guarantee it will work much longer.
No need to use the cloud.
I think this will be a better solution in the long run. Updates on Carrier Home on iOS seem to be very quick. You might have other bottlenecks.
infinitude doesn't work on latest firmware from what i saw. issue in particular was energy usage and voltage.
btw what I really want to do is be able to communicate directly with the thermostat, the data from the website is infrequent and quite delayed
You are correct. I mapped my actual updates to the cloud server. The average is about 10 minutes but it varies a bit under that from time to time. 10 minutes is not a bad frequency for environmental data and energy use is usually close to the same when something is running. Depends on your equipment. My furnace and compressor both have multiple speeds. The blower is variable speed. I agree that the energy data is not accurate. It's not integrated with much precision from what I can tell. Setpoint changes should go right through to the furnace but it might not be reflected in the cloud data until there is an update. Better to put a CT on your furnace and A/C circuits in the service panel and use that. I also have that.
I am not familiar with your Hints to find they key and secret. I can login to Carrier's/Bryant's Site... Can you provide more hints?