Update Manager can be downloaded
here if you don't want to build the related projects.
The source code is included in the source tree for Lab of thing under Tools (homeos2\Hub\Tools\Update).
The projects required for this tool are in the following folders:
To build the projects: under Core solution, add a solution folder (Update) and then add those three projects to the folder. Once they are built, go to \Hub\Tools\Update\UpdateManager\bin\Debug to run UpdateManager.exe.
On the Set Up tab you can set up your working folder, and enter your login information for the FTP and blob storage. Once you’ve filled in all three fields, click Load to get the tool to authenticate into
the blob storage and the FTP server so it can download the information needed. This will take a while.
Your working folder should point to the output folder where your tested configurations and binaries are located. It must be the build output folder for your HomeOS solution, as Update Manager will compare the configurations and binaries on your test machine
against what’s in the cloud and repository.
Repository (FTP) Account
You will need to set up a secure FTP service to host your binaries (modules/scouts and platform). For security and privacy reasons only secure FTP is supported.
- Enter the ftp host uri using this format ftp://xyz.myserver.com (warning: no slash in the end)
- Then, enter the port, login and password
Azure Storage Account
Enter the storage account name and storage account key to where your configuration files are being written. They should be the same as the values for DataStoreAccountName and DataStoreAccountKey entries in Settings.xml.
Note: If the FTP account information is incorrect, the
Platform tabs will not appear. Similarly, incorrect Azure storage account information will cause the
Configs tab not to appear.
Once you have successfully loaded the information on the Set Up tab, Update Manager will display these items:
- HomeIds of the hubs that have been writing their configs to the storage account listed in the Set Up tab. These hubs can be filtered by selecting an Org ID and a Study ID from the dropdowns.
- The latest actual config fileswhich had been uploaded by the hub to the blob storage – it also makes a copy of these config files and stores them in a local desired folder if this folder is empty. This folder where you make changes to the config files
before uploading them.
- The diffs between the binaries (modules/scouts and Platform) you have locally in your working folder and what’s in your FTP repository.
Here’s how config update works using Update Manager:
Actual: Clicking the Actual button will launch the File Explorer to the latest actual config files retrieved by the tool. The config files in \config_cache\[orgid]\[studyid]\[homeid]\actual\ are for reference only, so you can see what the
latest are on the hub.
Note that these actuals may change on the hub; press the Refresh button at the bottom of the Configs tab to download actualconfig.zip from Azure storage.
Desired: Clicking on the Desired button will launch the File Explorer to bring up the desired local folder \config_cache\[orgid]\[studyid]\[homeid]\desired\local\. You can modify these config files before uploading them to the
Files in the Desired folder will not be overwritten when you hit Refresh (or Load in the Set Up tab) even if Update Manager finds new actuals in the blob storage and downloads these new actuals. If you want the files in desired local to be based on the most
up to date actuals, just delete all files in the desired local and then click the Refresh button. This will cause the tool to copy the latest actuals to the desired folder.
Update: Once you modify config file(s) in the desired local directory and click the Refresh button, you will see that Update Manager lists what has changed for each hub.
If the changes are good, select the hubs you want to update and click the
Update button. It will take a few seconds. To verify that you desired changes have made it to the blob storage, you can use the Azure
storage explorer tool to see if your desired config.zip files have been uploaded to the storage.
Note : In the config files, elements' attribute names and values are case sensitive. For example, if you want to specify the version of a scout, V has to be capitalized for the attribute name "Version".
<Scout Name="HomeOS.Hub.Scouts.WebCam" DllName="HomeOS.Hub.Scouts.WebCam.dll" Version="126.96.36.199" />
The Modules/Scouts tab is where you manage the binaries for modules and scouts. This tab shows the latest available versions of binaries in the repository next to your local versions (in the working directory).
Note: if you have a module or scout under your working directory (\output\binaries\), but it does not yet exist in the repository, it will show version as 0.0.0.0 in the
On FTP column.
To add (upload) a module/scout to the repository, click the Add button next to the module/scout entry you want to add.
Once you’ve clicked Yes to confirm adding the module/scout to the repository, wait for about 30 seconds and then hit the
Refresh button, which will list all the modules/scouts with their updated and latest versions.
If you log into your FTP site using a FTP client you will see a new folder containing the new version of your module in the repository.
To change the version of a module or scout:
If it’s running, shutdown Update Manager.
In Visual Studio open app.config under the project for the module or scout.
Update the value of HomeOSUpdateVersion.
Compile the module or scout.
Launch Update Manager again and load.
Click the Modules/Scouts tab to see the changes.
In Update Manager platform binaries are managed in the same way as modules and scouts. Update Manager displays the FTP and Local versions of the platform binaries. To update, click the
Update button. Once the update is done, hit Refresh to see the new version updated for the repository.
Note: You can only update the repository with a newer version that what’s currently there, otherwise Update Manager will not allow the update to proceed.
Changing the Platform’s version also requires you to modify the HomeOSUpdateVersion key in app.config in Platform project.
Note: When adding a new version of the Platform binaries, ALL hubs pointing to the repository will be updated to use the new binaries. This is unlike the behavior for configuration updates, which only affects hubs that are selected for update.
Troubleshooting Notes & Known Issues
• If the versions of modules and scouts are not specified in the config files, then the latest versions found in the repository will be downloaded and used. (When you upload to the repository using Update Manager, it will always put the latest
versions in /Latest directories for each binary).
• The FTP host must be specified in this format: ftp://yourserver.xyz (note: no slash in the end).
• If you see an exception about zip file not being valid, try cleaning the cache:
1. Shut down the tool.
2. Go to UpdateManager\bin\Debug\config_cache.
3. Delete everything in config_cache.
• Look at Log.txt during troubleshooting.
• User specific data (such as ftp uri, credentials and blob information) is stored in C:\Users\username \AppData\Local\Microsoft\.
• When you want to update a hub to remove a module or scout, you need to make sure that you also update rules.xml and services.xml so they don’t contain references to the modules or scouts you are trying to remove. Otherwise the hub will crash.
• If you are doing a lot of changes and testing, a tip for making sure the tool can always be reset with the latest bits from blob storage is to clean the cache (see #3) and reload/refresh. Also if you suspect a problem with the zip files in storage,
you can also go ahead and delete them. Your hubs will upload actuals periodically.