Beta Release: 4.5 - Dual USB Controller Support

  • Last Post 27 November 2017
rscott posted this 19 August 2017

A month or so back I decided to build a version that would use a 2nd USB stick in my computer to send commands to non-secured devices. The intent with this version was to build a more responsive z-wave experience, as often-times slow polling devices would cause annoying delays when trying to turn a device on or off. In our experiment in our demo home, it has been working pretty nicely.

If you have a 2nd USB stick laying around, I'd be interested in hearing how your own experience with this is. Please let me know if you had z-wave related slowdowns previously and if this has helped. To use this, add a port to your "2nd z-wave controller" box in the tools/options menu. Do note that you'll need to go offline/online again anytime you change this port.


Order By: Standard | Newest | Votes
jonnysax posted this 21 August 2017

Thank Scott!  I'll try it.  

weidnerj posted this 22 August 2017


Tried it and had to roll back.  Only have one controller (verses two controllers) and found that it wasn't allowing devices to be turned on via console.  I would click on icon to turn light on and it woudn't come on (or go off).  If the light was turned on by zwave remotes, it would show a status.  Had a scene where motion turned on outside lights and the lights wouldn't come on.  Even removed and readded without any luck.  Uninstalled and rolled back to the previous version and it worked.  Play with cutting edge software, going to bleed a little...

rscott posted this 22 August 2017

@weidnerj - Did you have your secondary port set to something other than 0 (tools/options/zwave)?


weidnerj posted this 22 August 2017


I just installed over the top of the previous version and didn't change any settings. Will reinstall tonight and see if I can reproduce what I saw yesterday

weidnerj posted this 23 August 2017


Just tried it again, and it was set for 0 as the 2nd controller, the other controller is set for com 3.  Can lock and unlock the door, but can't turn on the light switches or outlets.  Virtual devices seem to work (icon changes on click).   The kicker is that the devices report their status ok, so if I have a light on, it shows it being on, but can't change the status.

weidnerj posted this 04 September 2017

Any new builds?

rscott posted this 06 September 2017

I'll post a new build toward the end of the week.

rscott posted this 08 September 2017

Here's release 4.5.6460. This one should fix the problem with the secondary controller set with "0" as the COM port still trying to send commands. It also includes the feature I mention in this YouTube video: 

weidnerj posted this 08 September 2017


That version works much better.  Now I can using the console can turn on and off devices and my virtual devices also work.

LeapFrog posted this 27 November 2017

Hi Ryan - Long time no talk to...

I've noticed the long delays on some devices and I just came across your dual-USB controller option.  I installed your September 8th release above with the following configuration:

Primary controller: Aeon Labs ZStick Gen 5

Secondary controller: Aeon Labs ZStick S2 with FW 3.08

The secondary controller didn't appear to handle any commands, and several of my devices either quit working or became intermittent (failed to respond to commands and threw up alerts). 

After removing the secondary controller and setting the COM port to 0 I still encountered erratic opertion of devices.  I tried to rollback to 4.1.6325 but get the "newer version is installed" error.  How do I force a rollback without a total uninstall / re-install?


Here's what I think is the pertinent part of the log file:


11/27/2017 10:53:22 AM: Original FolderC:\WINDOWS\system32


11/27/2017 10:53:22 AM: Changed to:C:\Program Files (x86)\Moonlit Software, LLC\InControl HA


11/27/2017 10:53:22 AM: Starting Service


11/27/2017 10:53:22 AM: Preparing service base


11/27/2017 10:53:22 AM: Original FolderC:\Program Files (x86)\Moonlit Software, LLC\InControl HA


11/27/2017 10:53:22 AM: Changed to:C:\Program Files (x86)\Moonlit Software, LLC\InControl HA


11/27/2017 10:53:23 AM: Config file location: C:\WINDOWS\system32\config\systemprofile\AppData\Roaming\Moonlit_Software,_LLC\MLS.ZWave.Service.exe_Url_3rrr3by1xi2j0yuef21xgz0sko14kpmk\4.5.6460.18861\user.config


11/27/2017 10:53:23 AM: Running service base


11/27/2017 10:53:24 AM: Starting version 4.5.6460.18860


ZenLib: True








11/27/2017 10:53:24 AM: Main Controller Test String: 


11/27/2017 10:53:24 AM: Pruned 0 history logs


11/27/2017 10:53:24 AM: Pruned 0 scene trigger logs


11/27/2017 10:53:24 AM: Cloud: Attempting to connect to cloud server over chanId: 6fbba...


11/27/2017 10:53:25 AM: socket: Opened!


11/27/2017 10:53:25 AM: Cloud: Cloud connected!


11/27/2017 10:53:25 AM: Plugin: Processing C:\Program Files (x86)\Moonlit Software, LLC\InControl HA\plugins\EnhancedSecurity.dll


11/27/2017 10:53:25 AM: Plugin: Processing C:\Program Files (x86)\Moonlit Software, LLC\InControl HA\plugins\FoscamController.dll


11/27/2017 10:53:25 AM: Loaded Controller Plugin HaFoscamController


11/27/2017 10:53:25 AM: Plugin: Processing C:\Program Files (x86)\Moonlit Software, LLC\InControl HA\plugins\VirtualHaController.dll


11/27/2017 10:53:25 AM: Loaded Controller Plugin VirtualHaController


11/27/2017 10:53:30 AM: DirectConnect: New client connected from


11/27/2017 10:53:32 AM: Checking version


11/27/2017 10:53:34 AM:  - System.NullReferenceException


Object reference not set to an instance of an object.


   at SecondaryZWaveController.ControllerZZWave.setLevel(Byte nodeId, Byte newLevel, QueuePriority priority) in C:\source\mls\MLS.ZWave.Controller\Plugins\SecondaryZWaveController\ControllerZZWave.cs:line 4736


   at SecondaryZWaveController.ControllerFacade.setLevel(Byte nodeId, Byte newLevel, QueuePriority priority) in C:\source\mls\MLS.ZWave.Controller\Plugins\SecondaryZWaveController\ControllerFacade.cs:line 87


   at SecondaryZWaveController.ControllerFacade.setLevel(Byte nodeId, Byte newLevel, QueuePriority priority)


   at SecondaryZWaveController.SecondaryController.setLevel(Byte nodeId, Byte newLevel, QueuePriority priority) in C:\source\mls\MLS.ZWave.Controller\Plugins\SecondaryZWaveController\SecondaryController.cs:line 236


   at MLS.HA.DeviceController.Common.HaControllerInterface.Controllers.HaZenZWaveController.setPower(Object providerDeviceId, Boolean powered) in C:\source\mls\MLS.ZWave.Controller\MLS.HA.DeviceController\Controllers\HaZenZWaveController.cs:line 1673


   at MLS.HA.DeviceController.Common.HaControllerInterface.DeviceManager.setPower(Guid deviceId, Boolean powered, DeviceChangeType changeType) in C:\source\mls\MLS.ZWave.Controller\MLS.HA.DeviceController\DeviceManager.cs:line 918


   at MLS.ZWave.WCFService.ZWaveSVC.setDevicePower(String password, Guid deviceId, Boolean powered) in C:\source\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\ZWaveSVC.cs:line 198


11/27/2017 10:53:48 AM: DirectConnect: Session closed


rscott posted this 27 November 2017

After you set it to COM 0, you'll need to go offline/online again to return to normal. Also, you need to replicate your network from your main USB stick to the secondary that you use otherwise it won't know where to send commands. The best way to do this would be to get your hands on the Zentools and use it to send the network to your secondary controller. 

If you want to rollback, you can go into your "Add/Remove programs" and uninstall the current version. Once done, you'll be able to install your prior version. 

LeapFrog posted this 27 November 2017

Thanks for the prompt response,  I did go offline / online after each change but still saw the inconsistent device behavior after removing the 2nd controller.

I was wondering how the 2nd controller knew the configuration of the network, duh.... I have Zentools install and I'll try replicating the network and let you know.

Also, I had forgotten that the program data was saved across the uninstall so that allays my concern about a rollback.


rscott posted this 27 November 2017

@LeapFrog - I forgot to ask, are you using version 4.5.6460? The original version had an issue where even after setting it to com 0, it wouldn't stop trying to use that secondary controller. The version mentioned fixes that problem.


Nevermind, I see mention of that version in your log dump.

LeapFrog posted this 27 November 2017

Yes, .6460 is the release I installed.

I seem to be getting into deeper do-do now - I tried replicating the network from the Gen5 controller using by using the "Transfer network to new controller" option in ICHA, then with Zensys Tools connected to the S2 controller I did a reset of the S2 followed by a "Learn".  ICHA said "network tranferred" but the Zensys Tools was still in learn mode.  I aborted the learn mode and now when I check it in Zensys Tools the Gen5 controller is shown as a secondary controller - which I assume means I can no longer use it to include new devices.  Subsequent attempts to replicate the Gen5 controller to the S2 controller using ICHA/Zensys produces the same result.

Do I need to reset the Gen5 controller to primary and if so, how do I do that (Googling didn't help much unfortunately).  Also, is there a better way to replicate the network across controllers? 


rscott posted this 27 November 2017

Interesting. Is your S2 showing up as the primary controller? 

You can use the Zentools "Shift" command to move your primary controller over to a new USB stick. I'm not sure if it's meant to be used to go from a secondary back to primary though, but you may give it a shot. 

You can run a second copy of Zentools to connect to both USB sticks at the same time, then use Zentools to transfer things around. 

To create a secondary USB stick, load up Zentools twice, connect to both USB sticks. On your master, click "add" to start inclusion mode. On your secondary, click the lightning bolt to put it into learn mode.  This will add a new node to your network representing your secondary controller. 

LeapFrog posted this 27 November 2017

Here's the rub - the S2 - which I intended to be the secondary controller - defaulted to primary when I reset it in Zentools.  It is empty - no node data.  

The controller "Shift" option is greyed out when the Gen5 (now secondary) controller is connected in Zentools.

So I'm still stuck - I need to change the secondary controller back to primary.

Correction: I just found that I could create a new primary controller using "Shift" after all - don't know why it was greyed out the first time.  So now I have the same network on both controllers but the Gen 5 is a secondary controller when I'd prefer for it to be the primary.  I'll mess around some more.

Success: After I replicated the Gen5 (secondary) controller to the S2 (now primary) I was able to use "Shift" again to reverse the process.  So now the Gen5 is SUC, RealPrimary. OtherNetwork and the S2 is Secondary, OtherNetwork.

I'll restart ICHA and see what happens now.

LeapFrog posted this 27 November 2017

Continuing... Re-enabled both the primary (Gen5) and secondary (S2) controllers on COM4 and COM7 respectively and did a restart of the service and application.  I don't see any sign in the logs of the secondary controller being used, but maybe that is normal?

Devices seem to respond more slowly that with the last stable release.  I tried to do a Heal Network and there were a number of devices that couldn't be healed due to timeouts and the error "Network heal did not complete!" is thrown.

Here's the log: (attached).

Well, I can't attach the log because logfile.txt, both return an error "extension not allowed".  Removing the extension (e.g, "logfile") results in "sorry, an error occured". 

I can put the log inline in my original post but if I subsequently try to edit the post I get an error "maximum 6000 characters" or some such.

Hopefully this is just a configuration setting in MVCForum so I can wait for you to change that and then I'll attach the log file.

LeapFrog posted this 27 November 2017

After looking at the JS on the page I changed the .txt extention to .jpg so it is now attached.

OR MAYBE NOT - I didn't get an error message but the attachment doesn't seem to be shown.


rscott posted this 27 November 2017

For now, try setting it as a gist ( and attaching a link to your reply.

LeapFrog posted this 27 November 2017


LeapFrog posted this 27 November 2017

Disabling the secondary controller and re-running the Network Heal doesn't change the results - network heal fails.  And now a few of the devices either don't respond at all or respond intermittently (e.g., you can turn a light on but an auto off after 4 seconds isn't honored.  No error is thrown and there is nothing in the log to indicate a problem.


LeapFrog posted this 27 November 2017

Since I need to move on to other work I've uninstalled the dual-controller version and returned to the last stable.  Network heal works fine as do the devices - albeit slowly for those devices that don't support association and/or need polling to determine their state.  I can live with this for now.  When you have an update of the dual-controller version ready to re-test just let me know; you've got my email address.