Load Frigate config into the starter grid

This commit is contained in:
OpenClaw
2026-04-18 23:33:28 +00:00
parent fc43381ed9
commit 0f6b700ed2
3 changed files with 96 additions and 3 deletions

View File

@@ -1,3 +1,56 @@
sub init() sub init()
m.top.setFocus(true) m.top.setFocus(true)
m.backend = m.top.findNode("backend")
m.status = m.top.findNode("status")
m.cameraNodes = [
m.top.findNode("cam1"),
m.top.findNode("cam2"),
m.top.findNode("cam3"),
m.top.findNode("cam4")
]
loadConfig()
end sub
sub loadConfig()
raw = ReadAsciiFile("pkg:/config/cameras.json")
config = ParseJson(raw)
if type(config) <> "roAssociativeArray" then
m.status.text = "Unable to parse cameras.json"
return
end if
if config.doesExist("backend") and config.backend.doesExist("baseUrl") then
m.backend.text = "Frigate: " + config.backend.baseUrl
end if
if not config.doesExist("cameras") then
m.status.text = "No cameras found in config"
return
end if
cameras = config.cameras
m.status.text = cameras.count().toStr() + " cameras loaded from static config"
for i = 0 to m.cameraNodes.count() - 1
node = m.cameraNodes[i]
if i < cameras.count() then
camera = cameras[i]
label = camera.name
if camera.doesExist("host") then
label = label + chr(10) + camera.host
end if
if camera.doesExist("frigateCamera") then
label = label + chr(10) + "Frigate ID: " + camera.frigateCamera
end if
node.text = label
else
node.text = "Empty slot"
end if
end for
end sub end sub

View File

@@ -20,13 +20,53 @@
text="Labs camera viewer for Roku" text="Labs camera viewer for Roku"
font="font:MediumSystemFont" font="font:MediumSystemFont"
color="0xC9D1D9FF" /> color="0xC9D1D9FF" />
<Label
id="backend"
translation="[80, 210]"
width="1760"
height="40"
text="Frigate: not loaded"
font="font:SmallSystemFont"
color="0x8B949EFF" />
<Label <Label
id="status" id="status"
translation="[80, 260]" translation="[80, 260]"
width="1760" width="1760"
height="120" height="60"
text="Project scaffold is live. Next step: load Frigate camera config and render the first Roku camera grid." text="Loading camera config..."
font="font:MediumSystemFont" font="font:MediumSystemFont"
color="0x8B949EFF" /> color="0x8B949EFF" />
<Label
id="cam1"
translation="[80, 360]"
width="760"
height="120"
text="Cam slot 1"
font="font:MediumSystemFont"
color="0xFFFFFFFF" />
<Label
id="cam2"
translation="[980, 360]"
width="760"
height="120"
text="Cam slot 2"
font="font:MediumSystemFont"
color="0xFFFFFFFF" />
<Label
id="cam3"
translation="[80, 580]"
width="760"
height="120"
text="Cam slot 3"
font="font:MediumSystemFont"
color="0xFFFFFFFF" />
<Label
id="cam4"
translation="[980, 580]"
width="760"
height="120"
text="Cam slot 4"
font="font:MediumSystemFont"
color="0xFFFFFFFF" />
</children> </children>
</component> </component>

View File

@@ -2,7 +2,7 @@
"appName": "visionLabs", "appName": "visionLabs",
"backend": { "backend": {
"type": "frigate", "type": "frigate",
"baseUrl": "http://YOUR-FRIGATE-HOST:5000", "baseUrl": "https://home.labs.casa/ccab4aaf_frigate",
"notes": "Keep raw camera credentials in Frigate or go2rtc, not in the Roku repo." "notes": "Keep raw camera credentials in Frigate or go2rtc, not in the Roku repo."
}, },
"layout": { "layout": {