Widgets / directory

Terminal

TERMINAL

Bidirectional terminal for commands, logs and line-oriented interaction.

At a glance

Default8 x 5
Minimum4 x 3
Resizeboth
Pinrequired
Interactiveyes

Behavior

  • Very useful for diagnostics, ad-hoc commands and developer workflows.
  • Feels at home alongside OTA, USB and inline editor features.
  • Pairs naturally with Text Input and logs.

Firmware contract

Use a terminal helper or plain virtual writes for line output and parse incoming strings.

On the app side this widget snaps to the 8-column square grid and uses both resizing. Its raw type is TERMINAL and the matching icon token in the app is terminal.fill.

Pin support: Virtual pins carrying string lines in both directions.

Transmission: String writes over the mobile protocol. The current iOS app polls terminal output every 0.5 s and stores only the latest 100 messages per terminal key.

Canvas preview

docs.widget.preview
Terminal
status
Terminal
ACTIONS

Widget contract

PropertyValue
Raw typeTERMINAL
Default size8 x 5
Minimum size4 x 3
Resize modeboth
Pin requirementrequired
Pin supportVirtual pins carrying string lines in both directions.
Interactiveyes
TransmissionString writes over the mobile protocol. The current iOS app polls terminal output every 0.5 s and stores only the latest 100 messages per terminal key.

Allowed pin families

Virtual pins carrying string lines in both directions.

Transport path

String writes over the mobile protocol. The current iOS app polls terminal output every 0.5 s and stores only the latest 100 messages per terminal key.

Operational limits

Output history is truncated to 100 lines client-side

Service authority boundary

Terminal mixes UI and transport. The widget is a friendly shell over bounded text payloads and a polled output buffer, not an infinite stream.

Who validates it: backend / project policy / dashboard grants.

What the board sees: the resulting write, notification or text payload, not the visual tile itself.

Configuration surface

  • autoScrollOn toggles automatic bottom scroll
  • textInputOn enables the input bar
  • textLightOn swaps terminal chrome between dark and light terminal palettes

Limits and caveats

  • Output history is truncated to 100 lines client-side
  • The board transport receives chunks bounded by protocol message size and network framing, so this should not be treated as an infinite log sink

Protocol and implementation notes

  • The current iOS app polls terminal messages every 0.5 seconds and keeps only the latest 100 lines per terminal key.
  • Outgoing terminal input is plain text over a virtual pin, so long dumps should be redirected to logs or files instead of abusing the widget as a transport stream.
  • Because the protocol message body is finite and field-separated, large multiline blobs should be chunked board-side or avoided entirely.

Firmware example

A minimal pattern that matches how this widget usually talks to the board.

terminal.ino
1234567BLYNK_WRITE(V6) {  String command = param.asStr();  if (command == "status") {    terminal.println(readStatus());    terminal.flush();  }}

Layout notes

Canvas footprint

8 x 5

Default footprint in the Plynx canvas before user resizing.

Resize floor

4 x 3

The minimum size accepted by the app during drag-resize.

Interaction model

Live input

Whether the user edits state directly or only reads it.

Related widgets