Commit Graph
83 Commits
Author SHA1 Message Date
chriz 0d8a8b35f0 disable some decoders.
Build and Release OpenMQTTGateway Firmware / Build Firmware & Publish Gitea Release (push) Canceled after 3m53s
2026-10-29 20:49:24 +01:00
chriz d686cf71fc enable oled.
Build and Release OpenMQTTGateway Firmware / Build Firmware & Publish Gitea Release (push) Successful in 15m42s
2026-10-29 18:58:25 +01:00
chriz 86ecf4e5be ESA energy enable patch during build.
Build and Release OpenMQTTGateway Firmware / Build Firmware & Publish Gitea Release (push) Successful in 15m51s
2026-10-27 22:41:03 +01:00
chriz a11f3b9990 Merge remote-tracking branch 'origin/development' into development
# Conflicts:
#	.github/workflows/build.yml
#	.github/workflows/build_and_docs_to_dev.yml
#	.github/workflows/manual_docs.yml
#	.github/workflows/release.yml
#	platformio.ini
2026-10-27 22:31:36 +01:00
chriz 6da131f43c Custom Config.
Build / Build with PlatformIO (airm2m_core_esp32c3) (push) Failing after 1m32s
Build / Build with PlatformIO (atmega-all-test) (push) Failing after 22s
Build / Build with PlatformIO (avatto-bakeey-ir) (push) Failing after 24s
Build / Build with PlatformIO (esp32-lolin32lite-ble) (push) Failing after 20s
Build / Build with PlatformIO (esp32-m5atom-lite) (push) Failing after 21s
Build / Build with PlatformIO (esp32-m5atom-matrix) (push) Failing after 21s
Build / Build with PlatformIO (esp32-m5stack-ble) (push) Failing after 22s
Build / Build with PlatformIO (esp32-m5stick-ble) (push) Failing after 22s
Build / Build with PlatformIO (esp32-m5stick-c-ble) (push) Failing after 21s
Build / Build with PlatformIO (esp32-m5stick-cp-ble) (push) Failing after 20s
Build / Build with PlatformIO (esp32-m5tough-ble) (push) Failing after 22s
Build / Build with PlatformIO (esp32-olimex-gtw-ble-eth) (push) Failing after 21s
Build / Build with PlatformIO (esp32-olimex-gtw-ble-poe) (push) Failing after 22s
Build / Build with PlatformIO (esp32-olimex-gtw-ble-poe-iso) (push) Failing after 20s
Build / Build with PlatformIO (esp32-olimex-gtw-ble-wifi) (push) Failing after 20s
Build / Build with PlatformIO (esp32-wt32-eth01-ble-eth) (push) Failing after 21s
Build / Build with PlatformIO (esp32c3-dev-m1-ble) (push) Failing after 21s
Build / Build with PlatformIO (esp32c3-m5stamp) (push) Failing after 21s
Build / Build with PlatformIO (esp32c3_lolin_mini) (push) Canceled after 5s
Build / Build with PlatformIO (esp32dev-all-test) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-ble-aws) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-ble-datatest) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-ble-idf) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-ble-mqtt-undecoded) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-ble) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-gf-sun-inverter) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-ir) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-multi_receiver-pilight) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-multi_receiver) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-pilight-cc1101) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-pilight-somfy-cc1101) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-rf) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-rtl_433) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-somfy-cc1101) (push) Canceled after 0s
Build / Build with PlatformIO (esp32dev-weatherstation) (push) Canceled after 0s
Build / Build with PlatformIO (esp32doitv1-aithinker-r01-sx1278) (push) Canceled after 0s
Build / Build with PlatformIO (esp32feather-ble) (push) Canceled after 0s
Build / Build with PlatformIO (esp32s3-atomS3U) (push) Canceled after 0s
Build / Build with PlatformIO (esp32s3-dev-c1-ble) (push) Canceled after 0s
Build / Build with PlatformIO (heltec-ble) (push) Canceled after 0s
Build / Build with PlatformIO (heltec-rtl_433-fsk) (push) Canceled after 0s
Build / Build with PlatformIO (heltec-rtl_433) (push) Canceled after 0s
Build / Build with PlatformIO (heltec-wifi-lora-32) (push) Canceled after 0s
Build / Build with PlatformIO (lilygo-ble) (push) Canceled after 0s
Build / Build with PlatformIO (lilygo-rtl_433-fsk) (push) Canceled after 0s
Build / Build with PlatformIO (lilygo-rtl_433) (push) Canceled after 0s
Build / Build with PlatformIO (manual-wifi-test) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-2g) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-all-test) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-fastled-test) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-ir) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-mqtt-fw-test) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-pilight) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-rf2-cc1101) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-rf2) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-rf-cc1101) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-rf) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-rs232) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-somfy-cc1101) (push) Canceled after 0s
Build / Build with PlatformIO (nodemcuv2-weatherstation) (push) Canceled after 0s
Build / Build with PlatformIO (rf-wifi-gateway) (push) Canceled after 0s
Build / Build with PlatformIO (rfbridge-direct) (push) Canceled after 0s
Build / Build with PlatformIO (rfbridge) (push) Canceled after 0s
Build / Build with PlatformIO (shelly-plus1) (push) Canceled after 0s
Build / Build with PlatformIO (sonoff-basic-rfr3) (push) Canceled after 0s
Build / Build with PlatformIO (sonoff-basic) (push) Canceled after 0s
Build / Build with PlatformIO (theengs-bridge) (push) Canceled after 0s
Build / Build with PlatformIO (thingpulse-espgateway) (push) Canceled after 0s
Build / Build with PlatformIO (tinypico-ble) (push) Canceled after 0s
Build / Build with PlatformIO (ttgo-lora32-v1) (push) Canceled after 0s
Build / Build with PlatformIO (ttgo-lora32-v21) (push) Canceled after 0s
Build / Build with PlatformIO (ttgo-t-beam) (push) Canceled after 0s
Build / Build with PlatformIO (uno-fastled) (push) Canceled after 0s
Build / Build with PlatformIO (uno-rf) (push) Canceled after 0s
Build / Create the documentation (push) Canceled after 0s
Check Code Format / lint (push) Canceled after 11s
2026-10-27 21:52:20 +01:00
Shad107 9795527b34 [BOARD] Add ISNO Super build environment (ESP32-S3, dual CC1101 433 + 868/915 MHz) (#2378)
The ISNO Super is an open-hardware ESP32-S3 board carrying two CC1101
sub-GHz radios (433 MHz and 868/915 MHz) combined on a single antenna
through a passive LC diplexer. This environment builds on the
esp32dev-multi_receiver RF stack; it drives the 868/915 MHz radio (868
in the EU, 915 in the US) and parks the 433 MHz one using the existing
RF_MODULE_SECONDARY_CS hook in commonRF.cpp.

Signed-off-by: Olivier Delafosse <olshad@gmail.com>
2026-10-02 05:39:46 -05:00
4e3ed19827 [NET] ESP32 Ethernet: PHY cold-cycle at boot, default on Theengs Bridge (#2364)
Power ETH_PHY_POWER down for 200 ms and back up 200 ms before ETH.begin()
so the PHY always gets a true cold start. A warm PHY left in a stale state
(reproduced on Theengs Bridge v1.1 with PSRAM enabled after an NVS erase)
can flap the link until a manual power cycle: it reports up for one poll,
then down for several seconds, forever, so DHCP never completes. The short
reset the Ethernet driver performs on its own does not clear that state; a
power cycle with a settle window before begin() does. On a hardware-in-the-
loop bench the same provocation went from flapping every trial to flapping
in none of them (4/4).

Enabled via -DETH_PHY_COLD_CYCLE, only active when ETH_PHY_POWER is a valid
pin, at the cost of ~400 ms added boot time. Set by default on both Theengs
Bridge environments.

Co-authored-by: Florian <1technophile@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 08:39:39 -05:00
47da455246 [BLE] Fix esp32dev-ble-idf: bump esp-nimble-cpp 2.1.1 -> 2.5.0 (#2361)
esp-nimble-cpp 2.1.1 no longer exists: the PlatformIO registry pruned it
(2.3.2 is now the oldest available) and the upstream 2.1.1 git tag was
deleted as well. Dependency resolution therefore fails before any
compilation, breaking every build of esp32dev-ble-idf:

  UnknownPackageError: Could not find the package with
  'h2zero/esp-nimble-cpp @ 2.1.1' requirements

Pin 2.5.0, matching the NimBLE-Arduino 2.5.0 already used by the Arduino
ESP32 environments, and reference the GitHub archive rather than the
registry so future registry pruning cannot break the build again.

No source changes are needed: esp32dev-ble-idf builds clean with the
newer API, blufi.cpp included.

Co-authored-by: Florian <1technophile@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 17:25:34 -05:00
FlorianandClaude Opus 5 b6b23bd423 [RF] Move RTL_433 / SX127x envs to the shipped ESP32 platform (#2360)
Eight environments were still pinned to espressif32@6.1.0 (arduino-esp32
2.0.7 / IDF 4.4) while the rest of the tree had moved to the shared
${com.esp32_platform} definition. Align them so they build against the
platform that actually ships, rather than silently keeping an old
toolchain alive:

  esp32doitv1-aithinker-r01-sx1278
  esp32dev-rtl_433, esp32dev-rtl_433-fsk
  heltec-rtl_433, heltec-rtl_433-fsk
  lilygo-rtl_433, lilygo-rtl_433-fsk
  esp32dev-multi_receiver

The stray "* copy.c" duplicate in rtl_433_ESP that previously blocked
these envs on a modern toolchain is gone as of rtl_433_ESP v0.6.0, which
development already pulls in, so no build workaround is needed.

The move alone is not sufficient: the newer core leaves ~35 KB less heap
on BT-less ESP32 builds, which pushes the memory-constrained RTL_433
boards into a boot loop at the first TLS handshake. That is fixed here
too, in main.cpp.

On ESP32-classic builds without ZgatewayBT, arduino-esp32 3.x leaves most
of the Bluetooth controller's reserved DRAM (CONFIG_BTDM_RESERVE_DRAM =
0xdb5c, 56156 B) stranded. arduino-esp32 2.x released the whole BTDM
region unconditionally in initArduino():

    if (!btInUse()) esp_bt_controller_mem_release(ESP_BT_MODE_BTDM);

3.x releases CLASSIC and BLE separately, and the CLASSIC pass silently
short-circuits. cores/esp32/esp32-hal-bt.c has:

    #if defined(CONFIG_BT_CLASSIC_ENABLED)
    static bool _classicMemReleased = false;
    #else
    static bool _classicMemReleased = true;  // "No Classic BT on this chip"
    #endif

With a BLE-only controller build CONFIG_BT_CLASSIC_ENABLED is unset, so
_classicMemReleased starts true and btMemRelease(BT_MODE_CLASSIC_BT)
returns "already released" without reaching IDF. Only the ~5 KB BLE slice
is freed. The guard is wrong for this part: ESP32 does have Classic BT
hardware (CONFIG_SOC_BT_CLASSIC_SUPPORTED) and the DRAM is reserved
regardless of the controller's configured mode; the correct guard would be
CONFIG_SOC_BT_CLASSIC_SUPPORTED. Reported upstream separately.

Release the whole BTDM region explicitly. esp_bt_mem_release() is used
rather than esp_bt_controller_mem_release() because it is a superset that
also frees the linker _bt_data / _bt_controller_* sections. The guard is
compile-time and authoritative: OMG knows via ZgatewayBT whether it uses
BT, whereas the core infers it from link-time flags that NimBLE-Arduino
does not set. Safe no-op if the memory was already released or once the
core is fixed. Note this makes btStart() permanently unavailable in these
builds, which is already the case for a !ZgatewayBT build.

Measured on a Heltec WiFi LoRa32 V2 running heltec-rtl_433 (WiFi + MQTT +
TLS + rtl_433 + SSD1306, no BT), pioarduino 55.03.39 / esp32-arduino-libs
0.1.8:

  BT DRAM reclaimed: 209928 -> 245048        (+35120 B)
  Update check, free heap: 49868 -> 89484

Without it, the boot-time HTTPS update check fails its TLS handshake
("Dynamic Impl: alloc(4437 bytes) failed", then X509 -9984) because the
largest free block is too small, and the MinimumMemory watchdog then
reboots the board in a loop. With it: no allocation failure, handshake
succeeds, freemem ~85 KB / minmem 53432 against the 40000 threshold,
0 reboots over a 3 min soak with live RTL_433 decodes.

The memory fix affects every ESP32-classic env without ZgatewayBT, not
just the ones moved here. The RTL_433 envs fail loudly because they carry
the MinimumMemory watchdog; others (esp32dev-ir, esp32dev-pilight,
ttgo-lora32-v21, heltec-wifi-lora-32, ...) simply run ~35 KB short.
Builds with ZgatewayBT are unaffected.

Hardware validation, two boards:

  heltec-rtl_433 (OOK 433.92 MHz, Heltec WiFi LoRa32 V2)
    boots, joins WiFi/MQTT, RadioLib/SX127x RSSI calibration completes,
    HA discovery publishes, decodes live ambient sensors
    (Ambientweather-F007TH, Prologue-TH, WEC-2103).

  heltec-rtl_433-fsk (FSK 915 MHz, second Heltec)
    same boot path, decodes a live Fineoffset-WH51 soil sensor.

The other six envs have no matching board on hand and are compile-only.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 14:15:48 -05:00
FlorianandClaude Opus 5 d8ffa3f1dd [SYS] Migrate M5 boards to M5Unified + M5GFX (modern platform) (#2355)
The per-board libs (M5Stack/M5StickC/M5StickC-Plus/M5Tough) don't build on
Arduino core 3.x, which kept the five M5 BLE envs pinned to espressif32@6.1.0.
Port board support to M5Unified + M5GFX so they run ${com.esp32_platform} like
the rest of the tree.

- environments.ini: 5 M5 envs -> modern platform + m5unified. m5stick-c uses the
  pico32 variant (m5stick_c variant absent upstream) and no_coredump partitions
  (M5Unified overflows min_spiffs).
- boardM5.cpp / config_M5.h: single <M5Unified.h>; M5.Lcd aliases M5.Display;
  unified brightness/sleep/wake.
- main.cpp / mqttDiscovery.cpp: battery telemetry via M5.Power; AXP192-only
  Vin/VBus/temp fields dropped (no portable equivalent).

All five M5 envs build; M5Stack Core hardware-verified.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 16:45:35 -05:00
f5b33104ef [DOCS] Overhaul new-user onboarding, home page, and upload flow (#2347)
Getting started:
- New 15-minute Getting Started guide featuring the two most popular
  tracks (BLE on esp32dev-ble, RF on lilygo-rtl_433), with broker setup
  and a verification step
- Sidebar restructured around the new-user journey; upload options
  numbered by ease; Gitpod upload method removed

Home page:
- VitePress hero with clear actions, larger hero image
- How-it-works pipeline diagram shared as a component (responsive via
  container queries), use-case grid, bigger video tiles without the
  image lightbox, refreshed press coverage list, functions pills
- Support section pointing to Theengs Bridge and
  github.com/sponsors/1technophile

Upload flow:
- Decision-oriented upload landing page (journey strip, method cards,
  comparison table)
- Pre-flight checklist and driver troubleshooting on the web installer
- Guided environment picker (bridge + hardware wizard) replacing the
  filter chips, with manifest-verified recommendations
- Post-flash next-steps card linking to the portal and verification

Board images:
- custom_img key in environments.ini and board photos for all
  web-flashable environments (licenses recorded); private prod_env.ini
  environments excluded from boards-info.json

Corrections:
- RF frequency coverage stated as 433/315/868/915MHz
- Removed references to the retired compatible.openmqttgateway.com
  site (BLE list is decoder.theengs.io), the discontinued Theengs
  Plug, and the private sponsor forum


Claude-Session: https://claude.ai/code/session_01TYysQW8tpmt1dWWuzKhTLi

Co-authored-by: Florian <1technophile@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 10:23:43 -05:00
FlorianandClaude Opus 4.8 b01240330a [ONOFF] Fix ACTUATOR_TRIGGER build flag: missing -D prefix (#2334)
Several envs pass '-ACTUATOR_TRIGGER=true' instead of
'-DACTUATOR_TRIGGER=true', so the ACTUATOR_TRIGGER macro is never defined
and the physical-button -> relay toggle in sensorGPIOInput.cpp
(#if defined(ZactuatorONOFF) && defined(ACTUATOR_TRIGGER)) is compiled out.

Verified on a Theengs Plug: with the -D added, a button press now toggles the
relay and emits ONOFFtoMQTT. Same one-character fix applied to the other envs
carrying the identical typo.

Affected envs: theengs-plug, esp32dev-all-test, sonoff-basic, sonoff-basic-rfr3.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 06:09:04 -05:00
0bbc00cfa0 [SYS] esp32_platform: update to 55.03.39 (#2329)
* esp32_platform: update to 55.03.39

## Summary

- Add support for Python 3.14
- Improve ESP32 platform and framework compatibility.
- Update board support and toolchain integrations.
- Fix stability and hardware-specific issues across supported ESP32 targets.
- Release notes:
    - [55.03.39](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.39)
    - [55.03.38](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.38)
    - [55.03.37](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.37)
    - [55.03.36](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.36)
    - [55.03.35](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.35)
    - [55.03.34](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.34)

* update build to use python 3.14 with platformio 6.1.19

* Update esp32-arduino-lib-builder to v1.5

* [CI] Fix call8 link overflow on large Xtensa builds (IDF 5.5.4)

The 55.03.39 / IDF 5.5.4 bump enlarges the precompiled libs enough that
large Xtensa images (esp32 / esp32s3) overflow the call8 reach and fail to
link with "dangerous relocation: call8: call target out of range".
-mlongcalls (which makes calls linker-relaxable) is injected by
esp32-arduino-libs into the framework compile but NOT into lib_deps
(NimBLE-Arduino, ArduinoJson) or project sources.

Add a project pre: extra_script (scripts/add_mlongcalls.py) that applies
-mlongcalls to CCFLAGS/ASFLAGS, gated on the Xtensa MCUs (RISC-V c3 has no
call8 and rejects the flag). Wired into [env]; the four esp32dev-*pilight*
envs that set their own extra_scripts list it explicitly too, since
PlatformIO replaces rather than merges extra_scripts.

Also bump esp32-arduino-libs 0.1.5 -> 0.1.6, which restores the
framework-side -mdisable-hardware-atomics / -fno-builtin-* flags that 0.1.5
dropped under IDF 5.5.4 (separate from the lib_deps call8 issue).

Verified clean (0 call8): esp32dev-all-test, esp32dev-ble, theengs-bridge,
theengs-plug, esp32dev-pilight (+cc1101); esp32c3 unaffected.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Florian <florian@theengs.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 09:38:12 -05:00
FlorianandClaude 4d945851ce [SYS] Add WiFi reconnect watchdog to self-heal from wedged WiFi stack (#2319)
When the network drops at runtime and the WiFi stack is wedged (e.g. the
ESP32 driver getting stuck after a long uptime, see #2276), the main loop
kept calling wifi_reconnect_bypass() forever with no recovery: the device
stayed stale until a manual reboot. The reboot watchdog only existed in the
ESPWifiManualSetup path, which the default WiFiManager build doesn't compile.

Count consecutive reconnection failures in the runtime loop and ESPRestart(2)
once they exceed maxRetryWatchDog, mirroring the existing manual-setup
watchdog. Gated behind the new WifiReconnectWatchDog flag (default on) so
environments where an unexpected reboot is undesirable can opt out; disabled
for theengs-plug to avoid interrupting the relay state.

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-01 08:50:12 -05:00
7551ed9e22 [MEM] Enable PSRAM on Theengs Bridge v1.1 (ESP32-WROVER-IE) (#2303)
- Switch Ethernet RMII clock from GPIO16 to GPIO0 output mode,
  freeing GPIO16 for PSRAM chip select (SPICS1) on WROVER-IE
- Enable PSRAM with QIO flash mode and cache workaround flags
- Add PHY pre-power support for ETH_CLOCK_GPIO0_IN mode
- Report PSRAM status and free memory in SYS MQTT topic

Requires Theengs lib-builder update: remove LIBTIME from IRAM
cache workaround (CONFIG_SPIRAM_CACHE_LIBTIME_IN_IRAM=n) to
free ~3.5KB IRAM for the -mfix-esp32-psram-cache-issue flag.

Tested on Theengs Bridge v1.1: 4MB PSRAM detected, Ethernet
100Mbps on GPIO0, BLE scanning nominal.

Co-authored-by: Florian <1technophile@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 15:59:12 -05:00
Alessandro Staniscia 98481c5145 [SITE] Renew the web board presentation and the ESP32 web upload + [SYS] Security checks (#2277)
* Refactor GitHub Actions workflows for build, documentation, and linting

- Consolidated build logic into reusable workflows (`task-build.yml` and `task-docs.yml`) to reduce duplication across multiple workflows.
- Introduced `environments.json` to centralize the list of PlatformIO build environments, improving maintainability and clarity.
- Updated `build.yml` and `build_and_docs_to_dev.yml` to utilize the new reusable workflows and environment definitions.
- Enhanced `release.yml` to streamline the release process and integrate documentation generation.
- Created reusable linting workflow (`task-lint.yml`) to standardize code formatting checks across the repository.
- Simplified manual documentation workflow by leveraging the new reusable documentation workflow.
- Improved artifact management and retention policies across workflows.
- Updated dependencies and versions in workflows to ensure compatibility and performance.

CI/CD pipeline agnostic of Workflow Engine and integrated on github actions

- Implemented ci.sh for orchestrating the complete build pipeline.
- Created ci_00_config.sh for centralized configuration of build scripts.
- Created ci_build_firmware.sh for building firmware for specified PlatformIO environments.
- Created ci_prepare_artifacts.sh for preparing firmware artifacts for upload or deployment.
- Created ci_set_version.sh for updating version tags in firmware configuration files.
- Created ci_build.sh to orchestrate the complete build pipeline.
- Created ci_qa.sh for code linting and formatting checks using clang-format.
- Created ci_site.sh for building and deploying VuePress documentation with version management.
- Implemented checks for required tools and dependencies in the new scripts.
- Improved internal scripts for better error handling and logging.

UPDATE the web installer manifest generation and update documentation structure
- Enhanced ci_list-env.sh to list environments from a JSON file.
- Replaced  common_wu.py and gen_wu.py scripts with new npm scripts for site generation and previewing on docsgen/gen_wu.js
- Replaced  generate_board_docs.py with docsgen/generated_board_docs.js
- Added new npm scripts for integration of site generation on build phase.
- Created preview_site.js to serve locally generated site over HTTPS with improved error handling.
- Added new CI environments for CI builds in environments.json.
- Deleted lint.yml as part of workflow cleanup.
- Enhanced task-build.yml to include linting as a job and added support for specifying PlatformIO version.
- Improved task-docs.yml to handle versioning more effectively and added clean option.

Enhance documentation
- ADD CLEAR Mark of development version of site
- Updated README.md to include detailed workflow dependencies and relationships using mermaid diagrams.
- Improved development.md with a quick checklist for contributors and clarified the code style guide.
- Enhanced quick_start.md with tips for contributors and streamlined the workflow explanation.

LINT FIX
- Refined User_config.h for better formatting consistency.
- Adjusted blufi.cpp and gatewayBT.cpp for improved code readability and consistency in formatting.
- Updated gatewaySERIAL.cpp and mqttDiscovery.cpp to enhance logging error messages.
- Improved sensorDS1820.cpp for better logging of device information.

Add security scan workflows for vulnerability detection

Add SBOM generation and upload to release workflow; update security scan summary handling

Add shellcheck suppor + FIX shellcheck warning

Enhance documentation for CI/CD scripts and workflows, adding details for security scanning and SBOM generation processes

Fix formatting and alignment in BLE connection handling

Reviewed the full web board presentation and the ESP32 web upload. The project uses a modern pattern where data is divided from the presentation layer.

- Removed the `generate_board_docs` script.
- Updated the `gen_wu` script in order to generate `boards-info.json`: the fail that containe all information about the configuration
- Created and isolate the file `boards-info.js` to streamline the parsing of PlatformIO dependencies, modules, environments and improve the handling of library information.
- Introduced vuepress component `BoardEnvironmentTable.vue` that render `boards-info.json` as UI card component
- Introduced vuepress component `FlashEnvironmentSelector.vue` that render a selectred environment from  `boards-info.json` and provide esp-web-upload feature on it
- Introduced a new board page `board-selector.md` for improved firmware selection.
- Updated `web-install.md` to enhance the firmware upload process, including a new board environment table.
- Enhanced custom descriptions in `environments.ini` to include HTML links for better user guidance and board image link

Add CC1101 initialization improvements and logging enhancements
Add installation step for PlatformIO dependencies in documentation workflow

Remove ci_set_version.sh script and associated versioning functionality

* Fix comment provisined

Fix PlatformIO version input reference in documentation workflow

Remove outdated Squeezelite-ESP32 installer documentation
2026-03-09 07:47:30 -05:00
5f969bf26b [CI] Fix nightly build failures (#2257)
- Convert nightly workflow to matrix builds to fix FRAMEWORK_DIR issues
  caused by platform_packages conflicts when building sequentially
- Each environment now builds on its own runner, matching build.yml
- Add deploy job that collects all artifacts and deploys docs
- Add extra_scripts to esp32dev-pilight environment to fix implicit
  function declaration error with newer GCC toolchain

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Florian <1technophile@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 16:03:30 -06:00
75f9d30919 [SYS] Update to Arduino 3.3.3 and use custom libs (#2248)
* Update Arduino core to v3.3.2 and use custom Arduino libs

* Update Python version and install uv in build.yml (#2247)

Updated Python version and added uv installation step.

---------

Co-authored-by: Ryan Powell <ryan@nable-embedded.io>

* fix builds

* Update scripts/add_c_flags.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fetch archives instead of cloning libraries

* Update to Arduino 3.3.3

---------

Co-authored-by: h2zero <powellperalata@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-10 07:36:09 -06:00
Northern Man 382fa5e9f2 [SYS] Fix for build error with MDNS_SD (#2239)
* Fix for build error with MDNS_SD

* Update environments.ini
2025-09-16 05:38:43 -05:00
FlorianandFlorian 6d7e4fd8f1 [BOARD] Remove Theengs Bridge self test (#2225)
Not needed for web or OTA update. It will enable to save flash

Co-authored-by: Florian <1technophile@users.noreply.github.com>
2025-08-13 07:14:30 -05:00
Tom Roush b8b427555a [BOARD] Support lilygo-t3-s3 (#2160)
* Support lilygo-t3-s3

* Add to CI list

* Use espressif32@6.10.0 platform
2025-06-28 14:42:12 -05:00
PLCHome 9b6e835afb [RF] An FSK version for esp32dev-rtl_433 has been added (#2195)
* An FSK version for esp32dev-rtl_433 has been added to handle the Bresser 5-in-1 weather station with a standard 868 MHz c1101

* Change platform and DGateway_Name
2025-05-23 19:29:14 -05:00
DigiH f0491e188c [BT] MQTT corruption fix (#2183)
Storing a copy of the ID instead of a pointer to a local variable to avoid MQTT publishing id topic and id property corruption.
2025-05-16 22:15:57 +02:00
Ryan Powell 585df9a420 [SYS] Update arduino core to 3.1.1 + refactor ino to cpp (#2177)
* Update arduino core to 3.1.1

* Fix Blufi build

* Update arduinojson, fix build errors with idf

* Fix narrowing

* fix RF builds

* WIP-Convert ino files to cpp

* Fix pilight build

* Fix Somfy actuator build.

* Update esp32dev-rf partition

* Fix Weatherstation build

* Fix GFSunInverter build

* Fix esp32dev-ir build

* Fix ble-aws build

* Fix eth builds

* Fix m5Stack missing pins_arduino.h

* Fix build errors for M5 stack/tough, others are upstream issues.

* Fix RTL 433 build - remaining errors are from radolib

* Fix nodemcu build

* fix 2g builds

* Fix serial build

* Fix actuator on off builds

* Fix SSD1306 build - remaining errors are from radiolib

* Fix multiple definition of OTAserver_cert

* Fix nodemcu rf2 build

* Fix ADC builds

* Fix sensor builds

* Fix LORA builds

* Fix multi-receiver builds - remaining errors are in radiolib

* Fix fastled builds

* Fix theegns board builds

* Fix broker builds

* Update fastled - old version failed all-test build

* Fix RN8209 builds

* Fix max temp actuator builds

* Fix PWM builds

* Fix C37 sensor builds

* Fix HTU21 builds

* Fix INA266 builds

* Fix undefined variables in mqtt discovery

* Fix webui build

* Fix fastled invalid pin error

* Fix wifi manual setup builds

* Fix onewire/all-test build - bin too big error remaining

* Fix theengs plug build

* Fix rfbridge builds

* Fix blufi builds

* Fix undefined functions in serial

* Fix preprocessor definition checks

* Set IDF log level to erre

* Add delay in loop to prevent watchdog timeout

* Use xTaskCreateUniveral to support single core processors

* Remove old HTTPUpdate files - upsteam fixed.

* Cleanup and move common declarations to header file

* Use custom partiton table to fix builds where bin is too large

* Update M5StickC - fixs esp32-m5stick-c-ble build

* Revert to Arduino core 2.x for builds with incompatible libs

* Remove "Z" from file names and rename omg_common to TheengsCommon

* Fix gateway name when using MAC with new Arduino core

* Update IDF config to reduce loop task stack use

* Update esp-nimble-cpp version, corrects BLE uppercase ID's

* Update wifi manager to fix watchdog timeout error
2025-05-06 19:35:50 -05:00
Ryan Powell d03795d0bf [BT] Update NimBLE-Arduino to 2.2.1 (#2140)
* Update NimBLE-Arduino to 2.2.1

* Add BLE OTA update capability.
2025-02-01 12:21:40 -06:00
FlorianandFlorian bbea094438 [LORA][BREAKING] Update LoRa env partition (#2110)
Not enough flash memory with the regular one

Co-authored-by: Florian <1technophile@users.noreply.github.com>
2024-11-13 07:28:56 -06:00
FlorianandFlorian 18cfbb759a [SYS] Remove Multi Gateway Sync from idf example env (#2109)
To avoid consuming procBLEtask stack memory when using esp idf framework

Co-authored-by: Florian <1technophile@users.noreply.github.com>
2024-11-12 09:55:17 -06:00
JamesandJames Carey f5bca0054e [RF] Improve Home Assistant auto discoverability (#2057)
* add '-DvalueAsATopic=true' to RF based environments
add '-DvalueAsATopic=true' to RF based environments. Required to support changes in zgatewayRF.ino for Home Assistant discoverability

* Modify gatewayRF to improve Home Assistant auto discoverability
Pass "recieved" as the type argument and switchRF[0] as the subtype argument to announceDeviceTrigger() which will cause recieved codes to be picked up by home assistant as triggers, i.e. When setting up automations in Home Assistant, selecting a `device` trigger and an OMG device will allow the user to select a code picked up during the autoDiscover window as the trigger for the automation, for example "1394004" recieved. In order to support this, the `'-DvalueAsATopic=true'` argument must be added to all environments using the RF Library

Also change getUniqueId() call to remove leading '-' which will prevent MQTT topics having '--' in them

---------

Co-authored-by: James Carey <james.carey@uws.ac.uk>
2024-11-07 07:54:50 -06:00
Michael HaberlerandMichael Haberler f86d89db85 [BOARD] add esp32s3-m5stack-stamps3 (#2088)
* [BOARD] add esp32s3-m5stack-stamps3

https://docs.m5stack.com/en/core/StampS3

* [BOARD] add esp32c3u-m5stamp

button long-press reset verified to work

* add build environments for addional M5Stack targets

esp32s3-m5stack-stamps3
esp32c3u-m5stamp

---------

Co-authored-by: Michael Haberler <git@mah.priv.at>
2024-10-15 06:42:58 -05:00
FlorianandFlorian 026fb4a337 [BOARD] Add Theengs Plug environment (#2065)
Co-authored-by: Florian <1technophile@users.noreply.github.com>
2024-09-24 10:11:05 -05:00
FlorianandFlorian 435b8ca3d9 [LED] Refactor LED handling (#2051)
Refactor LED handling into a library
Use a task instead of relying on the loop for precise timing

Co-authored-by: Florian <1technophile@users.noreply.github.com>
2024-09-13 09:55:56 -05:00
FlorianandFlorian 18461b9ef8 [BT] Add capability to remove the decoder when using BT (#2028)
Co-authored-by: Florian <1technophile@users.noreply.github.com>
2024-08-27 12:31:40 -05:00
FlorianandFlorian f9a5c6961a [SYS][BREAKING] Add gateway states, Offline mode and refactor sleep (#2020)
Gaterway states to improve LED management
Make the sleep function accessible outside BT
BREAKING remove sleep for ESP8266
BREAKING lowpowermode API changed to powermode and new mode definition

Co-authored-by: Florian <1technophile@users.noreply.github.com>
2024-08-23 16:55:04 -05:00
Florian 8a28bb2cf8 [SERIAL][BREAKING] RS232 change to SERIAL GATEWAY (#2008)
Make the RS232 more generic by converting it to a Serial Gateway
Add the capability to decode BLE data coming through Serial
2024-08-16 11:23:39 -05:00
FlorianandFlorian 6441175262 [BOARD] Activate WebUI for the bridge (beta) (#2000)
Co-authored-by: Florian <1technophile@users.noreply.github.com>
2024-08-12 19:31:35 -05:00
Michał Leśniewski 8537b7498d [SYS] Introduce MQTT Broker mode (#1988) 2024-07-27 17:40:47 -05:00
Michał Leśniewski 9257433a50 [SYS] Use PicoMQTT for MQTT communication (#1954)
* Update Arduino core for selected configurations

* Use PicoMQTT for MQTT communication
2024-07-03 11:39:58 -05:00
Florian a74a6ebc06 [SYS] Add serial self test feature (#1964)
Add self testing for Theengs Bridge v1.1 (TBRIDGE02)
This feature enables factory testing
2024-06-12 08:02:34 -05:00
Florian 07d9ed9df5 [BOARD][BREAKING] Change of partition for esp32dev-pilight (#1952) 2024-05-24 22:07:48 -04:00
Florian f98474bed0 [SYS] Multiple connections management (#1947)
Enable the management of different connections at runtime with a set of certs for each.
Add parameters to the WiFi Manager onboarding, client certificates, and certificate validation
2024-05-20 09:30:49 -05:00
DigiH c85f5bec37 Differentiation between OOK and FSK modulation in default environments (#1934) 2024-04-16 20:40:10 +02:00
Florian 2645928dbd [SYS] Remove unnecessaries ESP8266 ESP32 macros (#1931) 2024-04-12 17:13:11 -05:00
Florian 2065d57e11 [BOARDS] Remove Arduino boards (#1929) 2024-04-10 15:48:05 -05:00
h2zeroandh2zero ffe88feddc [SYS] Add Blufi support (#1913)
* First build with IDF, tested with esp32dev-ble only.

* Fix frameworks for non-esp32 boards

* Add blufi support.

* Adds an environment to use esp-idf and Arduino as a component to facilitate incorporating blufi for onboarding and configuration.

---------

Co-authored-by: h2zero <powellperalata@gmail.com>
2024-03-15 07:53:13 -05:00
Florian ef07a339ab [SYS] Avoid logging sensitive information on serial (#1879)
WiFi Manager log level to Notify
Remove MQTT information to serial
Remove system information to serial when changing with WebUI
2024-01-27 17:32:29 -06:00
Florian d7d5d0879f [CI] Web upload factorizing and ESP Web Tools update (#1862)
Update esp web tools
Simplify scripts
Add serial console
2024-01-10 18:54:42 -06:00
Florian f1f27cc83e [DEV] Add automatic BT lib replacement for BLE environments (#1860)
So that the replacement is done locally on the development environments but also with the CI
2024-01-09 12:52:59 -06:00
Florian 107bcf4d99 [BOARD] Add M5Stamp C3 (#1857) 2024-01-08 17:03:07 -06:00
Florian 7db2e93c28 [RTL_433][BREAKING] Beta support for FSK modulation, webUI frequency and active receiver change (#1812)
* [FSK] Add Lilygo Heltec environment with FSK modulation

Enable RTL_433 frequency and active receiver change with WebUI
Add FSK environment for Heltec and Lilygo
2023-12-01 13:16:03 -06:00
Florian cf21aed90c [BOARD] Add Theengs Bridge (#1799) 2023-11-13 17:14:58 -06:00