41 lines
1.1 KiB
Plaintext
41 lines
1.1 KiB
Plaintext
// Pressure numbers are in KPa
|
|
|
|
device self = "db";
|
|
device emergencyRelief = "d0";
|
|
device greenhouseSensor = "d1";
|
|
device recycleValve = "d2";
|
|
|
|
const MAX_INTERIOR_PRESSURE = 80;
|
|
const MAX_INTERIOR_TEMP = 28c;
|
|
const MIN_INTERIOR_PRESSURE = 75;
|
|
const MIN_INTERIOR_TEMP = 25c;
|
|
const daylightSensor = 1076425094;
|
|
const growLight = hash("StructureGrowLight");
|
|
const wallLight = hash("StructureLightLong");
|
|
const lightRound = hash("StructureLightRound");
|
|
|
|
let shouldPurge = false;
|
|
|
|
loop {
|
|
let interiorPress = greenhouseSensor.Pressure;
|
|
let interiorTemp = greenhouseSensor.Temperature;
|
|
|
|
shouldPurge = (
|
|
interiorPress > MAX_INTERIOR_PRESSURE ||
|
|
interiorTemp > MAX_INTERIOR_TEMP
|
|
) || shouldPurge;
|
|
|
|
emergencyRelief.On = shouldPurge;
|
|
recycleValve.On = !shouldPurge;
|
|
|
|
if (shouldPurge && (interiorPress < MIN_INTERIOR_PRESSURE && interiorTemp < MIN_INTERIOR_TEMP)) {
|
|
shouldPurge = false;
|
|
}
|
|
|
|
let solarAngle = lb(daylightSensor, "SolarAngle", "Average");
|
|
let isDaylight = solarAngle < 90;
|
|
|
|
sb(growLight, "On", isDaylight);
|
|
sb(wallLight, "On", !isDaylight);
|
|
sb(lightRound, "On", !isDaylight);
|
|
} |