Once you have completed both the Honeywell and Amazon oauth flows and the skill is live for you, your Account Dashboard will show and buttons for backup and restore functionality, respectively.
Selecting will download a file called evocontrol.json to your PC/mac (in your browser's downloads folder). This is a text file containing a backup of your nicknames and customIcon (common for all locations), plus hidden, scenes, groups, sBlockZones and schedules on a per-idx basis. The data is encoded in the json format.
This file can be uploaded and restored as-is, but if you know what you are doing you can also edit it in a code-editor and upload a modified version.
That allows you great flexibility to keep multiple offline snapshots of your skill's state and upload one of them as live at will.
Note that the uploaded file is strictly checked for conformance to a rigid schema and will be rejected for even the tiniest of misconfigurations. That is done to protect your TCC account from becoming polluted with invalid data and also to protect you against bad actors.
Choosing will open a file-upload dialog to allow you to select a json file on your PC/mac.
There are 7 updateable components that can be present in this file: nicknames, customIcon, hidden, sBlockZones, scenes, groups and schedules.
If any section(s) is/are omitted, the current values in the skill's back-end are left untouched — otherwise they are replaced. Be careful as this means you can inadvertently delete data from the skill. If e.g. the scenes section in the skill currently has 9 defined scenes but the file you upload only has 6, you will lose 3 scenes from the current live state. Obviously, if you still 'have' them in a different backup file they can be restored again at another time, but it's worth knowing so you will expect the correct behaviour. Any scenes with the same name but modified content will replace the live versions with the new ones.
scenes will be rejected if they address non-existent zones or if their setpoint is out-of-range +5° .. +35°, δ 0.5° or if they specify a ∆ delta other that a floating point number with a single decimal in the range -6.0° .. +6.0°, expressed as a string. The maximum count of 12 must also be respected.
customIcon entries will be rejected if they address non-existent scenes or if the icon name is invalid.
hidden must be an object with correct zone names as keys and the integer 1 as value.
Specifying groups is similar — max. 12 and they can only contain valid zone names. Respect the '[' and ']' wrapping bracket notation or they will be rejected.
sBlockZones must exactly match the naming "Waking Up", "Lunch Time", "Dinner Time", "Going to Bed" and contain correct zone names. Respect the '[' and ']' wrapping bracket notation or they will be rejected.
schedules are specified using a concatenation of seconds-since-midnight-on-Sunday (SSM) and the setpoint, separated by an underscore. There are 86400 seconds in a day and 604,800 in a week. The valid range for the setpoint portion is +5° .. +35°, δ 0.5°. The schedules object can have ABC sub-entries — at a minimum the A is filled out as an example for you to copy/edit in the downloaded json. The parser will check that you don't have more than a max. of 6 entries per day and no more that 42 per week, per zone.
After restoring schedules to the skill, they are not yet live but are merely saved as an ABC preset. This gives you the opportunity to use the skill's visual editor to verify the SSM values in a normal weekday/time view so you can check for possible mistakes before making an entry live inside the skill.