Make documentation standalone and generalize examples

This commit is contained in:
Melvin Strobl
2026-10-25 14:43:20 +01:00
parent 13bf0f76d7
commit bdb18b99da
57 changed files with 553 additions and 481 deletions
+10 -10
View File
@@ -501,13 +501,13 @@ start and renames the file `panels.json.migrated`.
### A screen without a browser
The openpanel firmware, kept in its own repository, draws dashboards as native
widgets on an ESP32-P4 wall panel (Waveshare ESP32-P4-WIFI6-Touch-LCD-7B,
1024×600). Once its config page points it at this instance (the device's link
works too, the device keeps only its address), it shows the pairing code itself; enter it as in step 5. It reads the same published
dashboards and live values and draws every widget type with two exceptions,
both shown as a placeholder: a website tile that embeds a page (image tiles
work), and a chart of runs, which a device credential may not read. Media tiles
Compatible device firmware can draw dashboards as native widgets without a
browser. For example, openpanel supports ESP32-P4 wall panels. Once its
config page points it at this instance, it shows a pairing code; enter it as
in step 5. The device's link works too, since the device keeps only the
instance address. It reads the same published dashboards and live values.
Embedded website tiles and run charts show placeholders; image tiles work,
and device credentials cannot read runs. Media tiles
play MJPEG streams, pushed frames, images, and H.264 Baseline or MJPEG clips up
to 640×360. Re-encode other clips with the [clip recipe](../code/nodes.md#making-clips-playable-on-an-lvgl-panel).
@@ -625,9 +625,9 @@ A camera device (openpanel on a NANO) reports these ports:
dashboard tile, the preview on the device's page, a screen through the
portal), or a node of a running flow reads its message. Once its flow wires
`camera`, the device's page shows a **Camera** preview. A flow that reads
`camera` keeps it sending all the time, about 300 GB a month through a cloud
instance, so the Device node warns when a node in its flow reads a port that
sends on demand. Have flows read `snapshot` or `person` instead. To keep the
`camera` keeps it sending continuously. Traffic depends on resolution, frame
rate and image quality, so the Device node warns when a flow node reads an
on-demand port. For occasional updates, read `snapshot` or `person`. To keep the
picture of whoever came by, a node reading `snapshot` can hand it on to a
message of its own, which a media tile shows until the next one:
+4 -3
View File
@@ -1,9 +1,10 @@
# The dashboard app
Open your instance's app address, or select it at [fluksio.com](https://fluksio.com)
after enrollment. For the local Docker setup, use
[app.localhost](http://app.localhost) and the admin login printed by
`make init`. See [Getting started](../getting-started/index.md) for setup.
after enrollment. For the single-container setup, open
[localhost:8080](http://localhost:8080) and use the admin login printed by
`docker compose logs fluksio`. See [Getting started](../getting-started/index.md)
for setup.
## Finding your way around
+5 -4
View File
@@ -18,7 +18,7 @@ API requests, responses and live updates through the connection.
fluksio enroll <code>
```
The CLI uses `https://hub.fluksio.com` by default. If you started the engine
The CLI uses the built-in portal address by default. If you started the engine
with `--data-dir` or `--global`, use the same option when enrolling. A running
engine picks up the connection automatically; otherwise start it with
`fluksio serve`.
@@ -65,12 +65,13 @@ removing them at the portal, or disconnecting, deletes them.
## Hooks and agents through the portal
The portal also forwards a flow's hooks and the MCP endpoint, so they work
without an inbound port:
without an inbound port. Replace `portal.example.com` with your portal's API
address in these examples:
- A webhook or a served WebSocket:
`https://hub.fluksio.com/i/<instance-id>/hooks/<flow>/<url>/<secret>`,
`https://portal.example.com/i/<instance-id>/hooks/<flow>/<url>/<secret>`,
with `wss://` for a socket.
- An agent: `https://hub.fluksio.com/i/<instance-id>/mcp`, see
- An agent: `https://portal.example.com/i/<instance-id>/mcp`, see
[Agents over MCP](../code/agents.md).
Through the portal a hook needs a [secret](../reference/node-types.md#http).