[SOLVED] Insteon PLM Venstar Thermostat Module / ISY994i

Platform information:

  • Hyper-v
  • Centos 7 x64
  • Java Runtime Environment: ZULU
  • openHAB version:2.5.0

How I go from these items to being able to control the thermostat. I was able to change the set points with a slider but am having trouble with changing from heat to cool and fan from auto to on.

My items are:
Number MainFloorThermostatVenstarTemp “Temperature” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_temp”}
Number MainFloorThermostatVenstarHumidity “Humidity” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_humidity”}
Number MainFloorThermostatVenstarCoolsetpoint “Cool setpoint” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_coolsetpoint”}
Number MainFloorThermostatVenstarHeatsetpoint “Heat setpoint” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_heatsetpoint”}
String MainFloorThermostatVenstarMode “Mode” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_mode”}
String MainFloorThermostatVenstarFan “Fan setting” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_fan”}
String MainFloorThermostatVenstarHeatcoolstate “Heat/cool state” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_heatcoolstate”}
Switch MainFloorThermostatVenstarCoolcontrol “Cool control” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_coolcontrol”}
Switch MainFloorThermostatVenstarHeatcontrol “Heat control” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_heatcontrol”}
Switch MainFloorThermostatVenstarFancontrol “Fan control” {channel=“isy:venstar_thermostat:c37b1df9:11_B4_29:venstar_fancontrol”}

Shawn,

I’m not clear on your setup, but I am using the ISY binding from the marketplace and it works well with my Insteon Venstar Thermostat. I’ve been able to run on OpenHAB 2.4, 2.5,2.5.1 and 2.5.2 using Docker. This has been a seamless integration for me and the binding works great although after upgrades to OpenHAB i may have to uninstall and reinstall the binding after a restart to insure all Things are “online”. Otherwise flawless.

For Fan Mode and Heat/Cool mode I am using dummy items and rules as shown below.

//This rule is required!  DO NOT DELETE!!
//This rule uses a Dummy trigger to send commands to thermostat for mode selection.

rule "React HEAT mode switch, send target states"
when
    Item vVenstarThermostat_ModeSetting received update
    
then
	 switch vVenstarThermostat_ModeSetting.state {
        case "0": {
            vVenstarThermostat_Mode.sendCommand("Off")
          
        }
        case "1": {
            vVenstarThermostat_Mode.sendCommand("Heat")
			
       }
        case "2": {
            vVenstarThermostat_Mode.sendCommand("Cool")
			
        }
        case "3": {
            vVenstarThermostat_Mode.sendCommand("Auto")
			
        }
        case "4": {
            vVenstarThermostat_Mode.sendCommand("Program_Auto")
			
        }
    }
end

//This rule is required!  DO NOT DELETE!!
//This rule uses a Dummy trigger to send commands to Fan for mode selection.
//Both the dummy trigger and command need to attached to the Venstar Fan Setting Thing
rule "React on FAN mode switch"
when
    Item vVenstarThermostat_FanSetting changed
    
then
	 switch vVenstarThermostat_FanSetting.state {
        case "0": {
            vVenstarThermostat_FanMode.sendCommand("ON")
            vVenstarThermostat_FanSetting.sendCommand("0")
        }
        case "1": {
            vVenstarThermostat_FanMode.sendCommand("AUTO")
            vVenstarThermostat_FanSetting.sendCommand("1")
        }
    }
end

Hope this helps.

Thank you for the response. I see the rules, is that all we do to change states. I guess for starters how would I change states from heat to cool. Sorry, just having trouble scraping my head around it. Usually once I get one thing working I am fine.

Sorry. I know that was a bit cryptic and incomplete, but I am actually traveling and using VPN to access my files. I’m not saying what I did is the only way or even the best way to get this all to work, but it does work and works very well for me. My first suggestion is that you install the ISY binding from the Marketplace. It will do an auto discovery of all the Insteon devices included as part your ISY994i and dump them as Things in your OpenHAB INBOX. You are still free create items using text files but link them to your channels using PaperUI. It makes life a lot easier. There may still be a few devices that you manually need to create but they are few.

It took me quit a bit of trial and error using WireShark and digging on the ISY forums and Google searches to get this all to work, but as I said it now works very well and integrates nicely with OpenHAB.

To answer your specific question you would need to issue the following
MainFloorThermostatVenstarMode.sendCommand(“2”)
which will switch to Cooling Mode. This would be through a Sitemap, HabPanel or a rule or combination thereof.

What I did was link 2 String items to “Fan Setting” channel (vVenstarThermostat_FanMode, vVenstarThermostat_FanSetting)and 2 String Items to “Mode” channel (vVenstarThermostat_ModeSetting, vVenstarThermostat_Mode). These channels will appear within the Venstar Thing. Then in my Sitemap, I included the following.

Switch item=vVenstarThermostat_ModeSetting mappings=[OFF="OFF", HEAT="HEAT", COOL="COOL", AUTO="AUTO", PROGRAM_AUTO="PROG"] label="Mode" valuecolor=["OFF"="gray", "HEAT"="red", "COOL"="blue", "AUTO"="aqua", "PROGRAM_AUTO"="green"] icon="settings" 
Switch item=vVenstarThermostat_FanSetting mappings=[ON="ON", AUTO="AUTO"] label="Fan"  valuecolor=["ON"="green", "AUTO"="blue"] icon="settings" 
        

Notice how the String Items have been Type Cast as Switches. This is a “must do” to be able to set the modes and trigger the rules. You will need to do something similar for HabPanel if you are using that UI.

I also created MAP Transform files for Fan Setting and Mode as follows. All of these transforms may not be required, but it works.

Fan Setting Transform.

0=ON
1=AUTO
Auto=AUTO
On=ON
ON=ON
AUTO=AUTO

Mode Transform

0=OFF
1=HEAT
2=COOL
3=AUTO
4=PROG
Off=OFF
Heat=HEAT
Cool=COOL
Auto=AUTO
AUTO=AUTO
PROGRAM_AUTO=PROG
Program_Auto=PROG
Prog Auto=PROG
PROG AUTO=PROG
OFF=OFF
ON=ON
Null=\
NULL=\
COOL=COOL
HEAT=HEAT
=\

I can’t remember why in one case I used rule trigger “received update” and in the other I used “Changed” but there was a reason so I just use it as it as is. Let me know if I can be of further help. I’m no expert with any of this, less than year using OpenHAB, but I have been able to cobble together a fully?/extensively rule based automated home using Insteon and ISY products as my core and other products bolted on as needed and it works without any significant issues.

Wow, thank you for the detail, I’ll let you know how it goes.

Well, thank you fro taking the time to help me while traveling. I was able to change the modes of the thermostat and fan successfully. So, great job on the explanation took me like 10 min to get it working.
So, how are you doing your set points in the sitemap? I added this to my sitemap but am not sure how to get the value to update when i click up or down.

Setpoint item=MainFloorThermostatVenstarCoolsetpoint icon="temperature" minValue=63 maxValue=90 step=1
Setpoint item=MainFloorThermostatVenstarHeatsetpoint icon="temperature" minValue=50 maxValue=80 step=1

Also, as far as issuing commands as you posted above.

MainFloorThermostatVenstarMode.sendCommand(“2”)

Is this done in a rule?
Sorry about the questions, thanks for the help!!!

Glad I was able to help get you pointed in the right direction. Once you break the code it is fairly easily to implement as you found. For completeness I’ve copied my entire HVAC Sitemap for you below.

Frame label="Comfort" {
    
 	    Switch item=vVenstarThermostat_ModeSetting mappings=[OFF="OFF", HEAT="HEAT", COOL="COOL", AUTO="AUTO", PROGRAM_AUTO="PROG"] label="Mode" valuecolor=["OFF"="gray", "HEAT"="red", "COOL"="blue", "AUTO"="aqua", "PROGRAM_AUTO"="green"] icon="settings" 
       	Switch item=vVenstarThermostat_FanSetting mappings=[ON="ON", AUTO="AUTO"] label="Fan"  valuecolor=["ON"="green", "AUTO"="blue"] icon="settings" 
        Text item=vVenstarThermostat_HeatCoolState label="Run Status[MAP(heatcoolrunstate.map):%s]" valuecolor=["HEAT"="red", "COOL"="blue"] icon="heating"
        Setpoint item=vVenstar_HeatSetPoint  label="Heat Setpoint [%.0f °F]" icon="heating" minValue=60 maxValue=80 step=1
        Setpoint item=vVenstar_CoolSetPoint label="A/C Setpoint [%.0f °F]" icon="snow" minValue=60 maxValue=80 step=1
        Text item=vVenstar_Thermostat label="Livingroom [%.0f °F]" icon="temperature_heat" visibility=[vVenstarThermostat_ModeSetting=="HEAT"]
    	Text item=vVenstar_Thermostat label="Livingroom [%.0f °F]" icon="temperature_cool" visibility=[vVenstarThermostat_ModeSetting=="COOL"]
    	Text item=vVenstar_Thermostat label="Livingroom [%.0f °F]" icon="temperature" visibility=[vVenstarThermostat_ModeSetting=="OFF",vVenstarThermostat_ModeSetting=="AUTO",vVenstarThermostat_ModeSetting=="PROGRAM_AUTO"]
    	Text item=vVenstar_Humidity label="Humidity[%.0f %%]" icon="humidity"
       }

I think your updating issue may be missing output/units, ie label ="[%.0f °F]" Also there is some lag between keypress and update so factor that in as well.

If you want to include the RunState as I have, then the you will need the following Transform MAP

heatcoolrunstate.map

COOL=COOLING
HEAT=HEATING
NULL=OFF
0=OFF
1=HEATING
2=COOLING
OFF=OFF
=\ 

Lastly, YES the command

MainFloorThermostatVenstarMode.sendCommand(“2”)

would go as part of a rule where “2” is mapped to “Cool”, but if you already have the Fan Setting and Mode Setting working, then you are set and nothing further is required and you re good to go.

So, in the following what does vVenstar_Thermostat refer to? I have items for everything but those

        Text item=vVenstar_Thermostat label="Livingroom [%.0f °F]" icon="temperature_heat" visibility=[vVenstarThermostat_ModeSetting=="HEAT"]
    	Text item=vVenstar_Thermostat label="Livingroom [%.0f °F]" icon="temperature_cool" visibility=[vVenstarThermostat_ModeSetting=="COOL"]
    	Text item=vVenstar_Thermostat label="Livingroom [%.0f °F]" icon="temperature" visibility=[vVenstarThermostat_ModeSetting=="OFF",vVenstarThermostat_ModeSetting=="AUTO",vVenstarThermostat_ModeSetting=="PROGRAM_AUTO"]

Also, the transform settings for the mode and fan are those in separate .map files?

I figured out my set point issue, missed a capital letter, just having refresh issues now.

The vVenstar_Thermostat is the current temp, MainFloorThermostatVenstarTemp in your case I believe. There are 3 entries because I’m trying to fancy with different icons. Because of visibility criteria only 1 line meeting the current criteria will be displayed, but they could be combined to single entry if u wanted to simplify. The transform maps are separate .map files. No easy way to combine them so they need to be separate.

Thank you, I just wanted to be sure. Things are coming together now, thanks for the help

Everything works great but, run status shows blank. I named the map file the same as the sitemap calls for. Is there something I am missing. I found out most of my problems refreshing were because I was looking at the sitemap in the browser, not the app which refreshes.

Runstatus should show OFF when the HVAC is idle, Cooling when AC and Heating when the furnace is running. Check to make sure you are pointing to the correct map file, spelling, punctuation, etc and the line syntax is correct.

Do you have the Runstatus item linked to the proper channel? It should work without issue if everything is properly linked and setup. It’s likely something minor that needs tweak. You should not have to, but did you try a restart of OpenHAB to ensure the maps and rules are loaded. Btw you picked one of the more difficult devices to start with so it should be all downhill from here.

Do the transform.map files need to be named something particular to work?

In my reading I did not have map transform installed. I saw it in the logs…

So did you get this resolved and working now, or are you still having some issues?

I got it working, with all your help of course. thank you again

do you know why I am getting this message in the logs
-2020-06-08 18:11:21.166 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘MainFloorThermostatVenstarHeatCoolState’ for widget org.eclipse.smarthome.model.sitemap.sitemap.Text

Not sure I can help much on this one other pointing out the obvious things. You might want to try to delete the item and the link to the Heat/Cool State and recreate both the item and the link. Are you using PaperUI to create the Item or a .items file? If you are using a file for your items, be sure that your item is properly typed as a string. In my case I am using a .items file and the HeatCool State is linked to this item

String vVenstarThermostat_HeatCoolState "Run Status [MAP(heatcoolrunstate.map):%s]" (gHVAC, Group_HabPanel_Dashboard)

Also the Map file I am using for this item is

COOL=COOLING
HEAT=HEATING
NULL=OFF
0=OFF
1=HEATING
2=COOLING
OFF=OFF

If it is displaying correctly even with the logged error, I wouldn’t worry too much about it. I get a ton of errors and warnings, especially at startup, but everything works just fine in mine case in spite of them.