PK jU ! 9 instruments/5f3fdf98-cf3f-47de-b7b5-9b4e13175dc9/info.xml!Boeing 737-700 (PMDG)Overhead - Fuel Pumps Switches5f3fdf98-cf3f-47de-b7b5-9b4e13175dc9Detlef von ReusnerControl illumination per user prop and the when "Dial" is selected per light dials in the cockpit, captain side left of the FMC.
If Real is selected, you must also install Generic - Ambient light dimmer instrument .
And also when "Real" is selected use overhead dome switch.
The fuel temperature gauge may show a wong value. Lvar L:switch_57_73X may be insufficient here. I found no better one.
falsefalsefalsefalsetrue1001100400580WINDOWSMACLINUXRASPBERRY_PIANDROIDIPADESP32HOME_USE_STANDARDPKZ=g& ! PK D`U T : instruments/5f3fdf98-cf3f-47de-b7b5-9b4e13175dc9/logic.luaT-- Detlef von Reusner
-- PMDG B737-700 Overhead panel - Fuel pump and valve switches
-- FS2020
-- Aug 10 2022 V1.00
-- Illumination options per user properties: Day,Night,Real,Dial
-- - Dial means, illumination controlled per dial on the forward electronic panel, left of the CDU
-- - Real means, you must install the Generic Amient Light Dimmer instrument. Daylight is real then,
-- and night illumination depends on the dome white switch on the overhead
-- History:
-- Aug 10 2022: Initial version
local gPropIllumination = user_prop_get(user_prop_add_enum("Illumination","Day,Night,Real,Dial","Day","Select fix, real(daylight depending) or left forward panel dial controlled illumination"))
img_add_fullscreen("bg.png")
local gNightColor = img_add_fullscreen("night-color.png")
opacity(gNightColor, 0) -- max. .2 for night color
local gBlackMask = canvas_add(0, 0, 400, 580, function()
_rect(0, 0, 400, 580)
_fill("black")
end)
opacity(gBlackMask, 0.) -- 0 == full brightness, .9 == darkest value that makes sense
local gColorAmber = string.format(";color:#%02x%02x%02x", 243, 163, 90)
local gColorBlue = string.format(";color:#%02x%02x%02x", 250, 250, 250)
local gColorGreen = string.format(";color:#%02x%02x%02x", 98, 208, 103)
local gColorPrint = "#E0E0E0FF"
local gColorBg = "#101010FF"
--- night color for texts and lines
local gNightR = 248
local gNightG = 217
local gNightB = 135
local gDaylight
local gScalesLight
local gFontLight = "font:arimo_bold.ttf; size:14"
local gDebugShowTouchFields = false
local gTouchField
if gDebugShowTouchFields then
gTouchField = "touch-field-on.png"
else
gTouchField = nil
end
-------------- global variables --------------
-- =================== Draw lines ==================
function DrawPath(x, y, path)
-- path = {x1, y1, x2, y2} and so on.
-- If path is only one point, the line must go right or down.
-- Otherwise the path must go clockwise.
local count = #path/2
local x0, x1, x2, y0, y1, y2, dx, dy
x0 = x
y0 = y
if count == 1 then
x1 = path[1] -- line target
y1 = path[2]
if x==x1 then -- vertical
_move_to(x, y+2)
_line_to(x, y1-2)
_stroke(gColorBg, 15)
_move_to(x, y-3)
_line_to(x, y1+3)
_stroke(gColorBg, 8)
_move_to(x-4, y)
_line_to(x-4, y1)
_stroke(gColorPrint, 2)
_move_to(x+4, y)
_line_to(x+4, y1)
_stroke(gColorPrint, 2)
else -- horizontal
_move_to(x+2, y)
_line_to(x1-2, y)
_stroke(gColorBg, 15)
_move_to(x-3, y)
_line_to(x1+3, y)
_stroke(gColorBg, 8)
_move_to(x, y-4)
_line_to(x1, y-4)
_stroke(gColorPrint, 2)
_move_to(x, y+4)
_line_to(x1, y+4)
_stroke(gColorPrint, 2)
end
else
-- background
_move_to(x, y)
for k=0,count-1 do
_line_to(path[2*k+1], path[2*k+2])
end
_stroke(gColorBg, 15)
-- ----------------- outer line
for k=0,count-1 do
x1 = path[2*k+1] -- line target
y1 = path[2*k+2]
x2 = path[2*k+3] -- next line target
y2 = path[2*k+4]
if y1 == y then -- horizontal
if x1 > x then
dx = 4
else
dx = -4
end
if y2 == nil then
-- no change
elseif y2y then
dy = 4
else
dy = -4
end
if x2 == nil then
-- no change
elseif x2>x1 then
dx = -4
else
dy = 4
end
if k==0 then
_move_to(x+dx, y+dy)
end
_line_to(x+dx, y1+dy)
end
x = x1
y = y1
end
_stroke(gColorPrint, 2)
-- ------------------- inner line
x = x0
y = y0
for k=0,count-1 do
x1 = path[2*k+1] -- line target
y1 = path[2*k+2]
x2 = path[2*k+3] -- next line target
y2 = path[2*k+4]
if y1 == y then -- horizontal
if x1 > x then
dx = -4
else
dx = 4
end
if y2 == nil then
-- no change
elseif y2y then
dy = -4
else
dy = 4
end
if x2 == nil then
-- no change
elseif x2>x1 then
dx = 4
else
dy = -4
end
if k==0 then
_move_to(x+dx, y+dy)
end
_line_to(x+dx, y1+dy)
end
x = x1
y = y1
end
_stroke(gColorPrint, 2)
end
end
function DrawAllLines()
-- _move_to(40, 392)
-- _line_to(358, 392)
-- _stroke(gColorPrint, 2)
DrawPath(65, 442, {65, 401, 151, 401, 151, 442}) -- always clockwise!
DrawPath(65, 196, {65, 398})
DrawPath(244, 442, {244, 401, 340, 401, 340, 442})
DrawPath(340, 196, {340, 398})
DrawPath(157, 285, {157, 225, 247, 225, 247, 285})
DrawPath(69, 225, {153, 225})
DrawPath(253, 225, {336, 225})
end
local gImgLines = canvas_add(0, 0, 400, 580, DrawAllLines)
-- ====================== Texts =================
local gFontPrintBig = "font:roboto_bold.ttf; size:24"
local gFontPrintSmall = "font:roboto_bold.ttf; size:18"
function PrintText(text, x, y, style, size)
local count = string.len(text)
_rect(x-3, y, count/2*size+7, size)
_fill(gColorBg)
_txt(text, style, x, y-1)
end
function PrintVertText(text, x, y, style, size)
local count = string.len(text)
local step = size*.7
_rect(x, y, size, count*step+step/2)
_fill(gColorBg)
for k=1,count do
_txt(string.sub(text, k, k), style, x+5, y+(k-1)*step)
end
end
function DrawAllTexts()
local style = gFontPrintBig..";color:"..gColorPrint.."; halign:left"
PrintText("CROSS", 105, 193, style, 24)
PrintText("FEED", 241, 193, style, 24)
PrintText("FUEL PUMP", 143, 316, style, 24)
PrintText("CTR", 183, 388, style, 24)
PrintText("AFT", 47, 470, style, 24)
PrintText("FWD", 133, 470, style, 24)
PrintText("FWD", 230, 470, style, 24)
PrintText("AFT", 315, 470, style, 24)
PrintText("L", 101, 361, style, 24)
PrintText("R", 286, 361, style, 24)
PrintText("FUEL", 177, 503, style, 24)
PrintText("PUMPS", 170, 548, style, 24)
style = gFontPrintSmall..";color:"..gColorPrint.."; halign:left"
PrintText("OFF", 186, 340, style, 18)
PrintText("ON", 190, 371, style, 18)
PrintText("+", 85, 244, style, 18)
PrintText("OFF", 93, 506, style, 18)
PrintText("ON", 99, 537, style, 18)
PrintText("OFF", 278, 506, style, 18)
PrintText("ON", 283, 537, style, 18)
PrintText("1", 104, 557, style, 18)
PrintText("2", 288, 557, style, 18)
-- PrintVertText("OFF", 135, 176, style, 18)
end
local gImgTexts = canvas_add(0, 0, 400, 580, DrawAllTexts)
-- ===================== images above lines ================
img_add("frames.png", 0, 0, 400, 580)
-- ============================= rotary switch cross feed ===================
local gStateCrossfeedSwitch
function DrawLine(x, y, x1, y1)
-- The line from x/y to x1/y1 must go right or down.
if x==x1 then -- vertical
_move_to(x, y+2)
_line_to(x, y1-2)
_stroke(gColorBg, 15)
_move_to(x, y-3)
_line_to(x, y1+3)
_stroke(gColorBg, 8)
_move_to(x-4, y)
_line_to(x-4, y1)
_stroke(gColorPrint, 2)
_move_to(x+4, y)
_line_to(x+4, y1)
_stroke(gColorPrint, 2)
else -- horizontal
_move_to(x+2, y)
_line_to(x1-2, y)
_stroke(gColorBg, 15)
_move_to(x-3, y)
_line_to(x1+3, y)
_stroke(gColorBg, 8)
_move_to(x, y-4)
_line_to(x1, y-4)
_stroke(gColorPrint, 2)
_move_to(x, y+4)
_line_to(x1, y+4)
_stroke(gColorPrint, 2)
end
end
function DrawCrossfeedLine()
if gStateCrossfeedSwitch == 100 then
DrawLine(35, 10, 35, 60)
else
DrawLine(10, 35, 60, 35)
end
end
img_add("rotary-base-shadow.png", 168, 190, 70, 70)
gImgCrossfeedSwitch = img_add("rotary-handle.png", 168, 190, 70, 70)
local gCanvasCrossfeedSwitch = canvas_add(168, 190, 70, 70, DrawCrossfeedLine)
fs2020_variable_subscribe("L:switch_49_73X", "number", function(v)
gStateCrossfeedSwitch = v
if v==100 then
img_rotate(gImgCrossfeedSwitch, 0)
else
img_rotate(gImgCrossfeedSwitch, 90)
end
canvas_draw(gCanvasCrossfeedSwitch, DrawCrossfeedLine)
end)
dial_add(nil, 168, 190, 70, 70, nil) -- to get a circular touch field
button_add(nil, nil, 168, 190, 70, 70, function() fs2020_event("ROTOR_BRAKE", 4901) end)
-- =========================== Fuel temp gauge =======================
local gImgNeedle
gImgNeedle = img_add("needle-day.png", 190, 18, 20, 94)
img_add("needle-base.png", 191, 55, 20, 20)
fs2020_variable_subscribe("L:switch_57_73X", "number", function(v)
img_rotate(gImgNeedle, (v-32)*5/9 /100*254) -- Fahrenheit to gauge scale
end)
-- =============================== switch lib functions ====================
local gSwitch = {}
local gSwitchCount = 0
function ShowTouchField(x, y, w, h)
if not gDebugShowTouchFields then return end
canvas_add(x, y, w, h, function()
_rect(0, 0, w, h)
_fill("#FF000020")
end)
end
function AddVerticalSwitch(x, y, p1, p2, p3, call_back)
-- e.g.: if p1, p2 and p3 are true, this switch has all three positions
x = x - 76
y = y - 20
gSwitchCount = gSwitchCount+1
gSwitch[gSwitchCount] = {}
local s = gSwitch[gSwitchCount]
local w, h, img, meta
img = "switch-up.png" -- all three switch position pictures assumed the same size
meta = resource_info(img)
if meta == nil then print(img.." not found"); return 0 end
w = meta.WIDTH
h = meta.HEIGHT
local x_touch, y_touch, w_touch, h_touch
x_touch = x + w/8
y_touch = y
w_touch = w * 3/4
h_touch = h/2-1
do
local n = gSwitchCount
button_add(gTouchField, nil, x_touch, y_touch, w_touch, h_touch, function() call_back(n, -1) end, nil) -- dec button
button_add(gTouchField, nil, x_touch, y_touch+1+h_touch, w_touch, h_touch, function() call_back(n, 1) end, nil) -- inc button
end
s.img = {} -- stores the images for all switch positions
if p1 then
img = "switch-up.png"
s.img[1] = img_add(img, x, y, w, h)
visible(s.img[1], false)
end
if p2 then
img = "switch-middle.png"
s.img[2] = img_add(img, x, y, w, h)
visible(s.img[2], false)
end
if p3 then
img = "switch-down.png"
s.img[3] = img_add(img, x, y, w, h)
visible(s.img[3], false)
end
s.pos = nil
return gSwitchCount
end
function AddHorGuardSwitch(x, y, p1, p2, p3, cb_switch, cb_guard)
gSwitchCount = gSwitchCount+1
gSwitch[gSwitchCount] = {}
local s = gSwitch[gSwitchCount]
local x_touch, y_touch, w_touch, h_touch
local img, meta, w, h, dx, dy -- dx, dy offset for switch
dx = 34
dy = 20
img = "black-hor-guard-open.png"
meta = resource_info(img)
if meta == nil then print(img.." not found"); return 0 end
w = meta.WIDTH
h = meta.HEIGHT
s.img_open = img_add(img, x, y, w, h)
visible(s.img_open, false)
x_touch = x
y_touch = y
w_touch = w/4-1
h_touch = h
do -- create buttons for guard open/close and switch increment/decrement
local n = gSwitchCount
button_add(gTouchField, nil, x_touch, y_touch, w_touch, h_touch, function() cb_guard(n, -1) end, nil)
button_add(gTouchField, nil, x+3*(w_touch+1), y_touch, w_touch, h_touch, function() cb_guard(n, 1) end, nil)
button_add(gTouchField, nil, x_touch+w_touch+1, y_touch, w_touch, h_touch, function() cb_switch(n, -1) end, nil)
button_add(gTouchField, nil, x_touch+2*(w_touch+1), y_touch, w_touch, h_touch, function() cb_switch(n, 1) end, nil)
end
s.img = {} -- stores the images for all switch positions
do
local w, h
img = "small-hor-switch-left.png"
meta = resource_info(img)
if meta == nil then print(img.." not found"); return 0 end
w = meta.WIDTH
h = meta.HEIGHT
if p1 then
img = "small-hor-switch-left.png"
s.img[1] = img_add(img, x+dx, y+dy, w, h)
visible(s.img[1], false)
end
if p2 then
img = "small-hor-switch-middle.png"
s.img[2] = img_add(img, x+dx, y+dy, w, h)
visible(s.img[2], false)
end
if p3 then
img = "small-hor-switch-right.png"
s.img[3] = img_add(img, x+dx, y+dy, w, h)
visible(s.img[3], false)
end
end
img = "black-hor-guard-closed.png"
s.img_closed = img_add(img, x, y, w, h)
visible(s.img_closed, true)
s.closed = true
s.pos = nil
return gSwitchCount
end
function SetSwitchPosition(switch, target)
local s = gSwitch[switch]
if target == nil then return end
visible(s.img[target], true)
if s.pos ~= nil then visible(s.img[s.pos], false) end
s.pos = target
end
function CloseGuard(switch, yes)
local s = gSwitch[switch]
visible(s.img_closed, yes)
visible(s.img_open, not yes)
s.closed = yes
end
-- ====================== operate switches ==================
---------------------- Fuel pump left aft switch ----------------
local gSwitchFuelPumpLeftAft
function cbSwitchFuelPumpLeftAft(switch, dir)
if dir > 0 then
fs2020_event("ROTOR_BRAKE", 3701)
else
fs2020_event("ROTOR_BRAKE", 3702)
end
end
fs2020_variable_subscribe("L:switch_37_73X", "number", function(v)
SetSwitchPosition(gSwitchFuelPumpLeftAft, math.floor(v/50)+1)
end)
gSwitchFuelPumpLeftAft = AddVerticalSwitch(90, 485, true, false, true, cbSwitchFuelPumpLeftAft)
---------------------- Fuel pump left fwd switch ----------------
local gSwitchFuelPumpLeftFwd
function cbSwitchFuelPumpLeftFwd(switch, dir)
if dir > 0 then
fs2020_event("ROTOR_BRAKE", 3801)
else
fs2020_event("ROTOR_BRAKE", 3802)
end
end
fs2020_variable_subscribe("L:switch_38_73X", "number", function(v)
SetSwitchPosition(gSwitchFuelPumpLeftFwd, math.floor(v/50)+1)
end)
gSwitchFuelPumpLeftFwd = AddVerticalSwitch(177, 485, true, false, true, cbSwitchFuelPumpLeftFwd)
---------------------- Fuel pump right fwd switch ----------------
local gSwitchFuelPumpRightFwd
function cbSwitchFuelPumpRightFwd(switch, dir)
if dir > 0 then
fs2020_event("ROTOR_BRAKE", 3901)
else
fs2020_event("ROTOR_BRAKE", 3902)
end
end
fs2020_variable_subscribe("L:switch_39_73X", "number", function(v)
SetSwitchPosition(gSwitchFuelPumpRightFwd, math.floor(v/50)+1)
end)
gSwitchFuelPumpRightFwd = AddVerticalSwitch(275, 485, true, false, true, cbSwitchFuelPumpRightFwd)
---------------------- Fuel pump right aft switch ----------------
local gSwitchFuelPumpRightAft
function cbSwitchFuelPumpRightAft(switch, dir)
if dir > 0 then
fs2020_event("ROTOR_BRAKE", 4001)
else
fs2020_event("ROTOR_BRAKE", 4002)
end
end
fs2020_variable_subscribe("L:switch_40_73X", "number", function(v)
SetSwitchPosition(gSwitchFuelPumpRightAft, math.floor(v/50)+1)
end)
gSwitchFuelPumpRightAft = AddVerticalSwitch(361, 485, true, false, true, cbSwitchFuelPumpRightAft)
---------------------- Fuel pump center left switch ----------------
local gSwitchFuelPumpCenterLeft
function cbSwitchFuelPumpCenterLeft(switch, dir)
if dir > 0 then
fs2020_event("ROTOR_BRAKE", 4501)
else
fs2020_event("ROTOR_BRAKE", 4502)
end
end
fs2020_variable_subscribe("L:switch_45_73X", "number", function(v)
SetSwitchPosition(gSwitchFuelPumpCenterLeft, math.floor(v/50)+1)
end)
gSwitchFuelPumpCenterLeft = AddVerticalSwitch(177, 322, true, false, true, cbSwitchFuelPumpCenterLeft)
---------------------- Fuel pump center right switch ----------------
local gSwitchFuelPumpCenterRight
function cbSwitchFuelPumpCenterRight(switch, dir)
if dir > 0 then
fs2020_event("ROTOR_BRAKE", 4601)
else
fs2020_event("ROTOR_BRAKE", 4602)
end
end
fs2020_variable_subscribe("L:switch_46_73X", "number", function(v)
SetSwitchPosition(gSwitchFuelPumpCenterRight, math.floor(v/50)+1)
end)
gSwitchFuelPumpCenterRight = AddVerticalSwitch(274, 322, true, false, true, cbSwitchFuelPumpCenterRight)
-- ======================= Dimm all, except lights ================
local gBlackMask2 = canvas_add(0, 0, 400, 580, function()
_rect(0, 0, 400, 580)
_fill("black")
end)
opacity(gBlackMask2, 0)
-- ============================ lib functions for lights =======================
local gLight = {}
local gLightCount = 0
function AddLight(lvar, img, x, y, text1, text2)
gLightCount = gLightCount + 1
gLight[gLightCount] = {}
local w, h, color, font
if string.find(img, "amber", 1, true) ~= nil then
color = gColorAmber
elseif string.find(img, "blue", 1, true) ~= nil then
color = gColorBlue
elseif string.find(img, "green", 1, true) ~= nil then
color = gColorGreen
else
color = ";color:#FFFFFF"
end
font = gFontLight
meta = resource_info(img)
w = meta.WIDTH
h = meta.HEIGHT
img_add(img, x, y, w, h)
if text2 == nil then -- one line only
txt_add(text1, font..color..";halign:center", x+w/15, y+h/3, w*7/8, h)
else
txt_add(text1, font..color..";halign:center", x+w/15, y+h/5, w*7/8, h)
txt_add(text2, font..color..";halign:center", x+w/15, y+h/2, w*7/8, h)
end
gLight[gLightCount].img_shade = canvas_add(x+2, y+2, 81, 46, function ()
_rect(0, 0, 81, 46)
_fill("#000000F0") -- was: _fill("#000000D0")
end)
if lvar ~= nil then
local n = gLightCount
fs2020_variable_subscribe(lvar, "number", function(v)
if v==0 then
visible(gLight[n].img_shade, true)
else
visible(gLight[n].img_shade, false)
end
end)
end
return gLightCount
end
-- ======================== add lights ======================
AddLight("L:switch_55_73X", "light-blue-1.png", 36, 9, "ENG VALVE", "CLOSED")
AddLight("L:switch_53_73X", "light-blue-2.png", 36, 61, "SPAR VALVE", "CLOSED")
AddLight("L:switch_56_73X", "light-blue-1.png", 279, 9, "ENG VALVE", "CLOSED")
AddLight("L:switch_54_73X", "light-blue-1.png", 279, 61, "SPAR VALVE", "CLOSED")
AddLight("L:switch_50_73X", "light-amber-2.png", 36, 131, "FILTER", "BYPASS")
AddLight("L:switch_52_73X", "light-amber-1.png", 279, 131, "FILTER", "BYPASS")
AddLight("L:switch_51_73X", "light-blue-2.png", 157, 131, "VALVE", "OPEN")
AddLight("L:switch_47_73X", "light-amber-3.png", 115, 261, "LOW", "PRESSURE")
AddLight("L:switch_48_73X", "light-amber-1.png", 201, 261, "LOW", "PRESSURE")
AddLight("L:switch_41_73X", "light-amber-1.png", 22, 417, "LOW", "PRESSURE")
AddLight("L:switch_42_73X", "light-amber-3.png", 108, 417, "LOW", "PRESSURE")
AddLight("L:switch_43_73X", "light-amber-2.png", 207, 417, "LOW", "PRESSURE")
AddLight("L:switch_44_73X", "light-amber-1.png", 293, 417, "LOW", "PRESSURE")
-- ================== illumination ========================
-- debug -------
local gTxtDebug = txt_add("", "font:arimo_regular.ttf;color:red;size:20", 10, 20, 390, 20)
-- --------------------
function cbLightChange()
-- based on two inputs:
-- gDaylight 0..1: for dark to bright sunshine
-- gScalesLight 0..1: for no artificial light to full scales light and full illumination
if gDaylight==nil or gScalesLight==nil then return end
-- print("daylight: " .. gDaylight .. " scales: ".. gScalesLight)
-- txt_set(gTxtDebug, "daylight: " .. gDaylight .. " scales: ".. gScalesLight)
local dimm_black, dimm_night_color, brightness, brightness_bg, brightness_lines
if gScalesLight < .05 then
dimm_night_color = 0
else
dimm_night_color = 2*gDaylight / gScalesLight
dimm_night_color = var_cap((1-var_cap(dimm_night_color, 0, 1)), 0, .5)
end
-- print("dimm night color is "..dimm_night_color)
opacity(gNightColor, dimm_night_color)
brightness = var_cap(gScalesLight+gDaylight, 0, 1)
opacity(gBlackMask, 1-brightness)
if brightness < .1 then -- this is to dimm down switches, which are above the first black mask
dimm_all = 1-brightness
brightness = 1
else
dimm_all = 0
end
opacity(gBlackMask2, dimm_all)
brightness_lines = var_cap(brightness*5, .4, .9)
-- print("brightness / brightness lines "..brightness.." / "..brightness_lines)
if dimm_night_color > .2 then
gColorPrint = string.format("#%02X%02X%02XFF",
math.floor(gNightR*brightness_lines),
math.floor(gNightG*brightness_lines),
math.floor(gNightB*brightness_lines))
else
gColorPrint = string.format("#%02X%02X%02XFF",
math.floor(255*brightness_lines),
math.floor(255*brightness_lines),
math.floor(255*brightness_lines))
end
brightness_bg = math.floor(brightness * 32)
gColorBg = string.format("#%02X%02X%02XFF", brightness_bg, brightness_bg, brightness_bg)
canvas_draw(gImgLines, DrawAllLines)
canvas_draw(gImgTexts, DrawAllTexts)
canvas_draw(gCanvasCrossfeedSwitch, DrawCrossfeedLine)
end
if gPropIllumination == "Day" then
gDaylight = .99
gScalesLight = 0
cbLightChange()
elseif gPropIllumination == "Night" then
gDaylight = 0.0
gScalesLight = .18
cbLightChange()
elseif gPropIllumination == "Real" then
si_variable_subscribe("sivar_ambient_darkness", "FLOAT", function(v) gDaylight=1-v; cbLightChange() end)
fs2020_variable_subscribe("L:switch_258_73X", "number", function(v)
if v==0 then
gScalesLight = .2 -- dimmed
elseif v==50 then
gScalesLight = .03 -- off
else
gScalesLight = .6 -- full on
end
cbLightChange()
end)
else -- Dial
fs2020_variable_subscribe("A:LIGHT POTENTIOMETER:2", "Number", function(v) gDaylight = v; cbLightChange() end)
fs2020_variable_subscribe("A:LIGHT POTENTIOMETER:3", "Number", function(v) gScalesLight = v; cbLightChange() end)
end
---------------------
PK5ЬT T PK aU <