Advertisement
isgrimur

Stationeers : RoomCooler (2.1.0.7)

Feb 21st, 2020
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. # RoomCooler (2.1.0.7)
  2. # - fix heater no deactivating
  3. # - added pressure control
  4. # Settings are in celsius.
  5. # Target temperature device is optional.
  6. # Device are controlled by on / off.
  7. # states: 0 idle # 1 cool # 2 heat
  8. # error: 1001=missing sensor, 1002=invalid pressure
  9. define cTarget 20 # target temparature
  10. define cKC 273.15 # equals 0 celsius
  11. define cTolerance 1 # -/+ cTarget tolerance
  12. define cCoolerIsBatch 0 # 0:single, 1:batch
  13. define cHeaterIsBatch 0 # 0:single, 1:batch
  14. define cPressureMin 10 # min pressure for cooling
  15. define cPressureMax 55 # vent room target
  16. define cPressureMaT 5 # tolerance +/- max
  17. alias dHousing db
  18. alias dTarget d0 # optional default cTarget
  19. alias dCooler d1 # optional
  20. alias dHeater d2 # optional
  21. alias dSensor d3
  22. alias dVent d4 # optional
  23. alias rTarget r0
  24. alias rState r1
  25. alias rTemperature r2
  26. alias rPressure r3
  27. alias rDivergence r4
  28. # defaults on load
  29. move rState 0
  30. jal jCoolerDeactivate
  31. jal jHeaterDeactivate
  32. jLoop:
  33. move rTarget cTarget # set default temp target
  34. # load dSensor data
  35. bdns dSensor jErrorDeviceSensor
  36. l rPressure dSensor Pressure
  37. l rTemperature dSensor Temperature
  38. blt rPressure cPressureMin jErrorPressureMin
  39. jal jPressureControll
  40. brdns dTarget 2 # set target if devices exists
  41. l rTarget dTarget Setting
  42. add rTarget rTarget cKC # prepare temperature read
  43. ceil rTemperature rTemperature # ease
  44. sub rDivergence rTarget rTemperature
  45. abs rDivergence rDivergence
  46. # switch actions jSetReturn
  47. blt rDivergence cTolerance jStateIdle
  48. blt rTemperature rTarget jStateHeating
  49. bgt rTemperature rTarget jStateCooling
  50. # set return state
  51. jSetReturn:
  52. s dHousing Setting rState
  53. yield
  54. j jLoop
  55. # functions
  56. jPressureControll: #------------
  57. bdns dVent ra # device not set
  58. sub rDivergence rPressure cPressureMax
  59. abs rDivergence rDivergence
  60. ble rDivergence cPressureMaT jPressureControllOff
  61. brgt rPressure cPressureMax 2
  62. s dVent Mode 0 # outward / fill room
  63. brlt rPressure cPressureMax 2
  64. s dVent Mode 1 # inward / empty room
  65. s dVent On 1
  66. j ra
  67. jPressureControllOff:
  68. s dVent On 0
  69. j ra
  70. jStateIdle: #------------
  71. move rState 0
  72. jal jCoolerDeactivate
  73. jal jHeaterDeactivate
  74. j jSetReturn
  75. jStateHeating: #------------
  76. move rState 2
  77. jal jCoolerDeactivate
  78. jal jHeaterActivate
  79. j jSetReturn
  80. jStateCooling: #------------
  81. move rState 1
  82. jal jCoolerActivate
  83. jal jHeaterDeactivate
  84. j jSetReturn
  85. jErrorDeviceSensor: #------------
  86. move rState 1001
  87. j jSetReturn
  88. jErrorPressureMin: #------------
  89. move rState 1002
  90. j jSetReturn
  91. jCoolerActivate: #------------
  92. bdns dCooler ra
  93. brnez cCoolerIsBatch 2
  94. s dCooler On 1
  95. breqz cCoolerIsBatch 2
  96. s dCooler Setting 1
  97. j ra
  98. jCoolerDeactivate: #------------
  99. bdns dCooler ra
  100. brnez cCoolerIsBatch 2
  101. s dCooler On 0
  102. breqz cCoolerIsBatch 2
  103. s dCooler Setting 0
  104. j ra
  105. jHeaterActivate: #------------
  106. bdns dHeater ra
  107. brnez cHeaterIsBatch 2
  108. s dHeater On 1
  109. breqz cHeaterIsBatch 2
  110. s dHeater Setting 1
  111. j ra
  112. jHeaterDeactivate: #------------
  113. bdns dHeater ra
  114. brnez cHeaterIsBatch 2
  115. s dHeater On 0
  116. breqz cHeaterIsBatch 2
  117. s dHeater Setting 0
  118. j ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement