milo wip
This commit is contained in:
@@ -184,6 +184,11 @@ table.sort(Milo.tasks, function(a, b)
|
||||
return a.priority < b.priority
|
||||
end)
|
||||
|
||||
debug('Tasks\n-----')
|
||||
for _, task in ipairs(Milo.tasks) do
|
||||
debug('%d: %s', task.priority, task.name)
|
||||
end
|
||||
|
||||
Milo:clearGrid()
|
||||
|
||||
local page = UI:getPage('listing')
|
||||
|
||||
62
milo/MiloMonitor.lua
Normal file
62
milo/MiloMonitor.lua
Normal file
@@ -0,0 +1,62 @@
|
||||
_G.requireInjector(_ENV)
|
||||
|
||||
local Util = require('util')
|
||||
|
||||
local colors = _G.colors
|
||||
local device = _G.device
|
||||
|
||||
local args = { ... }
|
||||
local mon = device[args[1] or 'monitor'] or error('Syntax: debug <monitor>')
|
||||
local config = Util.readTable('/usr/config/milo') or error('Milo is not configured')
|
||||
|
||||
local row
|
||||
local monWidth, monHeight = mon.getSize()
|
||||
local machines = { }
|
||||
|
||||
local function write(x, y, s, bg, fg)
|
||||
mon.setCursorPos(x, y)
|
||||
mon.setBackgroundColor(bg)
|
||||
if fg then
|
||||
mon.setTextColor(fg)
|
||||
end
|
||||
mon.write(s)
|
||||
end
|
||||
|
||||
local function progress(y, percent)
|
||||
local width = math.ceil(percent / 100 * monWidth)
|
||||
write(2, y, string.rep(' ', monWidth - 2), colors.gray)
|
||||
write(2, y, string.rep(' ', width), colors.lime)
|
||||
end
|
||||
|
||||
local function draw(machine, percent)
|
||||
write(2, row, machine.displayName or machine.name, colors.black, colors.yellow)
|
||||
progress(row + 1, percent)
|
||||
row = row + 3
|
||||
end
|
||||
|
||||
local function redraw()
|
||||
row = 1
|
||||
mon.setBackgroundColor(colors.black)
|
||||
mon.clear()
|
||||
for _,machine in ipairs(machines) do
|
||||
local dev = device[machine.name]
|
||||
if dev then
|
||||
local percent = 50
|
||||
if machine.mtype == 'storage' then
|
||||
percent = Util.size(dev.list()) / dev.size() * 100
|
||||
end
|
||||
draw(machine, percent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for _, v in pairs(config.remoteDefaults) do
|
||||
table.insert(machines, v)
|
||||
end
|
||||
|
||||
table.sort(machines, function(a, b)
|
||||
return (a.displayName or a.name) < (b.displayName or b.name)
|
||||
end)
|
||||
|
||||
mon.setTextScale(.5)
|
||||
redraw()
|
||||
@@ -7,6 +7,27 @@ local Util = require('util')
|
||||
local colors = _G.colors
|
||||
local socket
|
||||
|
||||
local options = {
|
||||
user = { arg = 'u', type = 'string',
|
||||
desc = 'User name associated with bound manipulator' },
|
||||
server = { arg = 's', type = 'number',
|
||||
desc = 'ID of Milo server' },
|
||||
help = { arg = 'h', type = 'flag', value = false,
|
||||
desc = 'Displays the options' },
|
||||
}
|
||||
|
||||
local args = { ... }
|
||||
if not Util.getOptions(options, args) then
|
||||
print()
|
||||
error('Invalid arguments')
|
||||
end
|
||||
|
||||
if not options.user.value or not options.server.value then
|
||||
Util.showOptions(options)
|
||||
print()
|
||||
error('Invalid arguments')
|
||||
end
|
||||
|
||||
local page = UI.Page {
|
||||
menuBar = UI.MenuBar {
|
||||
buttons = {
|
||||
@@ -90,7 +111,10 @@ function page:sendRequest(data)
|
||||
|
||||
for _ = 1, 2 do
|
||||
if not socket or not socket.connected then
|
||||
socket, msg = Socket.connect(1, 4242)
|
||||
socket, msg = Socket.connect(options.server.value, 4242)
|
||||
if socket then
|
||||
socket:write(options.user.value)
|
||||
end
|
||||
end
|
||||
if socket then
|
||||
if socket:write(data) then
|
||||
|
||||
@@ -2,6 +2,7 @@ local Milo = require('milo')
|
||||
local Util = require('util')
|
||||
|
||||
local Autocraft = {
|
||||
name = 'autocraft',
|
||||
priority = 100,
|
||||
}
|
||||
|
||||
|
||||
@@ -132,7 +132,8 @@ function craftPage:eventHandler(event)
|
||||
end
|
||||
|
||||
local demandCraftingTask = {
|
||||
priority = 20,
|
||||
name = 'demand crafting',
|
||||
priority = 60,
|
||||
}
|
||||
|
||||
function demandCraftingTask:cycle(context)
|
||||
|
||||
@@ -4,7 +4,8 @@ local Milo = require('milo')
|
||||
local device = _G.device
|
||||
|
||||
local ExportTask = {
|
||||
priority = 5,
|
||||
name = 'exporter',
|
||||
priority = 40,
|
||||
}
|
||||
|
||||
function ExportTask:cycle(context)
|
||||
|
||||
@@ -3,7 +3,8 @@ local Milo = require('milo')
|
||||
local device = _G.device
|
||||
|
||||
local ImportTask = {
|
||||
priority = 3,
|
||||
name = 'importer',
|
||||
priority = 20,
|
||||
}
|
||||
|
||||
function ImportTask:cycle(context)
|
||||
|
||||
@@ -3,7 +3,8 @@ local Milo = require('milo')
|
||||
local device = _G.device
|
||||
|
||||
local InputChest = {
|
||||
priority = 1,
|
||||
name = 'input',
|
||||
priority = 10,
|
||||
}
|
||||
|
||||
function InputChest:cycle(context)
|
||||
|
||||
@@ -56,6 +56,7 @@ jobList:draw()
|
||||
jobList:sync()
|
||||
|
||||
local JobListTask = {
|
||||
name = 'job status',
|
||||
priority = 80,
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
local Milo = require('milo')
|
||||
|
||||
local LimitTask = {
|
||||
priority = 10,
|
||||
name = 'limiter',
|
||||
priority = 50,
|
||||
}
|
||||
|
||||
function LimitTask:cycle(context)
|
||||
|
||||
@@ -3,7 +3,8 @@ local Milo = require('milo')
|
||||
local device = _G.device
|
||||
|
||||
local PotionImportTask = {
|
||||
priority = 3,
|
||||
name = 'potions',
|
||||
priority = 30,
|
||||
}
|
||||
|
||||
function PotionImportTask:cycle(context)
|
||||
|
||||
@@ -2,15 +2,32 @@ local Event = require('event')
|
||||
local Milo = require('milo')
|
||||
local Socket = require('socket')
|
||||
|
||||
local device = _G.device
|
||||
local manipulator = device.manipulator_1
|
||||
local turtle = _G.turtle
|
||||
local device = _G.device
|
||||
local turtle = _G.turtle
|
||||
|
||||
local context = Milo:getContext()
|
||||
|
||||
local function getManipulatorForUser(user)
|
||||
for _,v in pairs(device) do
|
||||
if v.type == 'manipulator' and v.getName and v.getName() == user then
|
||||
return v
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function client(socket)
|
||||
debug('connection from ' .. socket.dhost)
|
||||
|
||||
local user = socket:read(2)
|
||||
if not user then
|
||||
return
|
||||
end
|
||||
|
||||
local manipulator = getManipulatorForUser(user)
|
||||
if not manipulator then
|
||||
return
|
||||
end
|
||||
|
||||
repeat
|
||||
local data = socket:read()
|
||||
if not data then
|
||||
@@ -51,6 +68,7 @@ if device.wireless_modem then
|
||||
local socket = Socket.server(4242)
|
||||
Event.addRoutine(function()
|
||||
client(socket)
|
||||
socket:close()
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -2,7 +2,8 @@ local itemDB = require('itemDB')
|
||||
local Milo = require('milo')
|
||||
|
||||
local ReplenishTask = {
|
||||
priority = 30,
|
||||
name = 'replenish',
|
||||
priority = 70,
|
||||
}
|
||||
|
||||
function ReplenishTask:cycle(context)
|
||||
|
||||
Reference in New Issue
Block a user