View difference between Paste ID: wUjM3Pva and 8HrdCuRd
SHOW: | | - or go back to the newest paste.
1
local function send(ch,msg)
2
    local modems = {peripheral.find("modem")}
3
    local ch = tonumber(ch)
4
    for k,v in pairs(modems) do
5
        v.open(ch)
6
    end
7
    for k,v in pairs(modems) do
8
        v.transmit(ch,ch,msg)
9
    end
10
end
11
12
local function close(ch)
13
    ch = tonumber(ch)
14
    local modems = {peripheral.find("modem")}
15
    for k,v in pairs(modems) do
16
        v.close(ch)
17
    end
18
end
19
20
local function selectProfile()
21
    local profiles = fs.list("/rrp")
22
    for i=1,#profiles do
23
        print(i .. ") " .. profiles[i])
24
    end
25
    print("Select")
26
    local sel = tonumber(read())
27
    local prof = {}
28
    local handle = fs.open("/rrp/" .. profiles[sel],"r")
29
    prof.ch = handle.readLine()
30
    prof.head = handle.readLine()
31
    handle.close()
32
    return prof
33
end
34
35
local function add()
36
    print("Sync key?")
37
    local key = read()
38
    print("Profile name?")
39
    local name = read()
40
    --send(65000,key)
41
    local function wait()
42
        sleep(5)
43
        error("Synchronisation failed!")
44
    end
45
    local function sync()
46
        local modems = {peripheral.find("modem")}
47
        for k,v in pairs(modems) do v.open(65000) end
48
        send(65000,key)
49
        while true do
50
            local r = {os.pullEvent("modem_message")}
51
            local data = textutils.unserialise(r[5])
52-
            if data.identify then
52+
			if data then
53-
                if data.identify == key then
53+
            	if data.identify then
54-
                    print("Received signal")
54+
                	if data.identify == key then
55-
                    local handle = fs.open("/rrp/" .. name,"w")
55+
                    	print("Received signal")
56-
                    handle.writeLine(data.channel)
56+
                    	local handle = fs.open("/rrp/" .. name,"w")
57-
                    handle.writeLine(data.header)
57+
                    	handle.writeLine(data.channel)
58-
                    handle.close()
58+
                    	handle.writeLine(data.header)
59-
                    close(65000)
59+
                    	handle.close()
60-
                    break
60+
                    	close(65000)
61-
                end
61+
                    	break
62-
            end
62+
                	end
63
            	end
64
			end
65
        end
66
    end
67
    parallel.waitForAny(sync,wait)
68
    sleep(2)
69
end
70
71
local function on()
72
    local prof = selectProfile()
73
    send(prof.ch,prof.head .. "on")
74
    print("Done")
75
    sleep(1)
76
    close(prof.ch)
77
end
78
79
local function off()
80
    local prof = selectProfile()
81
    send(prof.ch,prof.head .. "off")
82
    print("Done")
83
    sleep(1)
84
    close(prof.ch)
85
end
86
87
local function click()
88
    local prof = selectProfile()
89
    send(prof.ch,prof.head .. "on")
90
    sleep(1)
91
    send(prof.ch,prof.head .. "off")
92
    print("Done")
93
    sleep(1)
94
    close(prof.ch)
95
end
96
97
local function main()
98
    while true do
99
    term.clear()
100
    term.setCursorPos(1,1)
101
    print("RemoteRedstone  Client by Rahph")
102
    print("")
103
    print("1) Add profile")
104
    print("2) Enable signal on profile")
105
    print("3) Disable signal on profile")
106
    print("4) Simulate button press on profile\n")
107
    print("9) Exit")
108
    local sel = read()
109
    if sel == "1" then
110
        add()
111
    elseif sel == "2" then
112
        on()
113
    elseif sel == "3" then
114
        off()
115
    elseif sel == "4" then
116
        click()
117
    elseif sel == "9" then
118
        break
119
    else
120
        print("Uhhhh... no!")
121
        sleep(2)
122
    end
123
    end
124
end
125
main()