View difference between Paste ID: 0TM9aRbw and rjfa4ymR
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