local component = require("component") local dnsclient = require("dnsclient") local serialization = require("serialization") local thread = require("thread") local redstone = nil if component.isAvailable("redstone") then redstone = component.redstone else computer.beep(400,3) error("Redstone Card Required") end local modem = nil if component.isAvailable("modem") then modem = component.modem else computer.beep(600,3) error("Wireless Network Card Required") end local control_server_addr = nil local reactor = component.nc_fission_reactor local threshold = 0.9 local loop_thread = nil local isRunning = false local str = "" for k,v in pairs(reactor) do str = str .. k .. "()\n" end function buildPacket() local packet = { type="REACT", status=reactor.isProcessing(), reactor_type="FISSION", powerData = { tick = 0.0, max = 1728000, curr = reactor.getEnergyStored() }, fuelData = { name = reactor.getFissionFuelName(), time_left = reactor.getCurrentProcessTime() }, heatData = { tick = reactor.getReactorCoolingRate(), max = reactor.getMaxHeatLevel(), curr = reactor.getHeatLevel() }, test = str } print(reactor.isProcessing()) if reactor.isProcessing() == true then packet.powerData.tick = reactor.getReactorProcessPower() - reactor.getEnergyChange() else packet.powerData.tick = reactor.getEnergyChange() end modem.send(control_server_addr, 1001, serialization.serialize(packet)) end local function loop() while(true) do local current_power = reactor.getEnergyStored() if (current_power / 1728000) < 0.9 then if not reactor.isProcessing() then reactor.activate() end elseif (current_power / 1728000) > 0.95 then if reactor.isProcessing() then reactor.deactivate() end end os.sleep(0.5) buildPacket() end end function start() isRunning = true redstone.setWakeThreshold(1) modem.open(1001) print(dnsclient.declare("reactor_fission_1")) control_server_addr = dnsclient.resolve("control_server") reactor = component.nc_fission_reactor loop() end function stop() isRunning = false loop_thread:kill() end