Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # RoomCooler (2.1.0.7)
- # - fix heater no deactivating
- # - added pressure control
- # Settings are in celsius.
- # Target temperature device is optional.
- # Device are controlled by on / off.
- # states: 0 idle # 1 cool # 2 heat
- # error: 1001=missing sensor, 1002=invalid pressure
- define cTarget 20 # target temparature
- define cKC 273.15 # equals 0 celsius
- define cTolerance 1 # -/+ cTarget tolerance
- define cCoolerIsBatch 0 # 0:single, 1:batch
- define cHeaterIsBatch 0 # 0:single, 1:batch
- define cPressureMin 10 # min pressure for cooling
- define cPressureMax 55 # vent room target
- define cPressureMaT 5 # tolerance +/- max
- alias dHousing db
- alias dTarget d0 # optional default cTarget
- alias dCooler d1 # optional
- alias dHeater d2 # optional
- alias dSensor d3
- alias dVent d4 # optional
- alias rTarget r0
- alias rState r1
- alias rTemperature r2
- alias rPressure r3
- alias rDivergence r4
- # defaults on load
- move rState 0
- jal jCoolerDeactivate
- jal jHeaterDeactivate
- jLoop:
- move rTarget cTarget # set default temp target
- # load dSensor data
- bdns dSensor jErrorDeviceSensor
- l rPressure dSensor Pressure
- l rTemperature dSensor Temperature
- blt rPressure cPressureMin jErrorPressureMin
- jal jPressureControll
- brdns dTarget 2 # set target if devices exists
- l rTarget dTarget Setting
- add rTarget rTarget cKC # prepare temperature read
- ceil rTemperature rTemperature # ease
- sub rDivergence rTarget rTemperature
- abs rDivergence rDivergence
- # switch actions jSetReturn
- blt rDivergence cTolerance jStateIdle
- blt rTemperature rTarget jStateHeating
- bgt rTemperature rTarget jStateCooling
- # set return state
- jSetReturn:
- s dHousing Setting rState
- yield
- j jLoop
- # functions
- jPressureControll: #------------
- bdns dVent ra # device not set
- sub rDivergence rPressure cPressureMax
- abs rDivergence rDivergence
- ble rDivergence cPressureMaT jPressureControllOff
- brgt rPressure cPressureMax 2
- s dVent Mode 0 # outward / fill room
- brlt rPressure cPressureMax 2
- s dVent Mode 1 # inward / empty room
- s dVent On 1
- j ra
- jPressureControllOff:
- s dVent On 0
- j ra
- jStateIdle: #------------
- move rState 0
- jal jCoolerDeactivate
- jal jHeaterDeactivate
- j jSetReturn
- jStateHeating: #------------
- move rState 2
- jal jCoolerDeactivate
- jal jHeaterActivate
- j jSetReturn
- jStateCooling: #------------
- move rState 1
- jal jCoolerActivate
- jal jHeaterDeactivate
- j jSetReturn
- jErrorDeviceSensor: #------------
- move rState 1001
- j jSetReturn
- jErrorPressureMin: #------------
- move rState 1002
- j jSetReturn
- jCoolerActivate: #------------
- bdns dCooler ra
- brnez cCoolerIsBatch 2
- s dCooler On 1
- breqz cCoolerIsBatch 2
- s dCooler Setting 1
- j ra
- jCoolerDeactivate: #------------
- bdns dCooler ra
- brnez cCoolerIsBatch 2
- s dCooler On 0
- breqz cCoolerIsBatch 2
- s dCooler Setting 0
- j ra
- jHeaterActivate: #------------
- bdns dHeater ra
- brnez cHeaterIsBatch 2
- s dHeater On 1
- breqz cHeaterIsBatch 2
- s dHeater Setting 1
- j ra
- jHeaterDeactivate: #------------
- bdns dHeater ra
- brnez cHeaterIsBatch 2
- s dHeater On 0
- breqz cHeaterIsBatch 2
- s dHeater Setting 0
- j ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement