diff --git a/Programs/monitor-system/data/datasource/miner.lua b/Programs/monitor-system/data/datasource/miner.lua index 342705d..3ae01f5 100755 --- a/Programs/monitor-system/data/datasource/miner.lua +++ b/Programs/monitor-system/data/datasource/miner.lua @@ -2,7 +2,7 @@ parser = require("utils.parser") inherits = require("utils.inherits") SingleBlock = require("data.datasource.single-block") -local mock = require("data.mock.mock-multi-block") +local mock = require("data.mock.mock-miner") -- local Miner = @@ -16,10 +16,10 @@ local Miner = function Miner:getName() local sensorInformation = self:getSensorInformation() - return parser.parseProblems(sensorInformation[1]) + return parser.parseName(sensorInformation[1]) end -function Miner:getWoarkArea() +function Miner:getWorkArea() local sensorInformation = self:getSensorInformation() return parser.parseWorkArea(sensorInformation[2]) end diff --git a/Programs/monitor-system/data/mock/miner.lua b/Programs/monitor-system/data/mock/mock-miner.lua similarity index 100% rename from Programs/monitor-system/data/mock/miner.lua rename to Programs/monitor-system/data/mock/mock-miner.lua diff --git a/Programs/monitor-system/domain/miner/get-miner-status-usecase.lua b/Programs/monitor-system/domain/miner/get-miner-status-usecase.lua new file mode 100644 index 0000000..51c7377 --- /dev/null +++ b/Programs/monitor-system/domain/miner/get-miner-status-usecase.lua @@ -0,0 +1,5 @@ +local function exec(miner) + return miner.isMachineActive() and miner.hasWork() -- TODO: differenciate cases +end + +return exec diff --git a/Programs/monitor-system/domain/miner/list-miners-usecase.lua b/Programs/monitor-system/domain/miner/list-miners-usecase.lua new file mode 100644 index 0000000..9727185 --- /dev/null +++ b/Programs/monitor-system/domain/miner/list-miners-usecase.lua @@ -0,0 +1,25 @@ +-- Import section +event = require("event") +local minerDatasource = require("data.datasource.miner") +-- +local minerList = {} +local newMiners = {} + +local function addToMinerList(_, address, machine) + if minerDatasource.getName(machine.getSensorInformation()) == "Multiblock Miner" then + if minerList[address] == nil then + newMiners[address] = machine + else + newMiners[address] = nil + end + minerList[address] = machine + end +end + +event.listen("component_added", addToMinerList) + +local function exec() + return minerList, newMiners +end + +return exec diff --git a/Programs/monitor-system/domain/multiblock/get-multiblock-status-usecase.lua b/Programs/monitor-system/domain/multiblock/get-multiblock-status-usecase.lua new file mode 100755 index 0000000..c4e115a --- /dev/null +++ b/Programs/monitor-system/domain/multiblock/get-multiblock-status-usecase.lua @@ -0,0 +1,12 @@ +local function exec(multiblocks) + local statuses = {} + for _, multiblock in ipairs(multiblocks) do + statuses[multiblock.name] = { + problems = multiblock:getNumberOfProblems(), + efficiencyPercentage = multiblock:getEfficiencyPercentage() + } + end + return statuses +end + +return exec diff --git a/Programs/monitor-system/domain/multiblock/get-status-usecase.lua b/Programs/monitor-system/domain/multiblock/get-status-usecase.lua deleted file mode 100755 index e69de29..0000000 diff --git a/Programs/monitor-system/init.lua b/Programs/monitor-system/init.lua index 79b24b9..64ed417 100755 --- a/Programs/monitor-system/init.lua +++ b/Programs/monitor-system/init.lua @@ -15,25 +15,34 @@ local getEnergyStatus = require("domain.energy.get-energy-status-usecase") -- local cleanroom = MultiBlock:new(multiBlockAddresses.cleanroom) +cleanroom.name = "cleanroom" local cleanroomMachines = {} for _, address in pairs(cleanroomAddresses) do table.insert(cleanroomMachines, SingleBlock:new(address)) end local EBF11 = MultiBlock:new(multiBlockAddresses.EBF11) +EBF11.name = "EBF11" local multiblocks = {cleanroom, EBF11} local energyBuffer = EnergyProvider:new(energyBufferAddress.batteryBuffer1) local energyProducers = {} +local multiblockStatuses = {} for i = 0, 100 do print(i) protectCleanroomRecipes(cleanroom, cleanroomMachines) - -- local multiblockStatuses = getMultiblockStatuses(multiblocks) + multiblockStatuses = getMultiblockStatuses(multiblocks) local energyStatus = getEnergyStatus(energyProducers, energyBuffer) os.sleep(0) i = i + 1 end -require('resources.sound.zelda-secret')() + +for multiblock, status in pairs(multiblockStatuses) do + print(multiblock .. ": \ + problems: " .. status.problems .. "\ + efficiency: " .. status.efficiencyPercentage) +end +require("resources.sound.zelda-secret")()