ISY994i Plugin Ver 8.0

ISY994i Ver 8.0 12/1/2020

Builder Ver 3.0+

My ISY Firmware 5.0.15A

For Reference of Ver 7
Complete redo of parsing from script based to app based XML. Simplified many script parts to utilize Ver3.0 options. I recommend Making a backup of your setup. Then start by deleteing all devices and re-synchronize to make sure all devices are the latest version. The way Devices are named has been changed to prvent issues with Ver 3.0 HomeRemote so some of your labels and scripts may need to be updated to the new names. Some devices have added support for new ISY firmware and new HomeRemote options. Fixed Thermostat issues and added support for FanModes(Auto,On). Added Support for Motion Sensor II extra variables([“Status”, “BatteryPowered”, “BatteryLevel”, “Temperature”, “Luminance”]).

ISYRequest Device has the following abilities:

“lastPing”,“updateVariables”, “updatePrograms”, “updateDevices”, “updateWeather”, “customCommand”

lastPing value is the date and time of the last ping sent from your ISY. Should change about every 120 seconds.

For “updateVariables”, “updatePrograms”, “updateDevices”, “updateWeather” just need to call these by changing to any value. Just calling this in a trigger will request ISY to send all new updated info. Think of it like a refresh button. You should never need these as HomeRemote creates a subscription from the start so any changes should reflect in HomeRemote as they happen.


Program Folders have been added. I dont use them so I have not tested them. But they should work. If not please let me know.

Device Folders may show up as Unknown_FolderName. You can simply delete these or use them for reference in creating groups inside HomeRemote. If the option becomes avail to create groups from a plugin during synchronize I will update to make that happen. So all devices in your ISY folders would be auto added to Group folders in HomeRemote.

Any Device that I have not anticipated may show up as Unknown_Device name. You can still use these just they may not work with updates to values. If you find a lot of ISY Devices show up as these please let me know so I can look into it. This goes for Insteon Devices. I have no X10 or Zigbee Devices so I cant add support if they dont work with this plugin.

If there is an issue with synchronizing a Device it will show up as Error_DeviceName. This is usually an indication that the data sent from ISY had issues.

Dont Forget to Add your Encoded Username:Password, Username,Password and update Ip address and Port of your ISY. Programs,Weather, and Variables are disabled by default. Just type Yes into the options in the Isy994i Device settings. You have to add both Encoded combo and regular Username and Password. I went this route as I didnt want to send a request to the internet to encode them for you as I dont feel like that a good plugin design relying on Active internet and sending your info to a 3rd party to encode. These setting stay in the plugin only.

Ver 8.0 updates
Bill fixed a memory leak issue and converted it to the new plugin format. I have not updated my home UI to utilize any new changes with home remote so once I get some free time I will update this Plugin to reflect the newer changes in Home Remote. Also there have been several changes in the ISY firmware that I have not fully researched and will adjust as needed.
Also note I have not removed the weather functions from this yet. They are disabled by default just leave them that way since ISY no longer supports the weather plugin.

Isy994i-v8_0.plugin (54.7 KB)

1 Like

@Jimk72 I’m having an issue with variables. I have a label set to be visible if an ISY variable = 1. If the project is running and the variable changes from 0 to 1, the label will appear and all works well. However, if the variable is 1 and then I load the project, the label is not visible. If I change the variable to 0 and then to 1, the label will appear.

I added the line


in the onConnect function and it’s working.

@Jimk72 I found an issue today with Lights. The if statement at line 116 was preventing the the Level from updating. I essentially just removed that condition & now it works as expected. Attached is the file.

Isy994i-v8_1.plugin (54.4 KB)

@gregkinney I did not include your fix in that update I just posted. There’s already some code in there that should be calling that function on “firstrun”. It’ll probably be better to figure out why that code isn’t working.

You have to make sure you have variables enabled in the plug-in settings. And it has to be Yes or YES. Case sensitive. The option for a checkbox would be nice for plug-in settings if it hasn’t already been added.

I keep trying to set up time to update everything but this past 6 months have been crazy busy.

There are still some issues with this plugin that I have fixed in my version.

a) Temperature set points and readings are incorrect, at least for my Z-Wave thermostats for which I use Centrigrade readings. This is fixed by removing the /2 division in lines 237 & 240 and the *2 multiplier in lines 293 & 299. This could be due to hardware types or settings.

b) I have multiple Z-Wave devices which James does not use so I added the following sections inserted at line 990

                case "4.":
                    //All ZWave
                    //Added by CA to accommodate ZWave T'stat (4.8.x.x) and Motion Detector (4.7.x.x)
                    pluginDevice = new Device();
                    pluginDevice.Id = curadd;
                    pluginDevice.DisplayName = nodename;
                    if (nodetype.substring(0, 4) == "4.8.") {
                        pluginDevice.Icon = "Thermometer";
                        pluginDevice.DeviceType = "Thermostat";
                        pluginDevice.TileTemplate = "ThermostatTile.xaml";
                        pluginDevice.DetailsTemplate = "";
                        pluginDevice.Capabilities = ["TemperatureMeasurement", "ThermostatCoolingSetpoint", "ThermostatFanMode", "ThermostatHeatingSetpoint", "ThermostatMode", "RelativeHumidityMeasurement"];
                        pluginDevice.Attributes = ["Status"];
                    plugin.Devices[pluginDevice.Id] = pluginDevice;
                    if (nodetype.substring(0, 4) == "4.7.") {
                        pluginDevice.Icon = "Sensor";
                        pluginDevice.TileTemplate = "MotionSensorTile.xaml";
						pluginDevice.DetailsTemplate = "";
                        pluginDevice.DeviceType = "MotionSensor";
                        pluginDevice.Capabilities = ["MotionSensor"];
                        pluginDevice.Attributes = ["Status"];

As far as I can tell most Z-Wave and Zigbee devices are added into device range 4.x.x.x by the ISY controller. You can find the exact device number in the ISY admin console.

c) There is a problem with ISY variables registration. For example I use only integer variables in my schema, no state variables. If the plugin settings are set to Yes or YES the plugin will crash. I got around this by commenting out the very last section of the plugin that applies to state variables - Line 1215. It needs a bit of Javascript to check for what variables are in use.

Please note that all line references are based on Bill’s V8_1 of this plugin.

I hope this helps anyone who is confused by how the plugin works or can’t get it to work. It is a stellar and complex piece of programming by James so kudos to him for what is a lot of work.