Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --reactor props
- local reactor = peripheral.wrap("back");
- local monitor = peripheral.wrap("top");
- local turnedOn = reactor.getActive();
- --rf rate check
- local PrevEnergyLevel = reactor.getEnergyStored();
- local prevCheckTime = os.clock();
- local prevRfRate = nil;
- --reactor cycle time
- local prevShutdownTime = nil;
- local prevCycleTime = nil;
- print("Starting reactor monitoring")
- while true do
- print("Checking status")
- local currentEnergy = reactor.getEnergyStored()
- local curTime = os.clock()
- --Check energy status
- if turnedOn == false and currentEnergy <= 1000000 then
- reactor.setActive(true);
- turnedOn = true;
- print("Turned on Reactor")
- elseif turnedOn == true and currentEnergy >= 7000000 then
- reactor.setActive(false);
- turnedOn = false;
- print("Turned off Reactor")
- --get cycle length
- if prevShutdownTime ~= nil then
- prevCycleTime = curTime - prevShutdownTime
- end
- prevShutdownTime = os.clock()
- end
- --check fuel status
- if redstone.getAnalogInput("right") <= 2 then
- redstone.setOutput("left", true);
- print("Alert: low fuel!")
- else
- redstone.setOutput("left", false);
- end
- --Get status
- --Get rate of RF usage
- prevRfRate = nil
- if (curTime ~= prevCheckTime) then
- prevRfRate = (currentEnergy - PrevEnergyLevel)/(curTime - prevCheckTime) --change in rf in rf/second
- prevRfRate = prevRfRate/20 --change in rf in rf/tick
- --set new variables
- prevCheckTime = curTime
- PrevEnergyLevel = currentEnergy
- end
- --display status on monitor
- --Status: On/Off
- --Rate of RF: {rate}
- --Current cycle Length: {length}
- --Previous Cycle Length: {length}
- --reset monitor
- monitor.clear()
- monitor.setCursorPos(1,2)
- monitor.setTextScale(0.5)
- monitor.setTextColor(colors.white)
- --Show status text
- monitor.write("Status: ")
- if turnedOn then
- monitor.setTextColor(colors.lime)
- monitor.write("On")
- else
- monitor.setTextColor(colors.red)
- monitor.write("Off")
- end
- --show rf text
- monitor.setCursorPos(1,3)
- monitor.setTextColor(colors.white)
- monitor.write("Rate of RF: ")
- if prevRfRate ~= nil then
- if prevRfRate <= 0 then
- monitor.setTextColor(colors.red)
- monitor.write("-" .. tostring(prevRfRate))
- else
- monitor.setTextColor(colors.lime)
- monitor.write("-" .. tostring(prevRfRate))
- end
- else
- monitor.setTextColor(colors.magenta)
- monitor.write("Data not avaliable yet")
- end
- --show cur cycle text
- monitor.setCursorPos(1,4)
- monitor.setTextColor(colors.white)
- monitor.write("Current Cycle Length: ")
- if prevShutdownTime ~= nil then
- monitor.write(tostring(curTime - prevShutdownTime) .. " seconds")
- else
- monitor.setTextColor(colors.magenta)
- monitor.write("Data not avaliable yet")
- end
- --show cycle text
- monitor.setCursorPos(1,5)
- monitor.setTextColor(colors.white)
- monitor.write("Prev Cycle Length: ")
- if prevCycleTime ~= nil then
- monitor.write(tostring(prevCycleTime) .. " seconds")
- else
- monitor.setTextColor(colors.magenta)
- monitor.write("Data not avaliable yet")
- end
- --Does sleep
- if turnedOn == true then
- sleep(3);
- else
- sleep(60);
- end
- end
Add Comment
Please, Sign In to add comment