Add Frigate-backed starter camera config
This commit is contained in:
18
README.md
18
README.md
@@ -2,6 +2,8 @@
|
||||
|
||||
visionLabs Roku is a private Roku app scaffold for viewing home security cameras on a TV.
|
||||
|
||||
The current starter path is Frigate-backed, with Roku reading a static inventory of cameras that are managed by Frigate instead of embedding raw camera credentials in the app.
|
||||
|
||||
## Product direction
|
||||
|
||||
- Brand family follows the user's existing `Labs` naming pattern.
|
||||
@@ -12,7 +14,7 @@ visionLabs Roku is a private Roku app scaffold for viewing home security cameras
|
||||
## Technical direction
|
||||
|
||||
- Roku SceneGraph app
|
||||
- Camera feeds delivered as HLS where possible
|
||||
- Camera feeds delivered from Frigate in a Roku-friendly format, ideally HLS
|
||||
- Static JSON config for the first prototype
|
||||
- Future backend for editing, persistence, and auth
|
||||
|
||||
@@ -22,16 +24,18 @@ visionLabs Roku is a private Roku app scaffold for viewing home security cameras
|
||||
- `source/main.brs` - app entry point
|
||||
- `components/MainScene.xml` - initial SceneGraph UI
|
||||
- `components/MainScene.brs` - scene behavior
|
||||
- `config/cameras.json` - static sample camera config
|
||||
- `config/cameras.json` - static Frigate-backed starter camera config
|
||||
- `docs/FRIGATE_SETUP.md` - notes for mapping cameras through Frigate
|
||||
- `docs/ROADMAP.md` - delivery phases and constraints
|
||||
|
||||
## Notes
|
||||
|
||||
Roku is not a great target for raw RTSP feeds. The clean path is to expose camera streams as HLS, either directly from the NVR or through a relay/transcoder layer.
|
||||
Roku is not a great target for raw RTSP feeds. With Frigate in the middle, the clean path is to let Frigate manage discovery, auth, and stream brokering, then expose a Roku-friendly live feed format from there.
|
||||
|
||||
## Next steps
|
||||
|
||||
1. Replace sample camera URLs in `config/cameras.json`
|
||||
2. Load config into the UI
|
||||
3. Render a static multi-camera grid
|
||||
4. Add edit mode and persistence strategy
|
||||
1. Set the real Frigate base URL in `config/cameras.json`
|
||||
2. Map the four starter cameras in Frigate using the same IDs as the Roku config
|
||||
3. Load config into the UI
|
||||
4. Render a static multi-camera grid
|
||||
5. Add edit mode and persistence strategy
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
translation="[80, 260]"
|
||||
width="1760"
|
||||
height="120"
|
||||
text="Project scaffold is live. Next step: load static cameras.json and render HLS camera tiles."
|
||||
text="Project scaffold is live. Next step: load Frigate camera config and render the first Roku camera grid."
|
||||
font="font:MediumSystemFont"
|
||||
color="0x8B949EFF" />
|
||||
</children>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
{
|
||||
"appName": "visionLabs",
|
||||
"backend": {
|
||||
"type": "frigate",
|
||||
"baseUrl": "http://YOUR-FRIGATE-HOST:5000",
|
||||
"notes": "Keep raw camera credentials in Frigate or go2rtc, not in the Roku repo."
|
||||
},
|
||||
"layout": {
|
||||
"type": "grid",
|
||||
"columns": 2,
|
||||
@@ -7,28 +12,32 @@
|
||||
},
|
||||
"cameras": [
|
||||
{
|
||||
"id": "front-door",
|
||||
"name": "Front Door",
|
||||
"streamUrl": "https://example.invalid/front-door/index.m3u8",
|
||||
"snapshotUrl": "https://example.invalid/front-door.jpg"
|
||||
"id": "cam195",
|
||||
"name": "Cam 195",
|
||||
"frigateCamera": "cam195",
|
||||
"host": "192.168.0.195",
|
||||
"onvif": true
|
||||
},
|
||||
{
|
||||
"id": "driveway",
|
||||
"name": "Driveway",
|
||||
"streamUrl": "https://example.invalid/driveway/index.m3u8",
|
||||
"snapshotUrl": "https://example.invalid/driveway.jpg"
|
||||
"id": "cam196",
|
||||
"name": "Cam 196",
|
||||
"frigateCamera": "cam196",
|
||||
"host": "192.168.0.196",
|
||||
"onvif": true
|
||||
},
|
||||
{
|
||||
"id": "garage",
|
||||
"name": "Garage",
|
||||
"streamUrl": "https://example.invalid/garage/index.m3u8",
|
||||
"snapshotUrl": "https://example.invalid/garage.jpg"
|
||||
"id": "cam201",
|
||||
"name": "Cam 201",
|
||||
"frigateCamera": "cam201",
|
||||
"host": "192.168.0.201",
|
||||
"onvif": true
|
||||
},
|
||||
{
|
||||
"id": "back-yard",
|
||||
"name": "Back Yard",
|
||||
"streamUrl": "https://example.invalid/back-yard/index.m3u8",
|
||||
"snapshotUrl": "https://example.invalid/back-yard.jpg"
|
||||
"id": "cam228",
|
||||
"name": "Cam 228",
|
||||
"frigateCamera": "cam228",
|
||||
"host": "192.168.0.228",
|
||||
"onvif": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
37
docs/FRIGATE_SETUP.md
Normal file
37
docs/FRIGATE_SETUP.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# visionLabs Frigate setup
|
||||
|
||||
This project now assumes Frigate is the backend that owns camera auth, camera discovery, and stream handling.
|
||||
|
||||
## Starter inventory
|
||||
|
||||
The first four cameras are currently modeled as:
|
||||
|
||||
- `cam195` -> `192.168.0.195`
|
||||
- `cam196` -> `192.168.0.196`
|
||||
- `cam201` -> `192.168.0.201`
|
||||
- `cam228` -> `192.168.0.228`
|
||||
|
||||
All four are ONVIF-capable and should be added to Frigate using matching camera IDs where possible.
|
||||
|
||||
## Important rule
|
||||
|
||||
Do not commit raw camera passwords to this repo.
|
||||
|
||||
Keep camera credentials inside:
|
||||
|
||||
- Frigate config
|
||||
- go2rtc config
|
||||
- a local secret file outside version control
|
||||
|
||||
## What to update next
|
||||
|
||||
1. Set the real Frigate base URL in `config/cameras.json`
|
||||
2. Confirm the Frigate camera IDs match `cam195`, `cam196`, `cam201`, and `cam228`
|
||||
3. Decide which Frigate live endpoint format the Roku app should consume first
|
||||
4. Add snapshot and live tile loading in the SceneGraph UI
|
||||
|
||||
## Why this shape works
|
||||
|
||||
- Roku does not want to manage ONVIF directly
|
||||
- Roku is happier when Frigate handles the camera-side protocol mess
|
||||
- This keeps the app focused on layout, browsing, and playback
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
## Phase 1
|
||||
|
||||
- Static packaged camera config
|
||||
- Static packaged Frigate-backed camera config
|
||||
- Simple Roku SceneGraph shell
|
||||
- One screen with a fixed camera grid
|
||||
- HLS-backed streams only
|
||||
- Frigate-managed live feeds in a Roku-friendly format
|
||||
|
||||
## Phase 2
|
||||
|
||||
@@ -28,5 +28,6 @@
|
||||
## Constraints
|
||||
|
||||
- Roku does not directly fit raw RTSP workflows well
|
||||
- Frigate should own camera auth and camera-side protocol details
|
||||
- HLS is the safest first-class playback target
|
||||
- Packaged JSON is fine for V1 but not enough for runtime editing
|
||||
|
||||
Reference in New Issue
Block a user