local state = false local modemSide = "back" local modem = peripheral.wrap(modemSide) local width, height = term.getSize() local data = {"info","off","Temp",0,"Coolant",0,"Damage",0,"Waste",0} local yh,yb = math.floor(height/2+3), height-1 local xg,xd = 2, width-1 local buttonY = math.floor(3 * height / 4) remoteID = 14 rednet.open(modemSide) local function sendData(Data) rednet.send(remoteID, Data) end local function drawButton(state, text) --term.clear() term.setCursorPos(xg,yh) local bgColor = colors.red local fgColor = colors.white if state then bgColor = colors.green fgColor = colors.black end for y = yh, yb do term.setCursorPos(xg,y) term.setBackgroundColor(bgColor) term.write(string.rep(" ", xd - xg + 1)) end local textLen = #text local x = math.floor((width - textLen) / 2) + 1 local y = math.floor((yh + yb) / 2) term.setCursorPos(x, y) term.setTextColor(fgColor) term.write(text) -- Reset colors term.setBackgroundColor(colors.black) term.setTextColor(colors.white) end local function chState() while true do if state then drawButton(true, "ON") else drawButton(false, "OFF") end local event, button, x, y = os.pullEvent("mouse_click") if y >= yh and y <= yb and x >= xg and x <= xd then state = not state sendData(state) end end end local function dataDisplay() while true do -- Affichage simple des données sous forme clé-valeur term.setCursorPos(1,1) term.setBackgroundColor(colors.black) term.setTextColor(colors.white) term.clearLine() term.write("Données reçues :") local line = 2 for i=1, #data, 2 do term.setCursorPos(1, line) term.clearLine() term.write(string.format("%s : %s", tostring(data[i]), tostring(data[i+1]))) line = line + 1 end sleep(1) -- mettre à jour toutes les 1s end end local function dataUpdate() while true do local senderID, message = rednet.receive() if senderID == remoteID and type(message) == "table" then data = message end end end local function main() parallel.waitForAny(dataUpdate, chState, dataDisplay) end main()