Added quantum-beacon.
This commit is contained in:
		
							parent
							
								
									e165b16064
								
							
						
					
					
						commit
						87ba71cd76
					
				| 
						 | 
					@ -0,0 +1,42 @@
 | 
				
			||||||
 | 
					--[[
 | 
				
			||||||
 | 
					    Quantum Beacon
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A script that runs on computers connected to an AE quantum ring to ping their
 | 
				
			||||||
 | 
					status back to a central computer.
 | 
				
			||||||
 | 
					]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local SEND_CHANNEL = 100
 | 
				
			||||||
 | 
					local RECEIVE_CHANNEL = 101
 | 
				
			||||||
 | 
					local NODE_NAME = "TMP"
 | 
				
			||||||
 | 
					local TRANSMIT_INTERVAL = 15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local function getPeripheralOrWait(name)
 | 
				
			||||||
 | 
					    local p = nil
 | 
				
			||||||
 | 
					    repeat
 | 
				
			||||||
 | 
					        p = peripheral.find(name)
 | 
				
			||||||
 | 
					        if p == nil then
 | 
				
			||||||
 | 
					            print("Error: Couldn't find an attached peripheral with name \"" .. name .. "\". Attach one please.")
 | 
				
			||||||
 | 
					            os.pullEvent("peripheral")
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					    until p ~= nil
 | 
				
			||||||
 | 
					    return p
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- We consider a foreign quantum link to be connected if we detect crafting
 | 
				
			||||||
 | 
					-- CPUs on the network, since subnetworks shouldn't ever have these.
 | 
				
			||||||
 | 
					local function meSystemConnected(meBridge)
 | 
				
			||||||
 | 
					    local craftingCpus = meBridge.getCraftingCPUs()
 | 
				
			||||||
 | 
					    return craftingCpus ~= nil and #craftingCpus > 0
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while true do
 | 
				
			||||||
 | 
					    local modem = getPeripheralOrWait("modem")
 | 
				
			||||||
 | 
					    local meBridge = getPeripheralOrWait("meBridge")
 | 
				
			||||||
 | 
					    local packet = {
 | 
				
			||||||
 | 
					        node = NODE_NAME,
 | 
				
			||||||
 | 
					        date = os.date("*t"),
 | 
				
			||||||
 | 
					        online = meSystemConnected(meBridge)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    modem.transmit(SEND_CHANNEL, RECEIVE_CHANNEL, packet)
 | 
				
			||||||
 | 
					    os.sleep(TRANSMIT_INTERVAL)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Loading…
	
		Reference in New Issue