Advertisement
Guest User

Untitled

a guest
Jun 28th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.21 KB | None | 0 0
  1. import org.openhab.model.script.actions.Timer
  2.  
  3. var String HeatingPreviousMode = "OFF"
  4. var String CoolingPreviousMode = "OFF"
  5. var String FanPreviousMode = "OFF"
  6.  
  7. rule "Initialisation"
  8. when
  9. System started
  10. then
  11. MainSwitch.sendCommand("OFF")
  12. HeatingMode.sendCommand("OFF")
  13. CoolingMode.sendCommand("OFF")
  14. FanMode.sendCommand("OFF")
  15. //CELSIUS if(TempMinSetpoint.state == NULL) postUpdate(TempMinSetpoint, 16)
  16. //CELSIUS if(TempMinSetpoint.state > 40) postUpdate(TempMinSetpoint, 16)
  17. /**FAHRENHEIT*/ if(TempMinSetpoint.state == NULL) postUpdate(TempMinSetpoint, 68)
  18. /**FAHRENHEIT*/ if(TempMinSetpoint.state < 32) postUpdate(TempMinSetpoint, 68)
  19.  
  20. //CELSIUS if(TempMaxSetpoint.state == NULL) postUpdate(TempMaxSetpoint, 18)
  21. //CELSIUS if(TempMaxSetpoint.state > 40) postUpdate(TempMaxSetpoint, 18)
  22. /**FAHRENHEIT*/ if(TempMaxSetpoint.state == NULL) postUpdate(TempMaxSetpoint, 72)
  23. /**FAHRENHEIT*/ if(TempMaxSetpoint.state < 32) postUpdate(TempMaxSetpoint, 72)
  24.  
  25. TempMinSetpointChart.sendCommand(0);
  26. TempMaxSetpointChart.sendCommand(0);
  27. PreviousTempReading.sendCommand(0);
  28. PreviousHumiReading.sendCommand(0);
  29. chart_period.sendCommand(0);
  30. end
  31.  
  32. rule "convertproxy"
  33. when
  34. Item MyTemp changed or
  35. Item MyHumi changed
  36. then
  37. MyTempProxy.postUpdate(Double::parseDouble(MyTemp.state.toString))
  38. MyHumiProxy.postUpdate(Double::parseDouble(MyHumi.state.toString))
  39. //CELSIUS if ((Double::parseDouble(MyTemp.state.toString) < (Double::parseDouble(PreviousTempReading.state.toString)) - 0.2) || (Double::parseDouble(MyTemp.state.toString) > (Double::parseDouble(PreviousTempReading.state.toString)) + 0.2)) {
  40. PreviousTempReading.postUpdate(Double::parseDouble(MyTemp.state.toString))
  41. //CELSIUS }
  42. if((Double::parseDouble(MyHumi.state.toString) < (Double::parseDouble(PreviousHumiReading.state.toString)) - 0.4) || (Double::parseDouble(MyHumi.state.toString) > (Double::parseDouble(PreviousHumiReading.state.toString)) + 0.4)) {
  43. PreviousHumiReading.postUpdate(Double::parseDouble(MyHumi.state.toString))
  44. }
  45. end
  46.  
  47. rule "SetTempMinSetpointInc"
  48. when
  49. Item IncTargetTempMin changed
  50. then
  51. if (TempMinSetpoint.state < TempMaxSetpoint.state) {
  52. var Number minSetpoint = TempMinSetpoint.state as DecimalType
  53. //CELSIUS minSetpoint = minSetpoint + 0.5
  54. /**FAHRENHEIT*/ minSetpoint = minSetpoint + 1
  55. TempMinSetpoint.sendCommand(minSetpoint) //postUpdate(TempMinSetpoint, minSetpoint)
  56. TempMinSetpointChart.sendCommand(minSetpoint)
  57. }
  58. end
  59.  
  60. rule "SetTempMinSetpointDec"
  61. when
  62. Item DecTargetTempMin changed
  63. then
  64. var Number minSetpoint = TempMinSetpoint.state as DecimalType
  65. //CELSIUS minSetpoint = minSetpoint - 0.5
  66. /**FAHRENHEIT*/ minSetpoint = minSetpoint - 1
  67. TempMinSetpoint.sendCommand(minSetpoint) //postUpdate(TempMinSetpoint, minSetpoint)
  68. TempMinSetpointChart.sendCommand(minSetpoint)
  69. end
  70.  
  71. rule "SetTempMaxSetpointInc"
  72. when
  73. Item IncTargetTempMax changed
  74. then
  75. var Number maxSetpoint = TempMaxSetpoint.state as DecimalType
  76. //CELSIUS maxSetpoint = maxSetpoint + 0.5
  77. /**FAHRENHEIT*/ maxSetpoint = maxSetpoint + 1
  78. TempMaxSetpoint.sendCommand(maxSetpoint) //postUpdate(TempMaxSetpoint, maxSetpoint)
  79. TempMaxSetpointChart.sendCommand(maxSetpoint)
  80. end
  81.  
  82. rule "SetTempMaxSetpointDec"
  83. when
  84. Item DecTargetTempMax changed
  85. then
  86. if (TempMinSetpoint.state < TempMaxSetpoint.state) {
  87. var Number maxSetpoint = TempMaxSetpoint.state as DecimalType
  88. //CELSIUS maxSetpoint = maxSetpoint - 0.5
  89. /**FAHRENHEIT*/ maxSetpoint = maxSetpoint - 1
  90. TempMaxSetpoint.sendCommand(maxSetpoint) //postUpdate(TempMaxSetpoint, maxSetpoint)
  91. TempMaxSetpointChart.sendCommand(maxSetpoint)
  92. }
  93. end
  94.  
  95. rule "BlockSetpointOverlapUp"
  96. when
  97. Item TempMinSetpoint changed
  98. then
  99. if (TempMinSetpoint.state > TempMaxSetpoint.state) {
  100. TempMaxSetpoint.sendCommand(TempMinSetpoint.state as DecimalType)
  101. }
  102. end
  103.  
  104. rule "BlockSetpointOverlapDown"
  105. when
  106. Item TempMaxSetpoint changed
  107. then
  108. if (TempMinSetpoint.state > TempMaxSetpoint.state) {
  109. TempMinSetpoint.sendCommand(TempMaxSetpoint.state as DecimalType)
  110. }
  111. end
  112.  
  113. rule "checkcurrtemp"
  114. when
  115. Item TempMinSetpoint changed or
  116. Item TempMaxSetpoint changed or
  117. Item PreviousTempReading changed
  118. then
  119. if(MyTempProxy.state > TempMinSetpoint.state) {
  120. HeatingPin.sendCommand(OFF)
  121. TempMinSetpointChart.sendCommand(0)
  122. }
  123. else if((MyTempProxy.state < TempMinSetpoint.state) && (HeatingMode.state=="ON")) {
  124. HeatingPin.sendCommand(ON)
  125. FanPin.sendCommand(ON)
  126. TempMinSetpointChart.sendCommand(TempMinSetpoint.state as DecimalType)
  127. }
  128. if(MyTempProxy.state < TempMaxSetpoint.state) {
  129. CoolingPin.sendCommand(OFF)
  130. TempMaxSetpointChart.sendCommand(0)
  131. }
  132. else if((MyTempProxy.state > TempMaxSetpoint.state) && (CoolingMode.state=="ON")) {
  133. CoolingPin.sendCommand(ON)
  134. FanPin.sendCommand(ON)
  135. TempMaxSetpointChart.sendCommand(TempMaxSetpoint.state as DecimalType)
  136. }
  137. if((MyTempProxy.state > TempMinSetpoint.state) && (MyTempProxy.state < TempMaxSetpoint.state)) {
  138. FanPin.sendCommand(OFF)
  139. }
  140. end
  141.  
  142. /*
  143. rule "checkcurrhumi"
  144. when
  145. Item HumiSetpoint changed or
  146. Item PreviousHumiReading changed
  147. then
  148. if(MyHumiProxy.state < HumiSetpoint.state){
  149. HumidityPin18.sendCommand(OFF)
  150. HumiSetpointChart.sendCommand(0)
  151. }
  152. else if((MyHumiProxy.state > HumiSetpoint.state) && ((HumiMode.state=="ON") || (HumiMode.state=="Boost"))) {
  153. HumidityPin18.sendCommand(ON)
  154. HumiSetpointChart.sendCommand(HumiSetpoint.state as DecimalType)
  155. }
  156. end
  157. */
  158.  
  159. rule "Heating Mode"
  160. when
  161. Item HeatingMode changed
  162. then
  163. switch(HeatingMode.state) {
  164. case "ON": {
  165. if(MyTempProxy.state < TempMinSetpoint.state) {
  166. HeatingPin.sendCommand(ON)
  167. FanPin.sendCommand(ON)
  168. TempMinSetpointChart.sendCommand(TempMinSetpoint.state as DecimalType)
  169. }
  170. MainSwitch.sendCommand("ON")
  171. CoolingMode.sendCommand("OFF")
  172. HeatingPreviousMode="ON"
  173. }
  174. case "OFF": {
  175. HeatingPin.sendCommand(OFF)
  176. TempMinSetpointChart.sendCommand(0)
  177. HeatingPreviousMode="OFF"
  178. }
  179. case "Schedule": {
  180. HeatingPin.sendCommand(OFF)
  181. TempMinSetpointChart.sendCommand(0)
  182. MainSwitch.sendCommand("ON")
  183. HeatingPreviousMode="Schedule"
  184. }
  185. }
  186. end
  187.  
  188. rule "Cooling Mode"
  189. when
  190. Item CoolingMode changed
  191. then
  192. switch(CoolingMode.state) {
  193. case "ON": {
  194. if(MyTempProxy.state > TempMaxSetpoint.state) {
  195. CoolingPin.sendCommand(ON)
  196. FanPin.sendCommand(ON)
  197. TempMaxSetpointChart.sendCommand(TempMaxSetpoint.state as DecimalType)
  198. }
  199. MainSwitch.sendCommand("ON")
  200. HeatingMode.sendCommand("OFF")
  201. CoolingPreviousMode="ON"
  202. }
  203. case "OFF": {
  204. CoolingPin.sendCommand(OFF)
  205. TempMaxSetpointChart.sendCommand(0)
  206. CoolingPreviousMode="OFF"
  207. }
  208. case "Schedule": {
  209. CoolingPin.sendCommand(OFF)
  210. TempMaxSetpointChart.sendCommand(0)
  211. MainSwitch.sendCommand("ON")
  212. CoolingPreviousMode="Schedule"
  213. }
  214. }
  215. end
  216.  
  217.  
  218. rule "MainSwitch"
  219. when
  220. Item MainSwitch changed
  221. then
  222. switch(MainSwitch.state) {
  223. case ON:{
  224. // Do nothing
  225. }
  226. case OFF:{
  227. if (HeatingMode.state == "ON") {
  228. HeatingPreviousMode = "ON"
  229. HeatingMode.sendCommand("OFF")
  230. } else if (HeatingMode.state == "Schedule") {
  231. HeatingPreviousMode="Schedule"
  232. HeatingMode.sendCommand("OFF")
  233. }
  234. }
  235. }
  236. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement