infobeamer-testcard/node.lua

89 lines
2.0 KiB
Lua

node.alias "testcard"
util.init_hosted()
local json = require "json"
local serial = sys.get_env "SERIAL"
local location = ""
local description = "<please wait>"
util.data_mapper{
["device_info"] = function(info)
info = json.decode(info)
location = info.location
description = info.description
end
}
gl.setup(NATIVE_WIDTH, NATIVE_HEIGHT)
card = resource.load_image("testcard.png")
font = resource.load_font("vera.ttf")
local v = {
network = "<unkown>",
ethip = "<unkown>",
wlanip = "<unkown>",
gw = "<unkown>"
}
util.data_mapper{
["update/(.*)"] = function(key, val)
v[key] = val
end
}
function node.render()
gl.clear(0,0,0,1)
card:draw(0, 0, 1920, 1080)
-- upper: 623
-- lower: 707
upper_text = "CCC: " .. description
if location == nil or location == '' then
lower_text = "Serial " .. serial
else
lower_text = location .. " - Serial " .. serial
end
upper_width = font:width(upper_text, 40)
font:write(960-(upper_width/2), 631, upper_text, 40, 1,1,1,1)
lower_width = font:width(lower_text, 20)
font:write(960-(lower_width/2), 679, lower_text, 20, 1,1,1,1)
-- draw text on left and right dark grey area
local fontsize = 30
local offset = fontsize+10
local x_left = 100
local x_right = 1430
local y_start = 500
-- left side: network config, online status
local y = y_start
font:write(x_left, y, "Mode: " .. v.network, fontsize, 1,1,1,1)
y = y + offset
font:write(x_left, y, "GW: " .. v.gw, fontsize, 1,1,1,1)
y = y + offset
if v.online then
local col = {1,0,0,1}
if v.online == "online" then
col = {0,1,0,1}
end
font:write(x_left, y, v.online, fontsize, unpack(col))
end
-- right side: IP addresses
y = y_start
font:write(x_right, y, "Eth: " .. v.ethip, fontsize, 1,1,1,1)
y = y + offset
font:write(x_right, y, "WiFi: " .. v.wlanip, fontsize, 1,1,1,1)
end