diff --git a/react.lua b/react.lua new file mode 100644 index 0000000..4ab9ffd --- /dev/null +++ b/react.lua @@ -0,0 +1,84 @@ +--regulate in between these in normal operation +NORMAL_THRESHOLD_U = 8000000 +NORMAL_THRESHOLD_L = 7000000 +--control rod pos for normal operation +NORMAL_ROD_POS = 81 + +--proportionally increase production when energy +--storage drops below this level +--(by removing control rods) +HIGH_THRESHOLD = 6000000 + + +local active = false +local ctrl_rods = NORMAL_ROD_POS + +local reactor = peripheral.wrap("back") +local mon = peripheral.wrap("right") + +print("Monitoring reactor...") + +while (true) +do + --setup monitor + mon.clear() + + --get reactor energy + local energy = reactor.getEnergyStored() + --display + mon.setCursorPos(1, 1) --why is there no print() ??? + mon.write(energy) + mon.write("RF") + + + if (energy > NORMAL_THRESHOLD_U) + then + active = false + else + if (energy < NORMAL_THRESHOLD_L) + then + active = true + if (energy < HIGH_THRESHOLD) + then + --proportional control + ctrl_rods = NORMAL_ROD_POS * (energy / HIGH_THRESHOLD) + end + end + end + + --actually set state + mon.setCursorPos(1, 2) + if (active) + then + reactor.setActive(true) + mon.write("On") + else + reactor.setActive(false) + mon.write("Off") + end + + mon.setCursorPos(1, 4) + reactor.setAllControlRodLevels(ctrl_rods) + mon.write(ctrl_rods) + mon.write("%") + + + --display power produced + mon.setCursorPos(1, 3) + mon.write(math.floor(reactor.getEnergyProducedLastTick())) + mon.write("RF/t") + + + --also check if fuel has run out + --(if the fuel inside the reactor isn't + --getting refilled anymore) + + local deltaFuel = reactor.getFuelAmountMax() - reactor.getFuelAmount() + if (deltaFuel > 1000) --more than 1 bucket + then + mon.setCursorPos(1, 5) + mon.write("REFUEL!") + end + + sleep(1) +end diff --git a/recv_file.lua b/recv_file.lua new file mode 100644 index 0000000..20b1115 --- /dev/null +++ b/recv_file.lua @@ -0,0 +1,22 @@ +local sides = peripheral.getNames() +for i = 1, #sides do + if peripheral.getType(sides[i]) == "modem" then + modemSide = sides[i] + break + end +end + +rednet.open(modemSide) + +id, msg, dist = rednet.receive() +print("Received data:") +term.write("Filename: ") +name = tostring(read()) + +print(msg) +content = textutils.unserialize(msg) +local file = fs.open(name, "w") +file.write(content) +file.close() + +rednet.close(modemSide) diff --git a/send_file.lua b/send_file.lua new file mode 100644 index 0000000..422a841 --- /dev/null +++ b/send_file.lua @@ -0,0 +1,33 @@ +local sides = peripheral.getNames() +for i = 1, #sides do + if peripheral.getType(sides[i]) == "modem" then + modemSide = sides[i] + break + end +end + +rednet.open(modemSide) + +term.write("Path: ") +path = tostring(read()) + +local file = fs.open(path, "r") +content = file.readAll() +data = textutils.serialize(content) + +term.write("Receiver id: ") +id = tonumber(read()) + +print("Initialize receiver please!") +print("Press 's' to send") + +local event, c = os.pullEvent("char") +if c == "s" then + print("Sending...") + print(id) + rednet.send(id, data) +else + print("Aborted.") +end + +rednet.close(modemSide) \ No newline at end of file