SHOW:
|
|
- or go back to the newest paste.
| 1 | -- For 1.7.10 versions of Thermal Expansion and EnderIO | |
| 2 | -- Monitors TE3 Energy cells and EnderIO capacitor banks and output redstone signals once energy storage drops below set limits. | |
| 3 | -- Will automatically detect direction of adjacent storage device and (optional) Advanced Monitors. If chosen, monitor format should be 1 high and 2 wide. Now also with wired modem support for both storage and monitors. Directly adjacent devices will take priority over any wired devices. | |
| 4 | -- Redstone signal for the engines will be output out the back of the computer. | |
| 5 | --More details: http://forum.feed-the-beast.com/threads/rhns-1-6-monster-build-journal-and-guide-collection.42664/page-15#post-718973 | |
| 6 | ||
| 7 | ||
| 8 | local upper = 0.90 --Upper limit for computer to stop transmitting redstone signal. 0.90=90% full. | |
| 9 | local lower = 0.10 --Lower limit for computer to start transmitting redstone signal. | |
| 10 | ||
| 11 | ||
| 12 | --Device detection | |
| 13 | isError=0 | |
| 14 | ||
| 15 | function detectDevice(DeviceName) | |
| 16 | DeviceSide="none" | |
| 17 | - | if peripheral.getType(v)==DeviceName then |
| 17 | + | |
| 18 | - | DeviceSide = v |
| 18 | + | if peripheral.getType(v) and string.find(peripheral.getType(v), DeviceName) then |
| 19 | - | break |
| 19 | + | --if peripheral.getType(v)==DeviceName then |
| 20 | - | end |
| 20 | + | --if string.find(peripheral.getType(v), DeviceName) then |
| 21 | DeviceSide = v | |
| 22 | break | |
| 23 | --end | |
| 24 | end | |
| 25 | end | |
| 26 | return(DeviceSide) | |
| 27 | end | |
| 28 | ||
| 29 | ||
| 30 | - | CellSide=detectDevice("cofh_thermalexpansion_energycell")
|
| 30 | + | |
| 31 | monitor="none" | |
| 32 | local peripheralList = peripheral.getNames() | |
| 33 | ||
| 34 | CellSide=detectDevice("tile_thermalexpansion_cell")
| |
| 35 | ||
| 36 | - | CellSide=detectDevice("tile_enderio_blockcapacitorbank_name")
|
| 36 | + | |
| 37 | cell=peripheral.wrap(CellSide) | |
| 38 | print ("TE Energy cell on the " .. CellSide .. " connected.")
| |
| 39 | else | |
| 40 | CellSide=detectDevice("tile_blockcapacitorbank_name")
| |
| 41 | if CellSide~="none" then | |
| 42 | - | if string.find(peripheralList[Index], "cofh_thermalexpansion_energycell") then |
| 42 | + | |
| 43 | print ("EnderIO capacitorbank on the " .. CellSide .. " connected.")
| |
| 44 | else | |
| 45 | - | elseif string.find(peripheralList[Index], "tile_enderio_blockcapacitorbank_name") then |
| 45 | + | |
| 46 | if string.find(peripheralList[Index], "tile_thermalexpansion_cell") then | |
| 47 | cell=peripheral.wrap(peripheralList[Index]) | |
| 48 | print ("TE Energy cell on wired modem: "..peripheralList[Index].." connected.")
| |
| 49 | elseif string.find(peripheralList[Index], "tile_blockcapacitorbank_name") then | |
| 50 | cell=peripheral.wrap(peripheralList[Index]) | |
| 51 | print ("EnderIO capacitorbank on wired modem: "..peripheralList[Index].." connected.")
| |
| 52 | end | |
| 53 | end --for | |
| 54 | if cell == "none" then | |
| 55 | print("No Energy storage found. Halting script!")
| |
| 56 | return | |
| 57 | end | |
| 58 | ||
| 59 | end | |
| 60 | end | |
| 61 | ||
| 62 | ||
| 63 | MonitorSide=detectDevice("monitor")
| |
| 64 | ||
| 65 | if MonitorSide~="none" then | |
| 66 | monitor=peripheral.wrap(MonitorSide) | |
| 67 | print ("Monitor on the " .. MonitorSide .. " connected.")
| |
| 68 | else | |
| 69 | for Index = 1, #peripheralList do | |
| 70 | if string.find(peripheralList[Index], "monitor") then | |
| 71 | monitor=peripheral.wrap(peripheralList[Index]) | |
| 72 | print ("Monitor on wired modem: "..peripheralList[Index].." connected.")
| |
| 73 | end | |
| 74 | end --for | |
| 75 | if monitor == "none" then | |
| 76 | print ("Warning - No Monitor attached, continuing without.")
| |
| 77 | end | |
| 78 | end | |
| 79 | ||
| 80 | --Main code | |
| 81 | redstone.setOutput("back", false) --Defaulting to off
| |
| 82 | ||
| 83 | --If monitor is attached, write data on monitor | |
| 84 | if monitor ~= "none" then | |
| 85 | monitor.clear() | |
| 86 | monitor.setBackgroundColour((colours.grey)) | |
| 87 | monitor.setCursorPos(1,4) | |
| 88 | monitor.write(" ON ")
| |
| 89 | monitor.setBackgroundColour((colours.green)) | |
| 90 | monitor.setCursorPos(5,4) | |
| 91 | monitor.write(" OFF ")
| |
| 92 | monitor.setBackgroundColour((colours.black)) | |
| 93 | end | |
| 94 | ||
| 95 | --Main loop | |
| 96 | while true do | |
| 97 | --Get storage values | |
| 98 | eNow = cell.getEnergyStored("unknown")
| |
| 99 | eMax = cell.getMaxEnergyStored("unknown")
| |
| 100 | ||
| 101 | --Compute ratio | |
| 102 | fill = (eNow / eMax) | |
| 103 | ||
| 104 | --If monitor is attached, write data on monitor | |
| 105 | if monitor ~= "none" then | |
| 106 | ||
| 107 | if eMax >= 10000000 then | |
| 108 | monitor.setCursorPos(11,2) | |
| 109 | monitor.write("Storage:")
| |
| 110 | monitor.setCursorPos(11,3) | |
| 111 | monitor.write(math.ceil(eNow/1000).."kRF") | |
| 112 | monitor.setCursorPos(11,4) | |
| 113 | monitor.write("Of:")
| |
| 114 | monitor.setCursorPos(11,5) | |
| 115 | monitor.write(math.ceil(eMax/1000).."kRF") | |
| 116 | else | |
| 117 | monitor.setCursorPos(11,2) | |
| 118 | monitor.write("Storage:")
| |
| 119 | monitor.setCursorPos(11,3) | |
| 120 | monitor.write(math.ceil(eNow)) | |
| 121 | monitor.setCursorPos(11,4) | |
| 122 | monitor.write("Of:")
| |
| 123 | monitor.setCursorPos(11,5) | |
| 124 | monitor.write(math.ceil(eMax)) | |
| 125 | end | |
| 126 | ||
| 127 | monitor.setCursorPos(1,2) | |
| 128 | monitor.write("Engines:")
| |
| 129 | end | |
| 130 | ||
| 131 | if fill > upper then | |
| 132 | --energylevel is over upper level, turning redstone signal off | |
| 133 | redstone.setOutput("back", false)
| |
| 134 | ||
| 135 | if monitor ~= "none" then | |
| 136 | monitor.setBackgroundColour((colours.grey)) | |
| 137 | monitor.setCursorPos(1,4) | |
| 138 | monitor.write(" ON ")
| |
| 139 | monitor.setBackgroundColour((colours.green)) | |
| 140 | monitor.setCursorPos(5,4) | |
| 141 | monitor.write(" OFF ")
| |
| 142 | monitor.setBackgroundColour((colours.black)) | |
| 143 | end | |
| 144 | ||
| 145 | elseif fill < lower then | |
| 146 | --energy level is below lower limit, turning redstone signal on | |
| 147 | redstone.setOutput("back", true)
| |
| 148 | ||
| 149 | if monitor ~= "none" then | |
| 150 | monitor.setBackgroundColour((colours.green)) | |
| 151 | monitor.setCursorPos(1,4) | |
| 152 | monitor.write(" ON ")
| |
| 153 | monitor.setBackgroundColour((colours.grey)) | |
| 154 | monitor.setCursorPos(5,4) | |
| 155 | monitor.write(" OFF ")
| |
| 156 | monitor.setBackgroundColour((colours.black)) | |
| 157 | end | |
| 158 | end | |
| 159 | ||
| 160 | ||
| 161 | sleep(1) | |
| 162 | end --while |