Jump to content

MaddBomber83

Members
  • Posts

    347
  • Joined

  • Last visited

Everything posted by MaddBomber83

  1. As a note, this is something I've considered writing a proper wiki guide for, but the bulk of this becomes no longer necessary with the variable update (indicated for early next year in this thread). Please let me know if you run into an area that needs adjustment. So far I've found that the ISY (from a programming perspective) has a way to accomplish any situation I've put it through. Now to see adding more modules! (like energy readings from Z-Wave please!)
  2. Hey, just something to help you with that urgency.... No you can not read the state and such directly to a variable, and no you can not write the states and setpoints directly from a variable. BUT!!! It can still be done, and I do it. As background, I am building my HVAC control off of INSTEON/ISY. I have 4 controlled 'zones' in my house. Each room and a bunch of other places of temperature probes. It is still a work in progress (setting up the Dampers later this month), but I don't want you to think the programming is something you have to wait for the developer to get to. This is what I do now with ISY: [*:3kq31rsp]Read the temperature, humidity, cooling setpoint, heating setpoint and status of the wired insteon thermostat. [*:3kq31rsp]Write all these values to variables that I then do math on. [*:3kq31rsp]Transfer them back (as mode changes or heating/cooling SP changes). This 'loop' is best expressed in your desire for family members to be able to relatively set the temperature. The loop looks like this: If Status 'Thermostat- Main' is 61° (Cool Setpoint) Then $Thermostat_Setpoint_Cooling_Integer = 61 $Thermostat_Setpoint_Cooling_Integer Init To 61 $Thermostat_Setpoint_Cooling_State = 61 $Thermostat_Setpoint_Cooling_State Init To 61 You run that program for every degree and every variable in the Thermostat that you care about. My family cares about 60-80 degree F so I have 22 programs for each variable type that we care about (Heating SP, Cooling SP, Temperature). Anything outside of that band I'll set to 59 or 81. Our safety program takes action if anything is outside a value that we think is very wrong (disables other programs, sets things right, sends off emails and such). It has only ran once when I adjusted a program to keep increasing the temperature of the house... Now we know the temperatures, humidity, cooling / heating setpoints that we care about. Now we can do all the math that we want: [*:3kq31rsp]Are any of my rooms above the heating/cooling setpoint? If they are turn on the whole house fan. [*:3kq31rsp]What temperature am I going to use to control ducts off? (if the fan is running, I'll use suction supply temperature, if not the halway temperature under the suction, I may use the discharge line temperature as well. [*:3kq31rsp]If the room hits the low (heating) point, I will prevent it from getting colder if I am in cooling mode by shutting the dampener. [*:3kq31rsp]If the air conditioner is not occupied, lets see if I can use the whole house fan with or without outside air to warm the room. [*:3kq31rsp]If I can't (they are cold too) or it is taking to long (they have been trying for 10 minutes) or it is already 2 degree below the SP, then I turn on the heating. Air recirculation: [*:3kq31rsp]I keep the fan in ON for 10 minutes after any heating/cooling. [*:3kq31rsp]I then cycle the fan for 5 minutes every 30 minutes. [*:3kq31rsp]The fan will stay on if any of the rooms need it. [*:3kq31rsp]We have a program (and will add a physical button later) that we can hit to keep the fan running for an hour, and then resume its normal operation. Back to the example program: [*:3kq31rsp]We have layers to control things. [*:3kq31rsp]We already know what the Thermostat's Setpoint is. [*:3kq31rsp]Next we keep track of what the scheduled Setpoint should be ($SP_Cooling). [*:3kq31rsp]And we keep track of what the brains is going to change the actual Setpoint to ($Thermostat_Set_Cooling): If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then $SP_Cooling = $SP_Evening_Cooling_Temp $SP_Cooling Init To $SP_Cooling $Thermostat_Set_Cooling = $SP_Cooling $Thermostat_Set_Cooling Init To $SP_Cooling Enable Program 'New Cooling Time' Wait 2 seconds Run Program 'Set Cooling Update' (Then Path) Wait 1 minute Run Program 'New Cooling Time' (If) [*:3kq31rsp]($SP_Evening_Cooling_Temp is just a set value of 71. I use a variable here so I only have to change it in my variable list if we decide to adjust our evening cooling setpoint) [*:3kq31rsp]This program is ran on a schedule (adjusted by a timer) [*:3kq31rsp]You can ignore those Cooling Timers (I use them to adjust when I start cooling the house based on how long it takes to cool the house so it reaches a SP at a specific time, ish) [*:3kq31rsp]Long story short, we are ready to set the Thermostat's Cooling Setpoint based on a variable: If $Thermostat_Set_Cooling is 71 Then Set 'Thermostat- Main' 71° (Cool Setpoint) [*:3kq31rsp]And we control when we write the new variables by using an Integer and running an Update Set Point program when we actually want to change the temperature: If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Run Program 'Set Cooling 60' (If) Run Program 'Set Cooling 61' (If) Run Program 'Set Cooling 62' (If) Run Program 'Set Cooling 63' (If) Run Program 'Set Cooling 64' (If) Run Program 'Set Cooling 65' (If) Run Program 'Set Cooling 66' (If) Run Program 'Set Cooling 67' (If) Run Program 'Set Cooling 68' (If) Run Program 'Set Cooling 69' (If) Run Program 'Set Cooling 70' (If) Run Program 'Set Cooling 71' (If) Run Program 'Set Cooling 72' (If) Run Program 'Set Cooling 73' (If) Run Program 'Set Cooling 74' (If) Run Program 'Set Cooling 75' (If) Run Program 'Set Cooling 76' (If) Run Program 'Set Cooling 77' (If) Run Program 'Set Cooling 78' (If) Run Program 'Set Cooling 79' (If) Run Program 'Set Cooling 80' (If) [*:3kq31rsp]Ok, so I still have not gotten to the temporary house temperature changes in this 'loop'. But we have shown how to get the Thermostat Values into Variables. Manipulate those variables and then write them back into the Thermostat. Lets do real math on it now. [*:3kq31rsp]House feels warm even though it is not (dang wife). [*:3kq31rsp]She drops the house cooling setpoint that is on a schedule down a few degrees (either at the unit, or on her phone). [*:3kq31rsp]ISY recognizes this and fixes it, over time: If $SP_Cooling > $Thermostat_Setpoint_Cooling_State Then $Thermostat_Set_Cooling = $Thermostat_Setpoint_Cooling_State $Thermostat_Set_Cooling += 1 $Thermostat_Set_Cooling Init To $Thermostat_Set_Cooling Wait 1 hour Run Program 'Set Cooling Update' (Then Path) [*:3kq31rsp]So after an hour, it will walk the SP up a degree. Typically she hits it twice, so 2-3 hours later the SP is back on schedule. Conclusion: [*:3kq31rsp]This was a use scenario for you to look at. [*:3kq31rsp]There is a work around to get most of the info from the Thermostat, into variables, and to write variables, into the Thermostat. [*:3kq31rsp]You can now compare off the Setpoint on the Thermostat (to say, adjust dampeners at SP + 1 or keep a room at SP - 2. [*:3kq31rsp]In this way, everything outside of the schedule can be relative.
  3. Can you run me through the logic of using scenes by default over programs? While my device list is limited, I have followed the opposite logic without giving it much thought. Thank you.
  4. Do you mean variable as in integer/state variable? If so can you give 1 examble of the format please? I have tried every way I can think of. Also, what do you mean by "edited it to Enabled? Thanks, Tim We are only talking about in the notification email settings. Not in an actual program. When I say edited it to enable, in the notification program I hit add variable (the one with the name) and then just guessed that changing the name part to enabled would work.
  5. I figured there was a conversion somewhere. As for the return, yes mine has them just fine. It is likely lost in the cut/paste process from the forums. I actually created an excel sheet to do all the numbers, and then copied those rows directly into the notification email. The email I got was 1 line per program. For the forums I copied it from the program and into here.
  6. I should also add that FOLDERS are included in these numbers as well.
  7. 1) For the variable, I just added the Name variable and then edited it to Enabled. It was a shot in the dark. 2) This is correct, and the reason I stated above that you would have to find the right number. I'll give you a copy / paste for that. My program Heating Current SP 73 has an ID of 009D. The number for it is 157. Paste the following code into your notification customization body: 1) ${sys.program.1.name}: ${sys.program.1.enabled} 2) ${sys.program.2.name}: ${sys.program.2.enabled} 3) ${sys.program.3.name}: ${sys.program.3.enabled} 4) ${sys.program.4.name}: ${sys.program.4.enabled} 5) ${sys.program.5.name}: ${sys.program.5.enabled} 6) ${sys.program.6.name}: ${sys.program.6.enabled} 7) ${sys.program.7.name}: ${sys.program.7.enabled} ${sys.program.8.name}: ${sys.program.8.enabled} 9) ${sys.program.9.name}: ${sys.program.9.enabled} 10) ${sys.program.10.name}: ${sys.program.10.enabled} 11) ${sys.program.11.name}: ${sys.program.11.enabled} 12) ${sys.program.12.name}: ${sys.program.12.enabled} 13) ${sys.program.13.name}: ${sys.program.13.enabled} 14) ${sys.program.14.name}: ${sys.program.14.enabled} 15) ${sys.program.15.name}: ${sys.program.15.enabled} 16) ${sys.program.16.name}: ${sys.program.16.enabled} 17) ${sys.program.17.name}: ${sys.program.17.enabled} 18) ${sys.program.18.name}: ${sys.program.18.enabled} 19) ${sys.program.19.name}: ${sys.program.19.enabled} 20) ${sys.program.20.name}: ${sys.program.20.enabled} 21) ${sys.program.21.name}: ${sys.program.21.enabled} 22) ${sys.program.22.name}: ${sys.program.22.enabled} 23) ${sys.program.23.name}: ${sys.program.23.enabled} 24) ${sys.program.24.name}: ${sys.program.24.enabled} 25) ${sys.program.25.name}: ${sys.program.25.enabled} 26) ${sys.program.26.name}: ${sys.program.26.enabled} 27) ${sys.program.27.name}: ${sys.program.27.enabled} 28) ${sys.program.28.name}: ${sys.program.28.enabled} 29) ${sys.program.29.name}: ${sys.program.29.enabled} 30) ${sys.program.30.name}: ${sys.program.30.enabled} 31) ${sys.program.31.name}: ${sys.program.31.enabled} 32) ${sys.program.32.name}: ${sys.program.32.enabled} 33) ${sys.program.33.name}: ${sys.program.33.enabled} 34) ${sys.program.34.name}: ${sys.program.34.enabled} 35) ${sys.program.35.name}: ${sys.program.35.enabled} 36) ${sys.program.36.name}: ${sys.program.36.enabled} 37) ${sys.program.37.name}: ${sys.program.37.enabled} 38) ${sys.program.38.name}: ${sys.program.38.enabled} 39) ${sys.program.39.name}: ${sys.program.39.enabled} 40) ${sys.program.40.name}: ${sys.program.40.enabled} 41) ${sys.program.41.name}: ${sys.program.41.enabled} 42) ${sys.program.42.name}: ${sys.program.42.enabled} 43) ${sys.program.43.name}: ${sys.program.43.enabled} 44) ${sys.program.44.name}: ${sys.program.44.enabled} 45) ${sys.program.45.name}: ${sys.program.45.enabled} 46) ${sys.program.46.name}: ${sys.program.46.enabled} 47) ${sys.program.47.name}: ${sys.program.47.enabled} 48) ${sys.program.48.name}: ${sys.program.48.enabled} 49) ${sys.program.49.name}: ${sys.program.49.enabled} 50) ${sys.program.50.name}: ${sys.program.50.enabled} 51) ${sys.program.51.name}: ${sys.program.51.enabled} 52) ${sys.program.52.name}: ${sys.program.52.enabled} 53) ${sys.program.53.name}: ${sys.program.53.enabled} 54) ${sys.program.54.name}: ${sys.program.54.enabled} 55) ${sys.program.55.name}: ${sys.program.55.enabled} 56) ${sys.program.56.name}: ${sys.program.56.enabled} 57) ${sys.program.57.name}: ${sys.program.57.enabled} 58) ${sys.program.58.name}: ${sys.program.58.enabled} 59) ${sys.program.59.name}: ${sys.program.59.enabled} 60) ${sys.program.60.name}: ${sys.program.60.enabled} 61) ${sys.program.61.name}: ${sys.program.61.enabled} 62) ${sys.program.62.name}: ${sys.program.62.enabled} 63) ${sys.program.63.name}: ${sys.program.63.enabled} 64) ${sys.program.64.name}: ${sys.program.64.enabled} 65) ${sys.program.65.name}: ${sys.program.65.enabled} 66) ${sys.program.66.name}: ${sys.program.66.enabled} 67) ${sys.program.67.name}: ${sys.program.67.enabled} 68) ${sys.program.68.name}: ${sys.program.68.enabled} 69) ${sys.program.69.name}: ${sys.program.69.enabled} 70) ${sys.program.70.name}: ${sys.program.70.enabled} 71) ${sys.program.71.name}: ${sys.program.71.enabled} 72) ${sys.program.72.name}: ${sys.program.72.enabled} 73) ${sys.program.73.name}: ${sys.program.73.enabled} 74) ${sys.program.74.name}: ${sys.program.74.enabled} 75) ${sys.program.75.name}: ${sys.program.75.enabled} 76) ${sys.program.76.name}: ${sys.program.76.enabled} 77) ${sys.program.77.name}: ${sys.program.77.enabled} 78) ${sys.program.78.name}: ${sys.program.78.enabled} 79) ${sys.program.79.name}: ${sys.program.79.enabled} 80) ${sys.program.80.name}: ${sys.program.80.enabled} 81) ${sys.program.81.name}: ${sys.program.81.enabled} 82) ${sys.program.82.name}: ${sys.program.82.enabled} 83) ${sys.program.83.name}: ${sys.program.83.enabled} 84) ${sys.program.84.name}: ${sys.program.84.enabled} 85) ${sys.program.85.name}: ${sys.program.85.enabled} 86) ${sys.program.86.name}: ${sys.program.86.enabled} 87) ${sys.program.87.name}: ${sys.program.87.enabled} 88) ${sys.program.88.name}: ${sys.program.88.enabled} 89) ${sys.program.89.name}: ${sys.program.89.enabled} 90) ${sys.program.90.name}: ${sys.program.90.enabled} 91) ${sys.program.91.name}: ${sys.program.91.enabled} 92) ${sys.program.92.name}: ${sys.program.92.enabled} 93) ${sys.program.93.name}: ${sys.program.93.enabled} 94) ${sys.program.94.name}: ${sys.program.94.enabled} 95) ${sys.program.95.name}: ${sys.program.95.enabled} 96) ${sys.program.96.name}: ${sys.program.96.enabled} 97) ${sys.program.97.name}: ${sys.program.97.enabled} 98) ${sys.program.98.name}: ${sys.program.98.enabled} 99) ${sys.program.99.name}: ${sys.program.99.enabled} 100) ${sys.program.100.name}: ${sys.program.100.enabled} 101) ${sys.program.101.name}: ${sys.program.101.enabled} 102) ${sys.program.102.name}: ${sys.program.102.enabled} 103) ${sys.program.103.name}: ${sys.program.103.enabled} 104) ${sys.program.104.name}: ${sys.program.104.enabled} 105) ${sys.program.105.name}: ${sys.program.105.enabled} 106) ${sys.program.106.name}: ${sys.program.106.enabled} 107) ${sys.program.107.name}: ${sys.program.107.enabled} 108) ${sys.program.108.name}: ${sys.program.108.enabled} 109) ${sys.program.109.name}: ${sys.program.109.enabled} 110) ${sys.program.110.name}: ${sys.program.110.enabled} 111) ${sys.program.111.name}: ${sys.program.111.enabled} 112) ${sys.program.112.name}: ${sys.program.112.enabled} 113) ${sys.program.113.name}: ${sys.program.113.enabled} 114) ${sys.program.114.name}: ${sys.program.114.enabled} 115) ${sys.program.115.name}: ${sys.program.115.enabled} 116) ${sys.program.116.name}: ${sys.program.116.enabled} 117) ${sys.program.117.name}: ${sys.program.117.enabled} 118) ${sys.program.118.name}: ${sys.program.118.enabled} 119) ${sys.program.119.name}: ${sys.program.119.enabled} 120) ${sys.program.120.name}: ${sys.program.120.enabled} 121) ${sys.program.121.name}: ${sys.program.121.enabled} 122) ${sys.program.122.name}: ${sys.program.122.enabled} 123) ${sys.program.123.name}: ${sys.program.123.enabled} 124) ${sys.program.124.name}: ${sys.program.124.enabled} 125) ${sys.program.125.name}: ${sys.program.125.enabled} 126) ${sys.program.126.name}: ${sys.program.126.enabled} 127) ${sys.program.127.name}: ${sys.program.127.enabled} 128) ${sys.program.128.name}: ${sys.program.128.enabled} 129) ${sys.program.129.name}: ${sys.program.129.enabled} 130) ${sys.program.130.name}: ${sys.program.130.enabled} 131) ${sys.program.131.name}: ${sys.program.131.enabled} 132) ${sys.program.132.name}: ${sys.program.132.enabled} 133) ${sys.program.133.name}: ${sys.program.133.enabled} 134) ${sys.program.134.name}: ${sys.program.134.enabled} 135) ${sys.program.135.name}: ${sys.program.135.enabled} 136) ${sys.program.136.name}: ${sys.program.136.enabled} 137) ${sys.program.137.name}: ${sys.program.137.enabled} 138) ${sys.program.138.name}: ${sys.program.138.enabled} 139) ${sys.program.139.name}: ${sys.program.139.enabled} 140) ${sys.program.140.name}: ${sys.program.140.enabled} 141) ${sys.program.141.name}: ${sys.program.141.enabled} 142) ${sys.program.142.name}: ${sys.program.142.enabled} 143) ${sys.program.143.name}: ${sys.program.143.enabled} 144) ${sys.program.144.name}: ${sys.program.144.enabled} 145) ${sys.program.145.name}: ${sys.program.145.enabled} 146) ${sys.program.146.name}: ${sys.program.146.enabled} 147) ${sys.program.147.name}: ${sys.program.147.enabled} 148) ${sys.program.148.name}: ${sys.program.148.enabled} 149) ${sys.program.149.name}: ${sys.program.149.enabled} 150) ${sys.program.150.name}: ${sys.program.150.enabled} 151) ${sys.program.151.name}: ${sys.program.151.enabled} 152) ${sys.program.152.name}: ${sys.program.152.enabled} 153) ${sys.program.153.name}: ${sys.program.153.enabled} 154) ${sys.program.154.name}: ${sys.program.154.enabled} 155) ${sys.program.155.name}: ${sys.program.155.enabled} 156) ${sys.program.156.name}: ${sys.program.156.enabled} 157) ${sys.program.157.name}: ${sys.program.157.enabled} 158) ${sys.program.158.name}: ${sys.program.158.enabled} 159) ${sys.program.159.name}: ${sys.program.159.enabled} 160) ${sys.program.160.name}: ${sys.program.160.enabled} 161) ${sys.program.161.name}: ${sys.program.161.enabled} 162) ${sys.program.162.name}: ${sys.program.162.enabled} 163) ${sys.program.163.name}: ${sys.program.163.enabled} 164) ${sys.program.164.name}: ${sys.program.164.enabled} 165) ${sys.program.165.name}: ${sys.program.165.enabled} 166) ${sys.program.166.name}: ${sys.program.166.enabled} 167) ${sys.program.167.name}: ${sys.program.167.enabled} 168) ${sys.program.168.name}: ${sys.program.168.enabled} 169) ${sys.program.169.name}: ${sys.program.169.enabled} 170) ${sys.program.170.name}: ${sys.program.170.enabled} 171) ${sys.program.171.name}: ${sys.program.171.enabled} 172) ${sys.program.172.name}: ${sys.program.172.enabled} 173) ${sys.program.173.name}: ${sys.program.173.enabled} 174) ${sys.program.174.name}: ${sys.program.174.enabled} 175) ${sys.program.175.name}: ${sys.program.175.enabled} 176) ${sys.program.176.name}: ${sys.program.176.enabled} 177) ${sys.program.177.name}: ${sys.program.177.enabled} 178) ${sys.program.178.name}: ${sys.program.178.enabled} 179) ${sys.program.179.name}: ${sys.program.179.enabled} 180) ${sys.program.180.name}: ${sys.program.180.enabled} 181) ${sys.program.181.name}: ${sys.program.181.enabled} 182) ${sys.program.182.name}: ${sys.program.182.enabled} 183) ${sys.program.183.name}: ${sys.program.183.enabled} 184) ${sys.program.184.name}: ${sys.program.184.enabled} 185) ${sys.program.185.name}: ${sys.program.185.enabled} 186) ${sys.program.186.name}: ${sys.program.186.enabled} 187) ${sys.program.187.name}: ${sys.program.187.enabled} 188) ${sys.program.188.name}: ${sys.program.188.enabled} 189) ${sys.program.189.name}: ${sys.program.189.enabled} 190) ${sys.program.190.name}: ${sys.program.190.enabled} 191) ${sys.program.191.name}: ${sys.program.191.enabled} 192) ${sys.program.192.name}: ${sys.program.192.enabled} 193) ${sys.program.193.name}: ${sys.program.193.enabled} 194) ${sys.program.194.name}: ${sys.program.194.enabled} 195) ${sys.program.195.name}: ${sys.program.195.enabled} 196) ${sys.program.196.name}: ${sys.program.196.enabled} 197) ${sys.program.197.name}: ${sys.program.197.enabled} 198) ${sys.program.198.name}: ${sys.program.198.enabled} 199) ${sys.program.199.name}: ${sys.program.199.enabled} 200) ${sys.program.200.name}: ${sys.program.200.enabled} 201) ${sys.program.201.name}: ${sys.program.201.enabled} 202) ${sys.program.202.name}: ${sys.program.202.enabled} 203) ${sys.program.203.name}: ${sys.program.203.enabled} 204) ${sys.program.204.name}: ${sys.program.204.enabled} 205) ${sys.program.205.name}: ${sys.program.205.enabled} 206) ${sys.program.206.name}: ${sys.program.206.enabled} 207) ${sys.program.207.name}: ${sys.program.207.enabled} 208) ${sys.program.208.name}: ${sys.program.208.enabled} 209) ${sys.program.209.name}: ${sys.program.209.enabled} 210) ${sys.program.210.name}: ${sys.program.210.enabled} 211) ${sys.program.211.name}: ${sys.program.211.enabled} 212) ${sys.program.212.name}: ${sys.program.212.enabled} 213) ${sys.program.213.name}: ${sys.program.213.enabled} 214) ${sys.program.214.name}: ${sys.program.214.enabled} 215) ${sys.program.215.name}: ${sys.program.215.enabled} 216) ${sys.program.216.name}: ${sys.program.216.enabled} 217) ${sys.program.217.name}: ${sys.program.217.enabled} 218) ${sys.program.218.name}: ${sys.program.218.enabled} 219) ${sys.program.219.name}: ${sys.program.219.enabled} 220) ${sys.program.220.name}: ${sys.program.220.enabled} 221) ${sys.program.221.name}: ${sys.program.221.enabled} 222) ${sys.program.222.name}: ${sys.program.222.enabled} 223) ${sys.program.223.name}: ${sys.program.223.enabled} 224) ${sys.program.224.name}: ${sys.program.224.enabled} 225) ${sys.program.225.name}: ${sys.program.225.enabled} 226) ${sys.program.226.name}: ${sys.program.226.enabled} 227) ${sys.program.227.name}: ${sys.program.227.enabled} 228) ${sys.program.228.name}: ${sys.program.228.enabled} 229) ${sys.program.229.name}: ${sys.program.229.enabled} 230) ${sys.program.230.name}: ${sys.program.230.enabled} 231) ${sys.program.231.name}: ${sys.program.231.enabled} 232) ${sys.program.232.name}: ${sys.program.232.enabled} 233) ${sys.program.233.name}: ${sys.program.233.enabled} 234) ${sys.program.234.name}: ${sys.program.234.enabled} 235) ${sys.program.235.name}: ${sys.program.235.enabled} 236) ${sys.program.236.name}: ${sys.program.236.enabled} 237) ${sys.program.237.name}: ${sys.program.237.enabled} 238) ${sys.program.238.name}: ${sys.program.238.enabled} 239) ${sys.program.239.name}: ${sys.program.239.enabled} 240) ${sys.program.240.name}: ${sys.program.240.enabled} 241) ${sys.program.241.name}: ${sys.program.241.enabled} 242) ${sys.program.242.name}: ${sys.program.242.enabled} 243) ${sys.program.243.name}: ${sys.program.243.enabled} 244) ${sys.program.244.name}: ${sys.program.244.enabled} 245) ${sys.program.245.name}: ${sys.program.245.enabled} 246) ${sys.program.246.name}: ${sys.program.246.enabled} 247) ${sys.program.247.name}: ${sys.program.247.enabled} 248) ${sys.program.248.name}: ${sys.program.248.enabled} 249) ${sys.program.249.name}: ${sys.program.249.enabled} 250) ${sys.program.250.name}: ${sys.program.250.enabled} 251) ${sys.program.251.name}: ${sys.program.251.enabled} 252) ${sys.program.252.name}: ${sys.program.252.enabled} 253) ${sys.program.253.name}: ${sys.program.253.enabled} 254) ${sys.program.254.name}: ${sys.program.254.enabled} 255) ${sys.program.255.name}: ${sys.program.255.enabled} 256) ${sys.program.256.name}: ${sys.program.256.enabled} 257) ${sys.program.257.name}: ${sys.program.257.enabled} 258) ${sys.program.258.name}: ${sys.program.258.enabled} 259) ${sys.program.259.name}: ${sys.program.259.enabled} 260) ${sys.program.260.name}: ${sys.program.260.enabled} 261) ${sys.program.261.name}: ${sys.program.261.enabled} 262) ${sys.program.262.name}: ${sys.program.262.enabled} 263) ${sys.program.263.name}: ${sys.program.263.enabled} 264) ${sys.program.264.name}: ${sys.program.264.enabled} 265) ${sys.program.265.name}: ${sys.program.265.enabled} 266) ${sys.program.266.name}: ${sys.program.266.enabled} 267) ${sys.program.267.name}: ${sys.program.267.enabled} 268) ${sys.program.268.name}: ${sys.program.268.enabled} 269) ${sys.program.269.name}: ${sys.program.269.enabled} 270) ${sys.program.270.name}: ${sys.program.270.enabled} 271) ${sys.program.271.name}: ${sys.program.271.enabled} 272) ${sys.program.272.name}: ${sys.program.272.enabled} 273) ${sys.program.273.name}: ${sys.program.273.enabled} 274) ${sys.program.274.name}: ${sys.program.274.enabled} 275) ${sys.program.275.name}: ${sys.program.275.enabled} 276) ${sys.program.276.name}: ${sys.program.276.enabled} 277) ${sys.program.277.name}: ${sys.program.277.enabled} 278) ${sys.program.278.name}: ${sys.program.278.enabled} 279) ${sys.program.279.name}: ${sys.program.279.enabled} 280) ${sys.program.280.name}: ${sys.program.280.enabled} 281) ${sys.program.281.name}: ${sys.program.281.enabled} 282) ${sys.program.282.name}: ${sys.program.282.enabled} 283) ${sys.program.283.name}: ${sys.program.283.enabled} 284) ${sys.program.284.name}: ${sys.program.284.enabled} 285) ${sys.program.285.name}: ${sys.program.285.enabled} 286) ${sys.program.286.name}: ${sys.program.286.enabled} 287) ${sys.program.287.name}: ${sys.program.287.enabled} 288) ${sys.program.288.name}: ${sys.program.288.enabled} 289) ${sys.program.289.name}: ${sys.program.289.enabled} 290) ${sys.program.290.name}: ${sys.program.290.enabled} 291) ${sys.program.291.name}: ${sys.program.291.enabled} 292) ${sys.program.292.name}: ${sys.program.292.enabled} 293) ${sys.program.293.name}: ${sys.program.293.enabled} 294) ${sys.program.294.name}: ${sys.program.294.enabled} 295) ${sys.program.295.name}: ${sys.program.295.enabled} 296) ${sys.program.296.name}: ${sys.program.296.enabled} 297) ${sys.program.297.name}: ${sys.program.297.enabled} 298) ${sys.program.298.name}: ${sys.program.298.enabled} 299) ${sys.program.299.name}: ${sys.program.299.enabled} 300) ${sys.program.300.name}: ${sys.program.300.enabled} 301) ${sys.program.301.name}: ${sys.program.301.enabled} 302) ${sys.program.302.name}: ${sys.program.302.enabled} 303) ${sys.program.303.name}: ${sys.program.303.enabled} 304) ${sys.program.304.name}: ${sys.program.304.enabled} 305) ${sys.program.305.name}: ${sys.program.305.enabled} 306) ${sys.program.306.name}: ${sys.program.306.enabled} 307) ${sys.program.307.name}: ${sys.program.307.enabled} 308) ${sys.program.308.name}: ${sys.program.308.enabled} 309) ${sys.program.309.name}: ${sys.program.309.enabled} 310) ${sys.program.310.name}: ${sys.program.310.enabled} 311) ${sys.program.311.name}: ${sys.program.311.enabled} 312) ${sys.program.312.name}: ${sys.program.312.enabled} 313) ${sys.program.313.name}: ${sys.program.313.enabled} 314) ${sys.program.314.name}: ${sys.program.314.enabled} 315) ${sys.program.315.name}: ${sys.program.315.enabled} 316) ${sys.program.316.name}: ${sys.program.316.enabled} 317) ${sys.program.317.name}: ${sys.program.317.enabled} 318) ${sys.program.318.name}: ${sys.program.318.enabled} 319) ${sys.program.319.name}: ${sys.program.319.enabled} 320) ${sys.program.320.name}: ${sys.program.320.enabled} 321) ${sys.program.321.name}: ${sys.program.321.enabled} 322) ${sys.program.322.name}: ${sys.program.322.enabled} 323) ${sys.program.323.name}: ${sys.program.323.enabled} 324) ${sys.program.324.name}: ${sys.program.324.enabled} 325) ${sys.program.325.name}: ${sys.program.325.enabled} 326) ${sys.program.326.name}: ${sys.program.326.enabled} 327) ${sys.program.327.name}: ${sys.program.327.enabled} 328) ${sys.program.328.name}: ${sys.program.328.enabled} 329) ${sys.program.329.name}: ${sys.program.329.enabled} 330) ${sys.program.330.name}: ${sys.program.330.enabled} 331) ${sys.program.331.name}: ${sys.program.331.enabled} 332) ${sys.program.332.name}: ${sys.program.332.enabled} 333) ${sys.program.333.name}: ${sys.program.333.enabled} 334) ${sys.program.334.name}: ${sys.program.334.enabled} 335) ${sys.program.335.name}: ${sys.program.335.enabled} 336) ${sys.program.336.name}: ${sys.program.336.enabled} 337) ${sys.program.337.name}: ${sys.program.337.enabled} 338) ${sys.program.338.name}: ${sys.program.338.enabled} 339) ${sys.program.339.name}: ${sys.program.339.enabled} 340) ${sys.program.340.name}: ${sys.program.340.enabled} 341) ${sys.program.341.name}: ${sys.program.341.enabled} 342) ${sys.program.342.name}: ${sys.program.342.enabled} 343) ${sys.program.343.name}: ${sys.program.343.enabled} 344) ${sys.program.344.name}: ${sys.program.344.enabled} 345) ${sys.program.345.name}: ${sys.program.345.enabled} 346) ${sys.program.346.name}: ${sys.program.346.enabled} 347) ${sys.program.347.name}: ${sys.program.347.enabled} 348) ${sys.program.348.name}: ${sys.program.348.enabled} 349) ${sys.program.349.name}: ${sys.program.349.enabled} 350) ${sys.program.350.name}: ${sys.program.350.enabled} 351) ${sys.program.351.name}: ${sys.program.351.enabled} 352) ${sys.program.352.name}: ${sys.program.352.enabled} 353) ${sys.program.353.name}: ${sys.program.353.enabled} 354) ${sys.program.354.name}: ${sys.program.354.enabled} 355) ${sys.program.355.name}: ${sys.program.355.enabled} 356) ${sys.program.356.name}: ${sys.program.356.enabled} 357) ${sys.program.357.name}: ${sys.program.357.enabled} 358) ${sys.program.358.name}: ${sys.program.358.enabled} 359) ${sys.program.359.name}: ${sys.program.359.enabled} 360) ${sys.program.360.name}: ${sys.program.360.enabled} 361) ${sys.program.361.name}: ${sys.program.361.enabled} 362) ${sys.program.362.name}: ${sys.program.362.enabled} 363) ${sys.program.363.name}: ${sys.program.363.enabled} 364) ${sys.program.364.name}: ${sys.program.364.enabled} 365) ${sys.program.365.name}: ${sys.program.365.enabled} 366) ${sys.program.366.name}: ${sys.program.366.enabled} 367) ${sys.program.367.name}: ${sys.program.367.enabled} 368) ${sys.program.368.name}: ${sys.program.368.enabled} 369) ${sys.program.369.name}: ${sys.program.369.enabled} 370) ${sys.program.370.name}: ${sys.program.370.enabled} 371) ${sys.program.371.name}: ${sys.program.371.enabled} 372) ${sys.program.372.name}: ${sys.program.372.enabled} 373) ${sys.program.373.name}: ${sys.program.373.enabled} 374) ${sys.program.374.name}: ${sys.program.374.enabled} 375) ${sys.program.375.name}: ${sys.program.375.enabled} 376) ${sys.program.376.name}: ${sys.program.376.enabled} 377) ${sys.program.377.name}: ${sys.program.377.enabled} 378) ${sys.program.378.name}: ${sys.program.378.enabled} 379) ${sys.program.379.name}: ${sys.program.379.enabled} 380) ${sys.program.380.name}: ${sys.program.380.enabled} 381) ${sys.program.381.name}: ${sys.program.381.enabled} 382) ${sys.program.382.name}: ${sys.program.382.enabled} 383) ${sys.program.383.name}: ${sys.program.383.enabled} 384) ${sys.program.384.name}: ${sys.program.384.enabled} 385) ${sys.program.385.name}: ${sys.program.385.enabled} 386) ${sys.program.386.name}: ${sys.program.386.enabled} 387) ${sys.program.387.name}: ${sys.program.387.enabled} 388) ${sys.program.388.name}: ${sys.program.388.enabled} 389) ${sys.program.389.name}: ${sys.program.389.enabled} 390) ${sys.program.390.name}: ${sys.program.390.enabled} 391) ${sys.program.391.name}: ${sys.program.391.enabled} 392) ${sys.program.392.name}: ${sys.program.392.enabled} 393) ${sys.program.393.name}: ${sys.program.393.enabled} 394) ${sys.program.394.name}: ${sys.program.394.enabled} 395) ${sys.program.395.name}: ${sys.program.395.enabled} 396) ${sys.program.396.name}: ${sys.program.396.enabled} 397) ${sys.program.397.name}: ${sys.program.397.enabled} 398) ${sys.program.398.name}: ${sys.program.398.enabled} 399) ${sys.program.399.name}: ${sys.program.399.enabled} 400) ${sys.program.400.name}: ${sys.program.400.enabled} 401) ${sys.program.401.name}: ${sys.program.401.enabled} 402) ${sys.program.402.name}: ${sys.program.402.enabled} 403) ${sys.program.403.name}: ${sys.program.403.enabled} 404) ${sys.program.404.name}: ${sys.program.404.enabled} 405) ${sys.program.405.name}: ${sys.program.405.enabled} 406) ${sys.program.406.name}: ${sys.program.406.enabled} 407) ${sys.program.407.name}: ${sys.program.407.enabled} 408) ${sys.program.408.name}: ${sys.program.408.enabled} 409) ${sys.program.409.name}: ${sys.program.409.enabled} 410) ${sys.program.410.name}: ${sys.program.410.enabled} 411) ${sys.program.411.name}: ${sys.program.411.enabled} 412) ${sys.program.412.name}: ${sys.program.412.enabled} 413) ${sys.program.413.name}: ${sys.program.413.enabled} 414) ${sys.program.414.name}: ${sys.program.414.enabled} 415) ${sys.program.415.name}: ${sys.program.415.enabled} 416) ${sys.program.416.name}: ${sys.program.416.enabled} 417) ${sys.program.417.name}: ${sys.program.417.enabled} 418) ${sys.program.418.name}: ${sys.program.418.enabled} 419) ${sys.program.419.name}: ${sys.program.419.enabled} 420) ${sys.program.420.name}: ${sys.program.420.enabled} 421) ${sys.program.421.name}: ${sys.program.421.enabled} 422) ${sys.program.422.name}: ${sys.program.422.enabled} 423) ${sys.program.423.name}: ${sys.program.423.enabled} 424) ${sys.program.424.name}: ${sys.program.424.enabled} 425) ${sys.program.425.name}: ${sys.program.425.enabled} 426) ${sys.program.426.name}: ${sys.program.426.enabled} 427) ${sys.program.427.name}: ${sys.program.427.enabled} 428) ${sys.program.428.name}: ${sys.program.428.enabled} 429) ${sys.program.429.name}: ${sys.program.429.enabled} 430) ${sys.program.430.name}: ${sys.program.430.enabled} 431) ${sys.program.431.name}: ${sys.program.431.enabled} 432) ${sys.program.432.name}: ${sys.program.432.enabled} 433) ${sys.program.433.name}: ${sys.program.433.enabled} 434) ${sys.program.434.name}: ${sys.program.434.enabled} 435) ${sys.program.435.name}: ${sys.program.435.enabled} 436) ${sys.program.436.name}: ${sys.program.436.enabled} 437) ${sys.program.437.name}: ${sys.program.437.enabled} 438) ${sys.program.438.name}: ${sys.program.438.enabled} 439) ${sys.program.439.name}: ${sys.program.439.enabled} 440) ${sys.program.440.name}: ${sys.program.440.enabled} 441) ${sys.program.441.name}: ${sys.program.441.enabled} 442) ${sys.program.442.name}: ${sys.program.442.enabled} 443) ${sys.program.443.name}: ${sys.program.443.enabled} 444) ${sys.program.444.name}: ${sys.program.444.enabled} 445) ${sys.program.445.name}: ${sys.program.445.enabled} 446) ${sys.program.446.name}: ${sys.program.446.enabled} 447) ${sys.program.447.name}: ${sys.program.447.enabled} 448) ${sys.program.448.name}: ${sys.program.448.enabled} 449) ${sys.program.449.name}: ${sys.program.449.enabled} 450) ${sys.program.450.name}: ${sys.program.450.enabled} 451) ${sys.program.451.name}: ${sys.program.451.enabled} 452) ${sys.program.452.name}: ${sys.program.452.enabled} 453) ${sys.program.453.name}: ${sys.program.453.enabled} 454) ${sys.program.454.name}: ${sys.program.454.enabled} 455) ${sys.program.455.name}: ${sys.program.455.enabled} 456) ${sys.program.456.name}: ${sys.program.456.enabled} 457) ${sys.program.457.name}: ${sys.program.457.enabled} 458) ${sys.program.458.name}: ${sys.program.458.enabled} 459) ${sys.program.459.name}: ${sys.program.459.enabled} 460) ${sys.program.460.name}: ${sys.program.460.enabled} 461) ${sys.program.461.name}: ${sys.program.461.enabled} 462) ${sys.program.462.name}: ${sys.program.462.enabled} 463) ${sys.program.463.name}: ${sys.program.463.enabled} 464) ${sys.program.464.name}: ${sys.program.464.enabled} 465) ${sys.program.465.name}: ${sys.program.465.enabled} 466) ${sys.program.466.name}: ${sys.program.466.enabled} 467) ${sys.program.467.name}: ${sys.program.467.enabled} 468) ${sys.program.468.name}: ${sys.program.468.enabled} 469) ${sys.program.469.name}: ${sys.program.469.enabled} 470) ${sys.program.470.name}: ${sys.program.470.enabled} 471) ${sys.program.471.name}: ${sys.program.471.enabled} 472) ${sys.program.472.name}: ${sys.program.472.enabled} 473) ${sys.program.473.name}: ${sys.program.473.enabled} 474) ${sys.program.474.name}: ${sys.program.474.enabled} 475) ${sys.program.475.name}: ${sys.program.475.enabled} 476) ${sys.program.476.name}: ${sys.program.476.enabled} 477) ${sys.program.477.name}: ${sys.program.477.enabled} 478) ${sys.program.478.name}: ${sys.program.478.enabled} 479) ${sys.program.479.name}: ${sys.program.479.enabled} 480) ${sys.program.480.name}: ${sys.program.480.enabled} 481) ${sys.program.481.name}: ${sys.program.481.enabled} 482) ${sys.program.482.name}: ${sys.program.482.enabled} 483) ${sys.program.483.name}: ${sys.program.483.enabled} 484) ${sys.program.484.name}: ${sys.program.484.enabled} 485) ${sys.program.485.name}: ${sys.program.485.enabled} 486) ${sys.program.486.name}: ${sys.program.486.enabled} 487) ${sys.program.487.name}: ${sys.program.487.enabled} 488) ${sys.program.488.name}: ${sys.program.488.enabled} 489) ${sys.program.489.name}: ${sys.program.489.enabled} 490) ${sys.program.490.name}: ${sys.program.490.enabled} 491) ${sys.program.491.name}: ${sys.program.491.enabled} 492) ${sys.program.492.name}: ${sys.program.492.enabled} 493) ${sys.program.493.name}: ${sys.program.493.enabled} 494) ${sys.program.494.name}: ${sys.program.494.enabled} 495) ${sys.program.495.name}: ${sys.program.495.enabled} 496) ${sys.program.496.name}: ${sys.program.496.enabled} 497) ${sys.program.497.name}: ${sys.program.497.enabled} 498) ${sys.program.498.name}: ${sys.program.498.enabled} 499) ${sys.program.499.name}: ${sys.program.499.enabled} 500) ${sys.program.500.name}: ${sys.program.500.enabled} For my system, the email sent is: 1) My Programs: True 2) Query All: True 3) OWLH_Notify: True 4) OWLink Health: True 5) OWLH_Pulse: True 6) Thermostat: True 7) Set Evening Cool: True Set Evening Heat: True 9) Set Morning Cool: True 10) Set Morning Heat: True 11) Evening Wait Timer: True 12) Set Evening: True 13) New Cooling Time: False 14) Set Morning: True 15) Recirc: True 16) Equalize: True 17) Saftey: True 18) Set Cooling: True 19) Set Cooling 60: True 20) Set Cooling 61: True 21) Set Cooling 62: True 22) Set Cooling 63: True 23) Set Cooling 64: True 24) Set Cooling 65: True 25) Set Cooling 66: True 26) HVAC Run Time: True 27) Update Attic: True 28) Garage Door Status: True 29) Garage Door: True 30) Update Attic Back: True 31) Toggle Fan: True 32) Set Cooling 67: True 33) Humidity: True 34) Update Garage: True 35) OWLH_Notify_RTN: False 36) OWLH_Pulse_RTN: True 37) Set Cooling 68: True 38) Set Cooling 69: True 39) Cooling SP: True 40) Cooling Current SP 59: True 41) Cooling Current SP 60: True 42) Update Office: True 43) Update Living Room: True 44) Update Khloe Room: True 45) Cooling Current SP 61: True 46) Cooling Current SP 62: True 47) Cooling Current SP 63: True 48) Cooling Current SP 64: True 49) Cooling Current SP 65: True 50) Cooling Current SP 66: True 51) Cooling Current SP 67: True 52) Cooling Current SP 68: True 53) Cooling Current SP 69: True 54) Cooling Current SP 70: True 55) Cooling Current SP 71: True 56) Cooling Current SP 72: True 57) Cooling Current SP 73: True 58) Cooling Current SP 74: True 59) Cooling Current SP 75: True 60) Cooling Current SP 76: True 61) Cooling Current SP 77: True 62) Cooling Current SP 78: True 63) Cooling Current SP 79: True 64) Cooling Current SP 80: True 65) Cooling Current SP 81: True 66) RT Cooling: True 67) Set Cooling 70: True 68) Set Cooling 71: True 69) Set Cooling 72: True 70) Set Cooling 73: True 71) Set Cooling 74: True 72) Set Cooling 75: True 73) Set Cooling 76: True 74) Set Cooling 77: True 75) Set Cooling 78: True 76) Set Cooling 79: True 77) Set Cooling 80: True 78) Cooling Current Update: True 79) Heating Current Update: True 80) Set Cooling Update: True 81) Adjust Cooling Up: True 82) Adjust Cooling Down: True 83) Set Heating: True 84) Set Heating 61: True 85) Set Heating 60: True 86) Set Heating 62: True 87) Set Heating 63: True 88) Set Heating 64: True 89) Set Heating 65: True 90) Set Heating 66: True 91) Set Heating 67: True 92) Set Heating 68: True 93) Set Heating 69: True 94) Set Heating 70: True 95) Set Heating 71: True 96) Set Heating 72: True 97) Set Heating 73: True 98) Set Heating 74: True 99) Set Heating 75: True 100) Set Heating 76: True 101) Set Heating 77: True 102) Set Heating 78: True 103) Set Heating 79: True 104) Set Heating 80: True 105) Set Heating Update: True 106) Adjust Heating Down: True 107) Adjust Heating Up: True 108) Humidity Notify: True 109) Network: True 110) MaddBomber Start: True 111) MaddBomber Sleep: True 112) LizPC Sleep: True 113) LizPC Start: True 114) Xmas Lights: True 115) Xmas Tree: True 116) New Program: True 117) program[117]: program[117] 118) program[118]: program[118] 119) program[119]: program[119] 120) program[120]: program[120] 121) program[121]: program[121] 122) program[122]: program[122] 123) program[123]: program[123] 124) program[124]: program[124] 125) program[125]: program[125] 126) program[126]: program[126] 127) program[127]: program[127] 128) program[128]: program[128] 129) program[129]: program[129] 130) program[130]: program[130] 131) program[131]: program[131] 132) program[132]: program[132] 133) program[133]: program[133] 134) program[134]: program[134] 135) program[135]: program[135] 136) program[136]: program[136] 137) RT Heating: True 138) RT Fan: True 139) RT Off: True 140) RT Cooling at 6pm: True 141) RT Daily Email: True 142) New Program: True 143) Heating Current SP 59: True 144) Heating Current SP 60: True 145) Heating Current SP 61: True 146) Heating Current SP 62: True 147) Heating Current SP 63: True 148) Heating Current SP 64: True 149) Heating Current SP 65: True 150) Heating Current SP 66: True 151) Heating Current SP 67: True 152) Heating Current SP 68: True 153) Heating Current SP 69: True 154) Heating Current SP 70: True 155) Heating Current SP 71: True 156) Heating Current SP 72: True 157) Heating Current SP 73: True 158) Heating Current SP 74: True 159) Heating Current SP 75: True 160) Heating Current SP 76: True 161) Heating Current SP 77: True 162) Heating Current SP 78: True 163) Heating Current SP 79: True 164) Heating Current SP 80: True 165) Heating Current SP 81: True 166) Heating SP: True 167) program[167]: program[167] 168) program[168]: program[168] 169) program[169]: program[169] 170) program[170]: program[170] 171) program[171]: program[171] 172) program[172]: program[172] 173) program[173]: program[173] 174) program[174]: program[174] 175) program[175]: program[175] 176) program[176]: program[176] 177) program[177]: program[177] 178) program[178]: program[178] 179) program[179]: program[179] 180) program[180]: program[180] 181) program[181]: program[181] 182) program[182]: program[182] 183) program[183]: program[183] 184) program[184]: program[184] 185) program[185]: program[185] 186) program[186]: program[186] 187) program[187]: program[187] 188) program[188]: program[188] 189) program[189]: program[189] 190) program[190]: program[190] 191) program[191]: program[191] 192) program[192]: program[192] 193) program[193]: program[193] 194) program[194]: program[194] 195) program[195]: program[195] 196) program[196]: program[196] 197) program[197]: program[197] 198) program[198]: program[198] 199) program[199]: program[199] 200) program[200]: program[200] 201) program[201]: program[201] 202) program[202]: program[202] 203) program[203]: program[203] 204) program[204]: program[204] 205) program[205]: program[205] 206) program[206]: program[206] 207) program[207]: program[207] 208) program[208]: program[208] 209) program[209]: program[209] 210) program[210]: program[210] 211) program[211]: program[211] 212) program[212]: program[212] 213) program[213]: program[213] 214) program[214]: program[214] 215) program[215]: program[215] 216) program[216]: program[216] 217) program[217]: program[217] 218) program[218]: program[218] 219) program[219]: program[219] 220) program[220]: program[220] 221) program[221]: program[221] 222) program[222]: program[222] 223) program[223]: program[223] 224) program[224]: program[224] 225) program[225]: program[225] 226) program[226]: program[226] 227) program[227]: program[227] 228) program[228]: program[228] 229) program[229]: program[229] 230) program[230]: program[230] 231) program[231]: program[231] 232) program[232]: program[232] 233) program[233]: program[233] 234) program[234]: program[234] 235) program[235]: program[235] 236) program[236]: program[236] 237) program[237]: program[237] 238) program[238]: program[238] 239) program[239]: program[239] 240) program[240]: program[240] 241) program[241]: program[241] 242) program[242]: program[242] 243) program[243]: program[243] 244) program[244]: program[244] 245) program[245]: program[245] 246) program[246]: program[246] 247) program[247]: program[247] 248) program[248]: program[248] 249) program[249]: program[249] 250) program[250]: program[250] 251) program[251]: program[251] 252) program[252]: program[252] 253) program[253]: program[253] 254) program[254]: program[254] 255) program[255]: program[255] 256) program[256]: program[256] 257) program[257]: program[257] 258) program[258]: program[258] 259) program[259]: program[259] 260) program[260]: program[260] 261) program[261]: program[261] 262) program[262]: program[262] 263) program[263]: program[263] 264) program[264]: program[264] 265) program[265]: program[265] 266) program[266]: program[266] 267) program[267]: program[267] 268) program[268]: program[268] 269) program[269]: program[269] 270) program[270]: program[270] 271) program[271]: program[271] 272) program[272]: program[272] 273) program[273]: program[273] 274) program[274]: program[274] 275) program[275]: program[275] 276) program[276]: program[276] 277) program[277]: program[277] 278) program[278]: program[278] 279) program[279]: program[279] 280) program[280]: program[280] 281) program[281]: program[281] 282) program[282]: program[282] 283) program[283]: program[283] 284) program[284]: program[284] 285) program[285]: program[285] 286) program[286]: program[286] 287) program[287]: program[287] 288) program[288]: program[288] 289) program[289]: program[289] 290) program[290]: program[290] 291) program[291]: program[291] 292) program[292]: program[292] 293) program[293]: program[293] 294) program[294]: program[294] 295) program[295]: program[295] 296) program[296]: program[296] 297) program[297]: program[297] 298) program[298]: program[298] 299) program[299]: program[299] 300) program[300]: program[300] 301) program[301]: program[301] 302) program[302]: program[302] 303) program[303]: program[303] 304) program[304]: program[304] 305) program[305]: program[305] 306) program[306]: program[306] 307) program[307]: program[307] 308) program[308]: program[308] 309) program[309]: program[309] 310) program[310]: program[310] 311) program[311]: program[311] 312) program[312]: program[312] 313) program[313]: program[313] 314) program[314]: program[314] 315) program[315]: program[315] 316) program[316]: program[316] 317) program[317]: program[317] 318) program[318]: program[318] 319) program[319]: program[319] 320) program[320]: program[320] 321) program[321]: program[321] 322) program[322]: program[322] 323) program[323]: program[323] 324) program[324]: program[324] 325) program[325]: program[325] 326) program[326]: program[326] 327) program[327]: program[327] 328) program[328]: program[328] 329) program[329]: program[329] 330) program[330]: program[330] 331) program[331]: program[331] 332) program[332]: program[332] 333) program[333]: program[333] 334) program[334]: program[334] 335) program[335]: program[335] 336) program[336]: program[336] 337) program[337]: program[337] 338) program[338]: program[338] 339) program[339]: program[339] 340) program[340]: program[340] 341) program[341]: program[341] 342) program[342]: program[342] 343) program[343]: program[343] 344) program[344]: program[344] 345) program[345]: program[345] 346) program[346]: program[346] 347) program[347]: program[347] 348) program[348]: program[348] 349) program[349]: program[349] 350) program[350]: program[350] 351) program[351]: program[351] 352) program[352]: program[352] 353) program[353]: program[353] 354) program[354]: program[354] 355) program[355]: program[355] 356) program[356]: program[356] 357) program[357]: program[357] 358) program[358]: program[358] 359) program[359]: program[359] 360) program[360]: program[360] 361) program[361]: program[361] 362) program[362]: program[362] 363) program[363]: program[363] 364) program[364]: program[364] 365) program[365]: program[365] 366) program[366]: program[366] 367) program[367]: program[367] 368) program[368]: program[368] 369) program[369]: program[369] 370) program[370]: program[370] 371) program[371]: program[371] 372) program[372]: program[372] 373) program[373]: program[373] 374) program[374]: program[374] 375) program[375]: program[375] 376) program[376]: program[376] 377) program[377]: program[377] 378) program[378]: program[378] 379) program[379]: program[379] 380) program[380]: program[380] 381) program[381]: program[381] 382) program[382]: program[382] 383) program[383]: program[383] 384) program[384]: program[384] 385) program[385]: program[385] 386) program[386]: program[386] 387) program[387]: program[387] 388) program[388]: program[388] 389) program[389]: program[389] 390) program[390]: program[390] 391) program[391]: program[391] 392) program[392]: program[392] 393) program[393]: program[393] 394) program[394]: program[394] 395) program[395]: program[395] 396) program[396]: program[396] 397) program[397]: program[397] 398) program[398]: program[398] 399) program[399]: program[399] 400) program[400]: program[400] 401) program[401]: program[401] 402) program[402]: program[402] 403) program[403]: program[403] 404) program[404]: program[404] 405) program[405]: program[405] 406) program[406]: program[406] 407) program[407]: program[407] 408) program[408]: program[408] 409) program[409]: program[409] 410) program[410]: program[410] 411) program[411]: program[411] 412) program[412]: program[412] 413) program[413]: program[413] 414) program[414]: program[414] 415) program[415]: program[415] 416) program[416]: program[416] 417) program[417]: program[417] 418) program[418]: program[418] 419) program[419]: program[419] 420) program[420]: program[420] 421) program[421]: program[421] 422) program[422]: program[422] 423) program[423]: program[423] 424) program[424]: program[424] 425) program[425]: program[425] 426) program[426]: program[426] 427) program[427]: program[427] 428) program[428]: program[428] 429) program[429]: program[429] 430) program[430]: program[430] 431) program[431]: program[431] 432) program[432]: program[432] 433) program[433]: program[433] 434) program[434]: program[434] 435) program[435]: program[435] 436) program[436]: program[436] 437) program[437]: program[437] 438) program[438]: program[438] 439) program[439]: program[439] 440) program[440]: program[440] 441) program[441]: program[441] 442) program[442]: program[442] 443) program[443]: program[443] 444) program[444]: program[444] 445) program[445]: program[445] 446) program[446]: program[446] 447) program[447]: program[447] 448) program[448]: program[448] 449) program[449]: program[449] 450) program[450]: program[450] 451) program[451]: program[451] 452) program[452]: program[452] 453) program[453]: program[453] 454) program[454]: program[454] 455) program[455]: program[455] 456) program[456]: program[456] 457) program[457]: program[457] 458) program[458]: program[458] 459) program[459]: program[459] 460) program[460]: program[460] 461) program[461]: program[461] 462) program[462]: program[462] 463) program[463]: program[463] 464) program[464]: program[464] 465) program[465]: program[465] 466) program[466]: program[466] 467) program[467]: program[467] 468) program[468]: program[468] 469) program[469]: program[469] 470) program[470]: program[470] 471) program[471]: program[471] 472) program[472]: program[472] 473) program[473]: program[473] 474) program[474]: program[474] 475) program[475]: program[475] 476) program[476]: program[476] 477) program[477]: program[477] 478) program[478]: program[478] 479) program[479]: program[479] 480) program[480]: program[480] 481) program[481]: program[481] 482) program[482]: program[482] 483) program[483]: program[483] 484) program[484]: program[484] 485) program[485]: program[485] 486) program[486]: program[486] 487) program[487]: program[487] 488) program[488]: program[488] 489) program[489]: program[489] 490) program[490]: program[490] 491) program[491]: program[491] 492) program[492]: program[492] 493) program[493]: program[493] 494) program[494]: program[494] 495) program[495]: program[495] 496) program[496]: program[496] 497) program[497]: program[497] 498) program[498]: program[498] 499) program[499]: program[499] 500) program[500]: program[500] Please note, the ISY did not like me going to 1000.
  8. Just to clarify, the # is for the program you are testing (the irrigation one) and not the number of the program that is generating the daily notification event. If you leave just the # in there it will use the number of the notification program automatically.
  9. If all you are looking for is a daily email with the enabled state of a program, just make a daily notification program. The customized notification text would have something like: ${sys.program.#.enabled} ${sys.program.#.name} Replace the # with the number of your program. I would also include the Name in there until you are sure you have the right program, as this is a number and I don't think adding the letters in from the ID works. Also note with this, you'll recieve either a True or a False for the enabled status. I don't think you can not send the email if it is false unless you get deeper than I am with network resources and do some trickery there.
  10. You can store the current temperature in a variable, but it takes 1 program per degree. An example (storing the Cooling Setpoint): If Status 'Thermostat- Main' <= 59° (Cool Setpoint) Then $Thermostat_Setpoint_Cooling_Integer = 59 $Thermostat_Setpoint_Cooling_Integer Init To 59 $Thermostat_Setpoint_Cooling_State = 59 $Thermostat_Setpoint_Cooling_State Init To 59 Else - No Actions - (To add one, press 'Action') Replace the Cooling SP to Temperature. Now you trying to close the gap is interesting... what exactly would that do? It implies you are trying to dynamically change the calibration so that the two agree within 3c. In our house, we have the Fan toggle between Auto and On based on the different rooms being above or below the cooling setpoint. I think this is closer to what you are trying to do. Program (Equalize) If ( $Temperature_ChildRoom > $SP_Cooling Or $Temperature_ChildRoom < $SP_Heating Or $Temperature_Living_Room > $SP_Cooling Or $Temperature_Living_Room < $SP_Heating Or $Temperature_Office > $SP_Cooling Or $Temperature_Office < $SP_Heating Or $SP_Fan is 1 ) And Status 'Thermostat- Main' is not Calling for Heat And Status 'Thermostat- Main' is not Calling for Cool Then Set 'Thermostat- Main' Fan On Wait 10 minutes Run Program 'Equalize' (If) Else Set 'Thermostat- Main' Fan Auto Wait 10 minutes Run Program 'Equalize' (If) Instead you would compare the 2 thermostat temperatures and turn your fan on and off.
  11. Here are some ideas (things that I am currently doing). First, we need to know the current Heating and Cooling SPs of your thermostat. - ISY currently does not support writing this value to a variable, but you can look it up. If Status 'Thermostat- Main' is 74° (Cool Setpoint) Then $Thermostat_Setpoint_Cooling_Integer = 74 $Thermostat_Setpoint_Cooling_Integer Init To 74 $Thermostat_Setpoint_Cooling_State = 74 $Thermostat_Setpoint_Cooling_State Init To 74 The variables are self explanatory. For my family, a range of 60-80 covers our needs so this is the range I cover. - Anything <= 59 or >=81 gets set to 59/81 (beyond that I don't care, they are wrong). - We do this for both Heating and Cooling Setpoint - To repeat, this is 22 programs for Heating Setpoint and 22 programs for Cooling Setpoint Next, we need to be able to set the Cooling/Heating SP based on a variable. - To do this, I have an Integer Variable called $Thermostat_Set_Cooling (and heating). If $Thermostat_Set_Cooling is 70 Then Set 'Thermostat- Main' 70° (Cool Setpoint) Then, I have a program I can call to update the Heating/Cooling setpoints based on whatever I've set $Thermostat_Set_Cooling. I did not use a STATE for this as I would like to do math on it, and not have it update until I'm ready for it. If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Run Program 'Set Cooling 60' (If) Run Program 'Set Cooling 61' (If) Run Program 'Set Cooling 62' (If) Run Program 'Set Cooling 63' (If) Run Program 'Set Cooling 64' (If) Run Program 'Set Cooling 65' (If) Run Program 'Set Cooling 66' (If) Run Program 'Set Cooling 67' (If) Run Program 'Set Cooling 68' (If) Run Program 'Set Cooling 69' (If) Run Program 'Set Cooling 70' (If) Run Program 'Set Cooling 71' (If) Run Program 'Set Cooling 72' (If) Run Program 'Set Cooling 73' (If) Run Program 'Set Cooling 74' (If) Run Program 'Set Cooling 75' (If) Run Program 'Set Cooling 76' (If) Run Program 'Set Cooling 77' (If) Run Program 'Set Cooling 78' (If) Run Program 'Set Cooling 79' (If) Run Program 'Set Cooling 80' (If) To recap where we are at now: - We know the current SP of our TStat (even if someone were to change the SP outside of ISY, ISY will know this happened). - We can change the current SP to match any variable or math that we use. Now we make a schedule that only contains a time: If Time is 6:00:00AM Then Run Program 'Set Morning Cool' (Then Path) Run Program 'Set Morning Heat' (Then Path) And then separate programs to handle the SPs: If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then $SP_Cooling = 75 $SP_Cooling Init To $SP_Cooling $Thermostat_Set_Cooling = $SP_Cooling $Thermostat_Set_Cooling Init To $SP_Cooling Wait 2 seconds Run Program 'Set Cooling Update' (Then Path) Another recap: - We have 1 time based program, at that time we put in our time based SPs. - The $Thermostat_Set_Cooling has been introduced already, but we now have a $SP_Cooling. - $SP_Cooling is what the SP SHOULD BE, $Thermostat_Setpoint_Cooling_Integer(State) is what the SP IS. What you would like to adjust here: - I find it very easy to change that 75 from within the program; but there is nothing stopping you from making that equal to $SP_Morning_Cooling and setting that to 75 in your variables. Lets talk about timers: - I'll give you an example here, as you would like to make a 'dynamic timer' or change when the SP is set based off a variable. - My example is not directly applicable to what you are trying to do, but the concept is similar and can be adjusted. - I do this for my evening cooling. It changes when it starts based on how long it took to cool yesterday (averaged) so that we reach the correct set point at a certain time. - The concept is that at 10pm I would like the house to be at a certain set point. - At 6pm I start a 4 hour count down, where I subtract from that how long it took to cool yesterday. So if it took 30 minutes, the timer ends at 210 minutes, or 9:30pm. Start the Timer at 6pm: If Time is 6:00:00PM Then Run Program 'Evening Wait Timer' (If) Countdown: If $Timer_Countdown > $Timer_Yesterday And $Timer_Countdown > 0 Then Wait 1 minute $Timer_Countdown -= 1 $Timer_Countdown Init To $Timer_Countdown Run Program 'Evening Wait Timer' (If) Else $Timer_Countdown = 240 $Timer_Countdown Init To 240 $Timer_Today = 0 $Timer_Today Init To 0 Run Program 'Set Evening Cool' (Then Path) Run Program 'Set Evening Heat' (Then Path) As they are just variables, it does not matter what $Timer_Yesterday/Today are, but just if you are curious: -When the AC turns on, I start a timer. -When it stops, the timer is over. -I average this with the previous timer and now we have the next day's wait. Set Evening Cool: If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then $SP_Cooling = 71 $SP_Cooling Init To $SP_Cooling $Thermostat_Set_Cooling = $SP_Cooling $Thermostat_Set_Cooling Init To $SP_Cooling Enable Program 'New Cooling Time' Wait 2 seconds Run Program 'Set Cooling Update' (Then Path) Wait 1 minute Run Program 'New Cooling Time' (If) New Cooling Time: If Status 'Thermostat- Main' is Calling for Cool Then Wait 1 minute $Timer_Today += 1 $Timer_Today Init To $Timer_Today Run Program 'New Cooling Time' (If) Else Send Notification to 'Admin' content 'Reached Setpoint' $Timer_Yesterday += $Timer_Today $Timer_Yesterday /= 2 $Timer_Yesterday Init To $Timer_Yesterday Disable Program 'New Cooling Time' Now lets do some math: - In your example you would like to add 4 degrees when you are away. - Using the programs above, you could just add 4 degrees to the current SP and then have it set. - In this way, it does not matter what the SP is, it will now be 4 degrees more. - As a note, I do have a safety program that prevents the SP from going above 85 or below 55. - Again, this example is not a cut and paste for you, but it gets the concept. - In mine, I handle returning the SP to normal if someone were to go to the TStat and reduce or increase the SPs. - This is useful for when we want to cool the house in the middle of the day. If $SP_Cooling < $Thermostat_Setpoint_Cooling_State Then $Thermostat_Set_Cooling = $Thermostat_Setpoint_Cooling_State $Thermostat_Set_Cooling -= 1 $Thermostat_Set_Cooling Init To $Thermostat_Set_Cooling Wait 1 hour Run Program 'Set Cooling Update' (Then Path) - So here, if we change the Thermstate Setpoint, this program gets called. - If the Setpoint is not what it should be based on our time based setpoints, then we need to adjust it. - Every hour, we move the SP closer to what it should be. Recap Final: - With the above concept, having SP Variables for what you want to set the TStat is easy. - You could make a timer start at 3:30am (after the update) that lasts for 24 hours. - When this timer reaches certain points, it could change your Set Points - When the timer reaches 120 minutes (5:30am) then set Morning_Variables - When the timer reaches 600 minutes (1:30pm) then set Afternoon_Variables - When I leave the house, add 4 degrees to the current SP. - When I'm on vacation, change the Morning/Afternoon_Variables to vacation mode - When I'm home change the timers and the SPs. Let me know if you have any questions. Also let me know if you see some improvements to these suggestions as I'm always tinkering.
  12. Nice ppitkin. Later when I have the chance I'll be trying this out as it sounds exactly what I need. For the RPi, I'm having issues with connected USB miners having decaying performance over time. The temp solution was a croon job to restart the RPi every few hours. Instead, I'm considering hooking the mining equipment into a monitored outlet so that I can see the power consumption. I'm assuming as the hash power goes down so does the consumption. The idea is rather than a dumb timer, I could restart the RPi based on consumption. It would also allow me to restart the equipment (hard reset) remotely either on failed starting of all the chips or when I am tinkering around with it. As for the computers, I'm not look for an 'auto' solution. Instead I would like to hit one of the switches in our bedroom / phones to turn them off. Again, thanks for the write up! Looking forward to testing it out. Gives me a reason to buy the network resource pack now.
  13. Hello; Has anyone looked into / found / is using a solution to send 'soft' reset/shutdown requests to PCs and the Raspberry Pi? I would like to integrate an event in the ISY where I can control power to these devices (such as killing power to the outlet) and I would like to be able to shut the down 'proper' before taking away power.
  14. Yeup, the Mobilinc Connect is a service for those who do not want to mess with their router settings. The actual task is easy if you've done it before. As the above poster mentioned, it is something worth learning. As for the actual use, Mobilinc does a great job of it. You end up getting 2 AP routes. One is Local for when you are on your WiFi. The other uses a secure connection. The mobilinc seams to prefer the Local first, and then swaps over to the secure if it can't connect. In practice, you can really only tell that you are local / secure by the icon in the top right changing between an L and an S. When on secure we have noticed it is a bit slower to respond, but considering the additional layers this can be expected.
  15. If you go further down the line of Elk Voltage being a trigger: For my 1 wire temperatures I set up a conversion program (I actually do this for almost all my variables): If State is not Integer Then - Integer = State - Integer init to State - State init to State In this way, most of my variables have a _State and a _Integer version of them. I can then choose to use the triggered or non triggered version in my programming. Now since you are using the And condition along with the Program State, the solution to remove the multiplication from that step would work with and without voltage being a trigger.
  16. I'm not using RemoteLink..... but to throw some thoughts your way. I have a series of programs that compare the current Heating / cooling Setpoint to what it should be based on schedule. They then adjust the setpoints 1 degree every hour back to normal. I also have a program that handles the whole house fan, where it turns it on for 10 minutes after the AC kicks off. It then runs the fan when the temperature is getting close to the setpoint. Since these auto restore over time, we don't have to think about it. We use our Phone for the remote links. On there we have: * Toggle Fan (will run the whole house fan for 1 hour, or until toggled off). * Decrease Temperature (function as the Setpoint Down 1 deg button). * Increase Temperature (functions as the Setpoint Up 1 deg button). Combined with the programs to restore the setpoint over time, we find this meets our needs for spot adjustments. Usually the wife drops the temperature when she starts cooking. I'll toggle the fan if I'm in and out a lot with yard stuff. Schedule change: If Time is 6:00:00AM Then Run Program 'Set Morning Cool' (Then Path) Run Program 'Set Morning Heat' (Then Path) Else - No Actions - (To add one, press 'Action') Set Morning Cool If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Set 'Thermostat- Main' 75° (Cool Setpoint) $SP_Cooling = 75 $SP_Cooling Init To $SP_Cooling Else - No Actions - (To add one, press 'Action') Example of increasing the Cooling SetPoint: (we cover the range from 60 to 80) If Status 'Thermostat- Main' is 76° (Cool Setpoint) And $SP_Cooling > 76 Then Wait 1 hour Set 'Thermostat- Main' 77° (Cool Setpoint) Else - No Actions - (To add one, press 'Action')
  17. This would be the same concept as using the cai webcontrol, except you would be running an application on your raspberry pie instead of using a native function of the device. Also you would need the one-wire device instead of the on-board AD converter in the cai. As background, I am already running a Pi with several temperature probes reporting to the ISY.
  18. So I'm going to pick up a A to D Converter for the 1 Wire Bus. If my reading is correct, it should be able to take a 0-10 Volt signal and convert it into 0-100% output to the ISY using OWLink. Mapping this output to a State and converting it to an Integer should allow a lot of flexibility in programming. I'll let you know how it goes.
  19. Looks like 1 wire may be able to do voltage as well. http://www.raspberrypi.org/phpBB3/viewt ... 8&p=220084 The people at Sheepwalkelectronics have a module that can do 0-10 V. It uses the DS2438Z 1 wire chip.
  20. As for limiting the programs in the folder options I mentioned. Folder Conditions for 'Cooling Setpoints (Up)' Add conditions to limit when programs in this folder are allowed to run. If Status 'Thermostat- Main' < 78° (Temperature) And Status 'Thermostat- Main' >= 62° (Temperature) Then Allow the programs in this folder to run. For your voltage settings you should be able to pull down and use a compare to a set number. So you can only run programs in a folder with a specific range of voltages. You did this for the >= 10 reading.
  21. In your voltage program, Change $WtrGallons to $Voltage // WaterLvlInit (Wait for a trigger to calculate and display the water level, then initialize the WtrGallons variable and move to State 1 (Check level)) If Time is 5:00:00AM Or Elk Keypad 'Main Keypad' 'F4' is Pressed Then $WtrGallons = $SlopeDiv10 $State_LvlCalc = 1 // Chk020Volt (Test if the Elk Zone 'Water Level' 'Voltage' is 2.0 Volts and if so, scale WtrGallons by 20) If $State_LvlCalc is 1 And Elk Zone 'Water Level' 'Voltage' is 2.0 Volts Then $Voltage= 20 $State_LvlCalc = 2 // Chk021Volt (Test if the Elk Zone 'Water Level' 'Voltage' is 2.1 Volts and if so, scale WtrGallons by 21 and subtract the offset) If $State_LvlCalc is 1 And Elk Zone 'Water Level' 'Voltage' is 2.1 Volts Then $Voltage= 21 $State_LvlCalc = 2 // Chk100Volt (Test if the Elk Zone 'Water Level' 'Voltage' >= 10.0 Volts and if so, scale WtrGallons by 100 and subtract the offset) If $State_LvlCalc is 1 And Elk Zone 'Water Level' 'Voltage' >= 10.0 Volts Then $Voltage= 100 $State_LvlCalc = 2 // WaterLvLDisplay (Display the results in inches (rather than gallons) on the Elk Key Pad and go back to waiting) If $State_LvlCalc is 2 Then $WtrLvl = $WtrGallons $WtrLvl *= $Voltage $WtrLvl /= $GallonsPerInch Set Elk Area 'House' Display Text on Keypads, Content 'Elk_WaterLevel' $State_LvlCalc = 0 In this, you would never find yourself with multiplying several things together.
  22. I really think the data validation is the way to go. Least amount of work and it just reinitialized the process if an invalid number is passed. Your next option is to remove the math from your voltage programs. They would instead change a variable (not multiply it) to your voltage. The display program would handle the multiplication. In this way it doesn't matter if the parameter is applied several times. They just overwrite each other. I have 4 folders that compare 20 temperatures each to find out what the Heating and Cooling Set Points are for my Thermostat. If Status 'Thermostat- Main' is 62° (Cool Setpoint) And $SP_Cooling < 62 Then Wait 1 hour Set 'Thermostat- Main' 61° (Cool Setpoint) Else - No Actions - (To add one, press 'Action') The intent of this program is to detect when the wife changes the temperature set point and then to slowly walk it back to the normal set point. SP_Cooling is the normal setpoint. This is to overcome the same problem you are facing. My 'state' is the SP and it causes 80 programs to run and compare. One of them can be true and that one will run for an hour and then change the set point.
  23. Believe me, we tried to simplify this, but when you can't assign the value from the Elk to a variable (see earlier in this thread), there is not much you can do in terms of an intelligent search. But, if you can think of a simpler way to do this under the constrains of the ISY programming language, please let me know. That said, I think the issue is with the way we are using the state variables. I suspect, we should have created separate conditional and body programs as described in the great posting by ergodic (http://forum.universal-devices.com/viewtopic.php?f=26&t=6395) but before I rewrite all eighty some programs, I want to understand where we went wrong. I don't think you need to write all 80 programs. Add a program that enables or disables a folder instead. If Voltage is 1 or Voltage is 2 or Voltage is 3 Then Enable Folder 1
  24. Have you attempted a check for proper values and limits for your variables? Adding a notification on top of that may help you track it down. A couple routes for this. The easy way, since you said redoing the Init fixes it, is to move your display to State 3 and have State 2 be a logic check. If State 2 is passed an illogical value for the Gallons then it runs the (Then Path) for the WaterLvlInit; otherwise it raises the state to 3, and state 3 runs your display. For this logic check, I would add an automatic way out (such as a counter) so that you don't get into an endless loop. With running all those programs at the exact same time using a state change, I wonder if memory is messing something up. You could add a logical check as part of each voltage check that the $WtrGallons is at the proper value (maybe <= Max Range) so that nothing gets duplicated. You could spread out the execution of the code by adding 8 states (one for each folder) and have a wait timer built in. Some random thoughts before bed.
  25. MaddBomber83

    sensors

    A similar thing happend to me and it was because we added a bunch of computer power items in our computer room. Temporary fix was to move the PLM out of that room. Longer term fix was to add filters and APs to increase the robustness of the network.
×
×
  • Create New...