Skip to content

chore(deps): move tiny-edge to v0.2.0 - #18

Merged
reubenmiller merged 2 commits into
mainfrom
chore/tiny-edge-v0.2.0
Nov 10, 2026
Merged

reubenmiller merged 2 commits into
mainfrom
chore/tiny-edge-v0.2.0

Conversation

@reubenmiller

@reubenmiller reubenmiller commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Moves the tiny-edge pin from v0.1.0 to v0.2.0. That release moves the client's core behind a port interface, with its own MQTT, HTTP and WebSocket clients.

Changes

  • west.yml: tiny-edge v0.1.0 → v0.2.0.
  • scripts/measure_tedge.sh: the minimal sample no longer has overlay-c8y.conf, so the c6 samples/minimal case now builds it with the minimal profile and the C6 board settings, like the other cases.

The apps only use the public API, and every option they use still exists, so none of them change. The v0.2.0 breaking change, struct tedge_remote_target, isn't used here.

Sizes

All 9 PR-subset builds that include the client pass locally:

Build Image Static RAM
snmp-agent tedge-full ESP32-C6 -70,145 B -4,056 B
tedge-agent tedge-ota ESP32-C6 -4,225 B -4,080 B
modbus-server tedge-full ESP32-S3 -4,352 B -4,076 B
snmp-agent tedge-full ESP32-S3 -4,321 B -4,044 B
opcua-server tedge-ota QT Py -3,950 B -4,076 B
tedge-agent tedge-full QT Py -4,367 B -4,076 B
modbus-server tedge-ota WROOM -10,975 B -4,080 B
tedge-agent tedge-ota WROOM -11,184 B -4,076 B
snmp-agent tedge-ota ESP32-CAM -11,408 B -4,080 B

The freed RAM goes to the heap. The same client code (on its PR branch) was tested over the air on the ESP32-C6 through Cumulocity. Firmware update, remote access (SSH, including a .local target), log upload, parameters and restart all worked.

Before merging

  • Commit the regenerated release/size-baseline.json, so later growth is measured from the new sizes.

🤖 Generated with Claude Code

reubenmiller and others added 2 commits November 9, 2026 22:35
v0.2.0 moves the client's core behind a port interface. The core now has
its own MQTT, HTTP and WebSocket clients. The apps here only use the
public API, so none of them change. Every build is smaller: 4 to 11 KB
of flash (70 KB on the ESP32-C6 full build) and about 4 KB of static
RAM, which goes to the heap.

The minimal sample no longer has overlay-c8y.conf, so the measure
script now builds it with the minimal profile and the board settings,
like the other cases.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Rebuilt all 36 release builds with scripts/release/baseline.sh. Every
build that includes the client is smaller, and its heap is about 4 KB
larger. The standalone builds are unchanged, apart from 1 byte of build
noise.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@reubenmiller
reubenmiller merged commit ab18960 into main Nov 10, 2026
21 checks passed
@reubenmiller
reubenmiller deleted the chore/tiny-edge-v0.2.0 branch November 10, 2026 02:50
reubenmiller added a commit that referenced this pull request Nov 10, 2026
Every build that runs the thin-edge.io client now carries tiny-edge's
provisioning library. On the ESP32-S3 and C6, that adds about 1.2 KB
of flash and 6.5 KB of static RAM, for the worker's stack and buffers.
On the classic ESP32, it adds about 6 KB of flash and 6.4 KB of RAM.
The standalone builds don't change.

Two images move by a 64 KB alignment step:
- modbus-server tedge-full on the C6 (content +8.5 KB).
- snmp-agent tedge-full on the QT Py S3, which dropped by the same step
  in #18.

Both are within their flash budgets.

The sizes come from a CI run of every build (release workflow, run
42801580748), using the same size.py report that --write-baseline
records.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
reubenmiller added a commit that referenced this pull request Nov 10, 2026
* feat: set devices up over USB with tedge-onboard

Builds with the thin-edge.io client now include tiny-edge's
provisioning library (APP_TEDGE_PROVISIONING), so tedge-onboard, run on
a computer the device is plugged into, can give it a Wi-Fi network and
register it in Cumulocity:
- net.c gains app_net_switch_network(). It tries a network through the
  normal reconnect path, and stores it only once the device has an
  address. Otherwise it goes back to the stored network, so a mistyped
  password cannot strand a device.
- lib/common/prov_tedge.c provides the library's hooks: Wi-Fi through
  that switch, identify by flashing the status LED, the tiny-edge
  Zephyr port's scan, and the application's firmware name and version.
- A device with no Wi-Fi network starts the client first and waits for
  the tool, instead of rebooting into the Wi-Fi provisioner (the button
  pattern still starts it). It then waits for a network for as long as
  it takes, and the reconnect loop no longer retries without
  credentials.

tiny-edge is pinned to its serial-onboarding branch for now.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* feat: set up over USB by default, BLE on the button pattern

A tedge-* device with no Wi-Fi network waits for tedge-onboard, and
shows the provisioning pattern on its status LED until it is set up.
Pressing the button 3 times within 2 seconds still starts the Wi-Fi
provisioner (Improv over BLE, or lab-ztp-provisioner). The README
describes both.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* refactor: use tiny-edge's provisioning defaults, one start-up helper

lib/common/prov_tedge.c starts provisioning with
tedge_provisioning_zephyr_init(). It passes only what these
applications do their own way: Wi-Fi through net.c, which owns
connecting; identify on the status LED; and the firmware name. The
scan and the chip come from the tiny-edge Zephyr port.

The start-up block that each of the four apps repeated, "no Wi-Fi yet:
start the client first, wait for the network", is now one call,
app_prov_tedge_start_unprovisioned(). In builds without the client it
is a macro that names no client symbol.

tiny-edge is pinned to the branch of thin-edge/tiny-edge#9 for now.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* chore(deps): move tiny-edge to v0.3.0

The release with the provisioning library, its Zephyr defaults
(tedge_provisioning_zephyr_init()), tedge-onboard, and the
code-scanning fixes. It replaces the pin to the pull request branch.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* chore(release): record sizes with the provisioning library

Every build that runs the thin-edge.io client now carries tiny-edge's
provisioning library. On the ESP32-S3 and C6, that adds about 1.2 KB
of flash and 6.5 KB of static RAM, for the worker's stack and buffers.
On the classic ESP32, it adds about 6 KB of flash and 6.4 KB of RAM.
The standalone builds don't change.

Two images move by a 64 KB alignment step:
- modbus-server tedge-full on the C6 (content +8.5 KB).
- snmp-agent tedge-full on the QT Py S3, which dropped by the same step
  in #18.

Both are within their flash budgets.

The sizes come from a CI run of every build (release workflow, run
42801580748), using the same size.py report that --write-baseline
records.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant