View difference between Paste ID: pjtNhW5g and fNzDbp6N
SHOW: | | - or go back to the newest paste.
1
-- Valve, Monitor & Wireless Modem
2
local val = peripheral.wrap("back")
3
local mon = peripheral.wrap("top")
4
local wmod = peripheral.wrap("bottom")
5
6
local warning = 20       -- Warning level in %
7
local cap                -- Tank capacity
8
local amount             -- Amount liquid in tank
9
local percentfull        -- Percent liquid in tank
10
local lastpercent = 1000 -- Percent last loop
11
local sendmsg            -- Message to send
12
local sleeptime          -- How long to sleep
13
local sendFreq = 3       -- Modem Frequency
14
local content = "Water"  -- What is in tank?
15
-- Make sure frequency match the main computer
16
17
-- Set warning lamp to off
18
redstone.setOutput("right", false)
19
20
21-
-- Main prog loop, never stop
21+
-- Loop
22
while true do
23
  mon.clear()
24
  mon.setCursorPos(1,1)
25
26-
  -- Fill table with data from tank valve
26+
  -- Valve data
27-
  tanksTable = val.getTanks("WhatIsThis")
27+
  results = val.getTankInfo("back")
28
  tanksTable = results
29
  maintank = tanksTable[1]
30
31
  -- Get values for tank capacity and amount
32
  cap = maintank.capacity / 1000   -- in buckets
33
  amount = maintank.amount    -- in millibuckets
34
  
35
  -- If tank is empty, to avoid math issues with 0
36
  if amount == nil then
37
    amount = 0
38
    percentfull = 0
39
  else
40
    -- Use math.floor to convert to integers
41
    amount = math.floor(amount / 1000)
42
    percentfull = math.floor(100 * amount / cap)
43
  end
44-
  -- Self explanatory :)
44+
45
  -- Monitor stuffs
46
  mon.write(content)
47
  mon.setCursorPos(1,2)
48
  mon.write("Amount: " ..amount .."/"..cap .." B.")
49
  mon.setCursorPos(1,3)
50
  mon.write("Amount: " ..percentfull .."%  ")
51
52-
  if percentfull == lastpercent then
52+
53-
    print("Still " ..percentfull .. "%, nothing sent.")
53+
  if percentfull ~= lastpercent then
54
    sendmsg = content ..": " ..percentfull .." %"
55-
    -- If value changed, send to main!
55+
56
  end
57
58-
    print("Sent: " ..sendmsg)
58+
59
  lastpercent = percentfull
60
61
  -- Warning control, local lamp
62
  mon.setCursorPos(1,5)
63
  
64
  if percentfull < warning then
65
    redstone.setOutput("right", true)
66
    mon.write("Less than " ..warning .."% full")
67
    sleep(1)
68
    redstone.setOutput("right", false)
69
    sleeptime = 1 
70
  else
71
    -- Above warning level, sleep longer
72
    mon.write("More than " ..warning .."% full")
73
    sleeptime = 10
74
  end
75
76
  sleep(sleeptime)    
77
end