C++ / Python / Execução registrada

ESP32 Telemetry

Calibrated acquisition, signal quality, per-sensor sequence numbers, a bounded buffer, and acknowledged serial delivery.

O que foi verificado

Os comandos abaixo executam o código do repositório e conferem os cenários registrados. A evidência cobre esses cenários na versão indicada; não comprova todas as entradas possíveis nem uso em produção. As entradas de laboratório e os testes do software não comprovam conexão ou operação em equipamentos físicos.

Versão executada
c7bfb0bb8ca49652d3406e23a6c16149e98cb469
Registro
2026-10-10T05:28:10.211320+00:00
Repositório
brunnojob/arduino-cloud-telemetry
Licença
MIT

A evidência abaixo pertence à versão registrada. A consulta usa a API pública do GitHub e pode atingir o limite de requisições.

Comandos e resultados reais

Resultados extraídos dos logs do Actions. Saídas extensas podem estar resumidas; a execução original e o artefato contêm o registro completo.

Baixar relatório JSON
PASS python -m pip install platformio==6.1.19

Saída: 0 · esperada: 0 · 6.064 s

$ bash -e -o pipefail -c python -m pip install platformio==6.1.19

Collecting platformio==6.1.19
  Downloading platformio-6.1.19-py3-none-any.whl.metadata (7.2 kB)
Collecting bottle==0.13.* (from platformio==6.1.19)
  Downloading bottle-0.13.4-py2.py3-none-any.whl.metadata (1.6 kB)
Collecting click<8.4,>=8.0.4 (from platformio==6.1.19)
  Downloading click-8.3.3-py3-none-any.whl.metadata (2.6 kB)
Collecting colorama (from platformio==6.1.19)
  Downloading colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB)
Collecting marshmallow==3.* (from platformio==6.1.19)
  Downloading marshmallow-3.26.2-py3-none-any.whl.metadata (7.3 kB)
Collecting pyelftools<1,>=0.27 (from platformio==6.1.19)
  Downloading pyelftools-0.33-py3-none-any.whl.metadata (1.0 kB)
Collecting pyserial==3.5.* (from platformio==6.1.19)
  Downloading pyserial-3.5-py2.py3-none-any.whl.metadata (1.6 kB)
Collecting requests==2.* (from platformio==6.1.19)
  Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
Collecting semantic_version==2.10.* (from platformio==6.1.19)
  Downloading semantic_version-2.10.0-py2.py3-none-any.whl.metadata (9.7 kB)
Collecting tabulate==0.* (from platformio==6.1.19)
  Downloading tabulate-0.10.0-py3-none-any.whl.metadata (40 kB)
Collecting ajsonrpc==1.2.* (from platformio==6.1.19)
  Downloading ajsonrpc-1.2.0-py3-none-any.whl.metadata (6.9 kB)
Collecting starlette<0.53,>=0.19 (from platformio==6.1.19)
  Downloading starlette-0.52.1-py3-none-any.whl.metadata (6.3 kB)
Collecting uvicorn<0.41,>=0.16 (from platformio==6.1.19)
  Downloading uvicorn-0.40.0-py3-none-any.whl.metadata (6.7 kB)
Collecting wsproto==1.* (from platformio==6.1.19)
  Downloading wsproto-1.3.2-py3-none-any.whl.metadata (5.2 kB)
Collecting packaging>=17.0 (from marshmallow==3.*->platformio==6.1.19)
  Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB)
Collecting charset_normalizer<4,>=2 (from requests==2.*->platformio==6.1.19)
  Downloading charset_normalizer-3.5.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (46 kB)
Collecting idna<4,>=2.5 (from requests==2.*->platformio==6.1.19)
  Downloading idna-3.20-py3-none-any.whl.metadata (7.2 kB)
Collecting urllib3<3,>=1.26 (from requests==2.*->platformio==6.1.19)
  Downloading urllib3-2.8.0-py3-none-any.whl.metadata (7.4 kB)
Collecting certifi>=2023.5.7 (from requests==2.*->platformio==6.1.19)
  Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)
Collecting anyio<5,>=3.6.2 (from starlette<0.53,>=0.19->platformio==6.1.19)
  Downloading anyio-4.15.1-py3-none-any.whl.metadata (4.7 kB)
Collecting typing-extensions>=4.10.0 (from starlette<0.53,>=0.19->platformio==6.1.19)
  Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB)
Collecting h11>=0.8 (from uvicorn<0.41,>=0.16->platformio==6.1.19)
  Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)
Downloading platformio-6.1.19-py3-none-any.whl (421 kB)
Downloading ajsonrpc-1.2.0-py3-none-any.whl (22 kB)
Downloading bottle-0.13.4-py2.py3-none-any.whl (103 kB)
Downloading click-8.3.3-py3-none-any.whl (110 kB)
Downloading marshmallow-3.26.2-py3-none-any.whl (50 kB)
Downloading pyelftools-0.33-py3-none-any.whl (201 kB)
Downloading pyserial-3.5-py2.py3-none-any.whl (90 kB)
Downloading requests-2.34.2-py3-none-any.whl (73 kB)
Downloading charset_normalizer-3.5.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (257 kB)
Downloading idna-3.20-py3-none-any.whl (69 kB)
Downloading semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)
Downloadi
Full transcript in the execution-proof artifact.
PASS pio test -e native

Saída: 0 · esperada: 0 · 18.949 s

$ bash -e -o pipefail -c pio test -e native

********************************************************************************
If you like PlatformIO, please:
- star it on GitHub > https://github.com/platformio/platformio-core
- follow us on LinkedIn to stay up-to-date on the latest project news > https://www.linkedin.com/company/platformio/
- try PlatformIO IDE for embedded development > https://platformio.org/platformio-ide
********************************************************************************

Verbosity level can be increased via `-v, -vv, or -vvv` option
Collected 1 tests
Platform Manager: Installing native
Downloading 0% 10%
Unpacking 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Platform Manager: native@1.2.1 has been installed!

Processing test_telemetry in native environment
--------------------------------------------------------------------------------
Building...
Tool Manager: Installing platformio/tool-scons @ ~4.40801.0
Downloading 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Unpacking 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Tool Manager: tool-scons@4.40801.0 has been installed!
Library Manager: Installing throwtheswitch/Unity @ ^2.6.1
Downloading 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
Unpacking 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Library Manager: Unity@2.6.1 has been installed!
Testing...
test/test_telemetry/test_main.cpp:57: test_calibration_and_quality	[PASSED]
test/test_telemetry/test_main.cpp:58: test_replay_is_rejected	[PASSED]
test/test_telemetry/test_main.cpp:59: test_serializer_escapes_json_identifiers	[PASSED]
test/test_telemetry/test_main.cpp:60: test_buffer_is_bounded_and_fifo	[PASSED]
-------------- native:test_telemetry [PASSED] Took 15.75 seconds --------------

=================================== SUMMARY ===================================
Environment    Test            Status    Duration
-------------  --------------  --------  ------------
native         test_telemetry  PASSED    00:00:15.752
================== 4 test cases: 4 succeeded in 00:00:15.752 ==================
PASS pio run -e esp32dev

Saída: 0 · esperada: 0 · 34.298 s

$ bash -e -o pipefail -c pio run -e esp32dev

Processing esp32dev (platform: espressif32@6.12.0; board: esp32dev; framework: arduino)
--------------------------------------------------------------------------------
Platform Manager: Installing espressif32 @ 6.12.0
Downloading 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Unpacking 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Platform Manager: espressif32@6.12.0 has been installed!
Tool Manager: Installing espressif/toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Downloading 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Unpacking 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Tool Manager: toolchain-xtensa-esp32@8.4.0+2021r2-patch5 has been installed!
Tool Manager: Installing platformio/framework-arduinoespressif32 @ ~3.20017.0
Downloading 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Unpacking 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Tool Manager: framework-arduinoespressif32@3.20017.241212+sha.dcc1105b has been installed!
Tool Manager: Installing platformio/tool-esptoolpy @ ~2.40900.0
Downloading 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Unpacking 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Collecting cryptography~=45.0.3
  Downloading cryptography-45.0.7-cp311-abi3-manylinux_2_34_x86_64.whl.metadata (5.7 kB)
Collecting ecdsa~=0.19.1
  Downloading ecdsa-0.19.2-py2.py3-none-any.whl.metadata (29 kB)
Collecting bitstring~=4.3.1
  Downloading bitstring-4.3.1-py3-none-any.whl.metadata (5.3 kB)
Collecting reedsolo~=1.7.0
  Downloading reedsolo-1.7.0-py3-none-any.whl.metadata (23 kB)
Collecting intelhex~=2.3.0
  Downloading intelhex-2.3.0-py2.py3-none-any.whl.metadata (2.7 kB)
Collecting cffi>=1.14 (from cryptography~=45.0.3)
  Downloading cffi-2.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.5 kB)
Collecting six>=1.9.0 (from ecdsa~=0.19.1)
  Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting bitarray<4.0,>=3.0.0 (from bitstring~=4.3.1)
  Downloading bitarray-3.12.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (41 kB)
Collecting pycparser (from cffi>=1.14->cryptography~=45.0.3)
  Downloading pycparser-3.11-py3-none-any.whl.metadata (8.2 kB)
Downloading cryptography-45.0.7-cp311-abi3-manylinux_2_34_x86_64.whl (4.5 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.5/4.5 MB 110.9 MB/s  0:00:00
Downloading ecdsa-0.19.2-py2.py3-none-any.whl (150 kB)
Downloading bitstring-4.3.1-py3-none-any.whl (71 kB)
Downloading reedsolo-1.7.0-py3-none-any.whl (32 kB)
Downloading intelhex-2.3.0-py2.py3-none-any.whl (50 kB)
Downloading bitarray-3.12.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (398 kB)
Downloading cffi-2.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (221 kB)
Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
Downloading pycparser-3.11-py3-none-any.whl (51 kB)
Installing collected packages: reedsolo, intelhex, six, pycparser, bitarray, ecdsa, cffi, bitstring, cryptography

Successfully installed bitarray-3.12.0 bitstring-4.3.1 cffi-2.1.1 cryptography-45.0.7 ecdsa-0.19.2 intelhex-2.3.0 pycparser-3.11 reedsolo-1.7.0 six-1.17.0
Tool Manager: tool-esptoolpy@2.40900.250804 has been installed!
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (6.12.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-j
Full transcript in the execution-proof artifact.
PASS python -m unittest discover -v -s cloud

Saída: 0 · esperada: 0 · 0.452 s

$ bash -e -o pipefail -c python -m unittest discover -v -s cloud

test_confirmed_receipt_marks_the_report_sent (test_receipts.ReceiptTests.test_confirmed_receipt_marks_the_report_sent) ... ok
test_events_reject_empty_values_of_the_wrong_type (test_receipts.ReceiptTests.test_events_reject_empty_values_of_the_wrong_type) ... ok
test_invalid_receipts_keep_the_report_pending (test_receipts.ReceiptTests.test_invalid_receipts_keep_the_report_pending) ... ok
test_omitted_events_and_empty_list_have_the_same_key (test_receipts.ReceiptTests.test_omitted_events_and_empty_list_have_the_same_key) ... ok
test_conflicting_key_cannot_overwrite_a_report (test_sync.OutboxTests.test_conflicting_key_cannot_overwrite_a_report) ... ok
test_retries_keep_reports_until_confirmed (test_sync.OutboxTests.test_retries_keep_reports_until_confirmed) ... ok

----------------------------------------------------------------------
Ran 6 tests in 0.061s

OK
PASS Compile firmware-core failure demonstration

Saída: 0 · esperada: 0 · 0.753 s

$ g++ -std=c++17 -Wall -Wextra -Werror -Iinclude .proof/demo.cpp src/telemetry.cpp -o /tmp/firmware-proof

PASS Demonstrate actual firmware logic on native inputs

Saída: 0 · esperada: 0 · 0.051 s

$ /tmp/firmware-proof

calibration overflow rejected; finite serialization enforced
Baixar transcrição

Reproduzir a execução

Os pré-requisitos e as entradas são públicos no repositório. Faça checkout da versão exata antes de executar os cenários.

git clone https://github.com/brunnojob/arduino-cloud-telemetry.git
cd arduino-cloud-telemetry
git checkout c7bfb0bb8ca49652d3406e23a6c16149e98cb469
python .proof/record.py