akihex

collectRemoteData

Mar 14th, 2014
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local args = {...}
  2. local channelList = args
  3. local event, modemSide, senderChannel, replyChannel, message, senderDistance
  4.  
  5. local mon0 = peripheral.wrap("monitor_2")
  6. local modem = peripheral.wrap("left")
  7.  
  8. for _,num in pairs(channelList) do modem.open(tonumber(num)) end
  9.  
  10. local amount = 0
  11. local cap = -1
  12.  
  13. local prodTank = 0
  14. local tank_ratio = {0, 0, 0, 0}
  15. local delta = {0, 0, 0, 0, 0, 0}
  16. local energy = {0, 0, 0, 0, 0, 0}
  17. --local delay = {1, 1, 1, 1, 1, 1}
  18.  
  19. mon0.clear()
  20. mon0.setTextScale(1.5)
  21. mon0.setCursorPos(1,1)
  22. mon0.write("Gas Turbines 01 - 03")
  23. --mon0.setTextScale(1)
  24. --mon0.setCursorPos(1,3)
  25. --mon0.write("Jet Fuel Production:")
  26. mon0.setCursorPos(1,3)
  27. mon0.write("Fractionator: ")
  28. mon0.setCursorPos(1,4)
  29. mon0.write("Tanks  01-04: ")
  30. mon0.setCursorPos(1,5)
  31. mon0.write("Cells  01-06:")
  32.  
  33. local index = 1
  34.  
  35. while true do
  36.  
  37.   event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  38.  
  39.   amount = (type(message) == "table") and (message.amount and message.amount or 0) or 0
  40.   cap = (type(message) == "table") and (message.capacity and message.capacity or -1) or -1
  41.  
  42.   if senderChannel == tonumber(channelList[1]) then    
  43.     mon0.setCursorPos(1,3)
  44.     mon0.clearLine()
  45.     prodTank = math.floor(amount/cap*10000)/100
  46.     mon0.write("Fractionator: ")
  47.     if prodTank > 95 then mon0.setTextColor(colors.green)
  48.     elseif prodTank > 90 then mon0.setTextColor(colors.orange)
  49.     else mon0.setTextColor(colors.red)
  50.     end
  51.     mon0.write(prodTank.."%")
  52.     mon0.setTextColor(colors.white)
  53.   else
  54.  
  55.     if #channelList > 4 then
  56.       index = -1
  57.       for i = 2,5 do if senderChannel == tonumber(channelList[i]) then index = i-1; break; end; end
  58.       if index > 0 and index < 5 then
  59.         mon0.setCursorPos(1,4)
  60.         mon0.clearLine()
  61.         tank_ratio[index] = math.floor(amount/cap*100)/100
  62.         --mon0.write(string.format("Tanks  01-04: %.2f %.2f %.2f %.2f", tank_ratio[1], tank_ratio[2], tank_ratio[3], tank_ratio[4]))
  63.         mon0.write("Tanks  01-04: ")
  64.         for i = 1,4 do
  65.           if tank_ratio[i] < 0.9 then mon0.setTextColor(colors.red)
  66.           elseif tank_ratio[i] < 0.98 then mon0.setTextColor(colors.orange)
  67.           else mon0.setTextColor(colors.green)
  68.           end
  69.           mon0.write(string.format("%.2f ", tank_ratio[i]))
  70.         end
  71.         mon0.setTextColor(colors.white)
  72.       end
  73.     end
  74.  
  75.     if #channelList > 10 then
  76.       index = -1
  77.       for i = 6,11 do if senderChannel == tonumber(channelList[i]) then index = i-5; break; end; end
  78.       if index > 0 and index < 7 then
  79.         energy[index] = message.energy
  80.         delta[index] = math.floor(message.delta/20/message.delay*100)/100
  81.         mon0.setCursorPos(1,6)
  82.         mon0.clearLine()
  83.         for i = 1,6 do
  84.           if energy[i] < 500000 then mon0.setTextColor(colors.orange)
  85.           else mon0.setTextColor(colors.green)
  86.           end
  87. -- get max energy!
  88.           mon0.write(string.format("%.2f ", math.floor(energy[i]/500000)/100))
  89.         end
  90.         mon0.setCursorPos(1,7)
  91.         mon0.clearLine()
  92.         for i = 1,6 do
  93.           if delta[i] < -100 then mon0.setTextColor(colors.red)
  94.       elseif delta[i] < 0 then mon0.setTextColor(colors.orange)
  95.           else mon0.setTextColor(colors.green)
  96.           end
  97.           mon0.write(string.format("%.2f ", delta[i]))
  98.         end
  99.         mon0.setTextColor(colors.white)
  100.       end
  101.     end
  102.  
  103.   end
  104.    
  105. end
Advertisement
Add Comment
Please, Sign In to add comment