Advertisement
Guest User

reactorControl

a guest
Aug 22nd, 2014
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- RD CC Reactor Control
  2. -- v 0.0.3
  3.  
  4. -- Dependancies:
  5. --   rdCore
  6.  
  7. -- Thank you for choosing this Big Reactors reactor
  8. -- control program for automating it with CC.
  9.  
  10. -- User Settings
  11.  
  12. -- Stored Power Threshold
  13. -- Set a custom stored power percent to lower the
  14. -- reactor cores to in order to save fuel.
  15.  
  16. local reacStTh = 90 -- 1/100 Default: 90
  17.  
  18. -- Reactor Shutdown Threshold
  19. -- Will shut down after a particular stored
  20. -- percent to conserve fuel. Must be set equal or
  21. -- higher then Stored Power Threshold.
  22.  
  23. local reacOf = false -- true/false Default: false
  24.  
  25. local reacOfTh = 95 -- 10/100 Default: 95
  26.  
  27. -- Reactor Name
  28. -- If a monitor is found, a name may be displayed
  29. -- for the reactor. **Currently Not Functional**
  30.  
  31. local reacName = ""
  32.  
  33. -- Debug Feedback
  34. -- For double-checking numbers through the monitor.
  35. -- Should not be needed unless issues or discrepancies
  36. -- arrise.
  37.  
  38. local debugF = false -- true/false Default: false
  39.  
  40. --====== DO NOT EDIT BELOW THIS POINT ======--
  41.  
  42.  
  43.  
  44. -- Reactor Variables
  45.  
  46. function reUpdate()
  47.  
  48.     reEn = tonumber(reactor.getEnergyStored())
  49.     dBR("Reactor Stored Energy: "..reEn.." rf")
  50.     reOn = reactor.getActive()
  51.     if reOn == true then
  52.         dBR("Reactor State: Online")
  53.     else
  54.         dBR("Reactor State: Offline")
  55.     end
  56.     reFuel = tonumber(reactor.getFuelAmount())
  57.     dBR("Reactor Fuel: "..reFuel.." mB")
  58.     reEnPr = tonumber(reactor.getEnergyProducedLastTick())
  59.     dBR("Reactor Energy Produced: "..reEnPr.." rf/t")
  60.     reWa = tonumber(reactor.getWasteAmount())
  61.     dBR("Reactor Waste: "..reWa.." mB")
  62.     reFuWa = tonumber(reactor.getFuelAmountMax())
  63.     dBR("Reactor Fuel/Waste Contained: "..reFuWa.." mB")
  64.     reEnPerc = math.floor((reEn/10000000)*100)
  65.     dBR("Reactor Energy Filled Percentage: "..reEnPerc.."%")
  66.     reFTemp = tonumber(reactor.getFuelTemperature())
  67.     dBR("Reactor Fuel Temp: "..reFTemp.." C")
  68.     reCTemp = tonumber(reactor.getCasingTemperature())
  69.     dBR("Reactor Casing Temp: "..reFTemp.." C")
  70.     reTemp = ((reCTemp+reFTemp)/2)
  71.     dBR("Reactor Avg Temp: "..reTemp.." C")
  72.  
  73.  
  74. end
  75.  
  76. -- Debug readout function
  77.  
  78. function dBR(var)
  79.     if debugF == true then
  80.         print(var)
  81.     end
  82. end
  83.  
  84. -- Control Rod Controls
  85.  
  86. local function reCtrlRod()
  87.     --reUpdate()
  88.     if reEnPerc ~= reacStTh then
  89.         dBR("Changing Ctrl Rod Levels to "..reEnPerc.."%.")
  90.         reactor.setAllControlRodLevels(reEnPerc)
  91.     end
  92. end
  93.  
  94. -- Power Threshold
  95.  
  96. function rePowThr()
  97.     dBR("Checking Power Threshold")
  98.     local rtest = reactor.getActive()
  99.     --reUpdate()
  100.     dBR(reEnPerc.." %")
  101.     dBR(reacOfTh.." %")
  102.     if (reEnPerc >= reacOfTh) and (rtest == true) then
  103.         dBR("Reactor Shutdown In Progress")
  104.         reactor.setActive(false)
  105.         rtest = reactor.getActive()
  106.         if rtest == true then
  107.             while reactor.getActive() == true do
  108.                 dBR("Reactor Shutdown Failed. Retrying.")
  109.                 rtest = reactor.getActive()
  110.                 sleep(3)
  111.             end
  112.  
  113.         end
  114.     elseif reEnPerc < (reacOfTh-5) then
  115.         dBR("Reactor Activation in Progress")
  116.         reactor.setActive(true)
  117.         rtest = reactor.getActive()
  118.         if rTest == false then
  119.             while reactor.getActive() == true do
  120.                 dBR("Reactor Startup Failed. Retrying.")
  121.                 rtest = reactor.getActive()
  122.                 sleep(3)
  123.             end
  124.         end
  125.     end
  126. end
  127.  
  128. -- Adv Monitor Functionality
  129.  
  130. -- monitor variables
  131.  
  132. maxX, maxY = term.getSize()
  133.  
  134. -- monitor functions
  135.  
  136. function updateScreen()
  137.     if monTest ~= nil then
  138.         reUpdate()
  139.         mon.clear()
  140.         reacTitle()
  141.         reacEnergy()
  142.         reacReadout()
  143.     end
  144. end
  145.  
  146. function reacTitle()
  147.     local progTitle = "RD Reactor Control ver "..progVer
  148.     local reacTitle = reacName
  149.     mon.setCursorPos(maxX/2-string.len(progTitle)/2,2)
  150.     mon.setTextColor(colors.purple)
  151.     mon.write(progTitle)
  152.     if reacName ~= nil then
  153.         mon.setCursorPos(maxX/2-string.len(reacTitle)/2,3)
  154.         mon.setTextColor(colors.purple)
  155.         mon.write(reacTitle)
  156.     end
  157. end
  158.  
  159. function put(text,x,y,color)
  160.     term.setCursorPos(x,y)
  161.     term.setTextColor(color or 1)
  162.     term.write(text)
  163. end
  164.  
  165. function reacEnergy()
  166.     local enTitle = "Reactor RF Stored"
  167.     local enAmt = reEn.." RF"
  168.     local enPerc = reEnPerc.." %"
  169.    
  170.     put(enTitle,maxX/2-string.len(enTitle), 5, colors.blue)
  171.     put(enTitle,maxX/2-string.len(enAmt.." / "..enPerc), 7, colors.blue)
  172.    
  173.     paintutils.drawLine(8,9,28,9,colors.white)
  174.     paintutils.drawLine(8,9,(20*(reEnPerc/100))+8,9,colors.red)
  175.     mon.setBackgroundColor(colors.black)
  176.  
  177. end
  178.  
  179. function reacReadout()
  180.  
  181. end
  182.  
  183.  
  184. -- Find Reactor & Monitor Peripherals
  185.  
  186. function getPeripherals()
  187.  
  188.     reactor = peripheral.wrap(pSearch("BigReactors-Reactor"))
  189.     monTest = peripheral.find("monitor")
  190.  
  191.     if reactor.getConnected() == true then
  192.         dBR("Reactor Connected")
  193.     else
  194.         print("Reactor Not Found")
  195.         term.setTextColor(colors.red)
  196.         print("Please relocate this computer next to the reactor's computer port!")
  197.         term.setTextColor(colors.white)
  198.         --break
  199.     end
  200.     if monTest ~= nil then
  201.         mon = peripheral.wrap(pSearch("monitor"))
  202.         dBR("Monitor Found")
  203.     else
  204.         dBR("Monitor Not Found")
  205.     end
  206.  
  207. end
  208.    
  209. -- Main Program
  210.  
  211. local rdCTest = fs.exists("rdCore")
  212. local rdCPB = "vKDJH93Y"
  213. progVer = "0.0.3"
  214. local req = 0
  215. local runs = 0
  216. local reactor
  217. local mon
  218.  
  219. if rdCTest == false then
  220.     print("rdCore Api Not Found. Installing embedded version.")
  221.     shell.run("pastebin", "get", rdCPB, "rdCore")
  222.     shell.run("rdCore")
  223.     rdCTest = fs.exists("rdCore")
  224.     if rdCTest == true then
  225.         add2start("reactorControl")
  226.         print("rdCore Api ver "..rdCV.." Installed Successfully")
  227.         req = 1
  228.     else
  229.         print("rdCore Api Unavailable. RD Reactor Control Unable to Start")
  230.     end
  231. else
  232.     print("rdCore Api Found")
  233.     req = 1
  234. end
  235.  
  236. getPeripherals()
  237.  
  238. local temp = ("RD Reactor Control ver: "..progVer.." Initialized Successfully")
  239.  
  240.   while true do
  241.     if runs == 0 then
  242.         if req == 0 then
  243.             break
  244.         else
  245.             print(temp)
  246.             runs = runs + 1
  247.         end
  248.     elseif runs == 5 then
  249.         updateScreen()
  250.         runs = 1
  251.     else
  252.         runs = runs + 1
  253.     end
  254.     reUpdate()
  255.     reCtrlRod()
  256.     if reacOf == true then
  257.         rePowThr()
  258.     end
  259.     sleep(2)
  260.   end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement