Commit Graph
3224 Commits
Author SHA1 Message Date
Jared Dohrman bcce0071f1 feat: open full web CLI access and add panel redirect flow 2026-04-20 08:59:24 +10:00
Marco e8907a3108 Add Heltec V4 set adc.multiplier 2026-04-19 15:29:43 +02:00
Confi 3fcf5b548b fix(sensecap_solar): set P_LORA_TX_LED to 12 after LED remap
Align TX activity LED with LED_BLUE / variant.h after LED definition
and power-button pin mapping changes.
2026-04-19 11:20:28 +02:00
Jared Dohrman 5a4adadbbf chore: add region to allowlist CLI 2026-04-19 15:49:57 +10:00
Jared Dohrman 6aeb8782d9 fix: update repeater MQTT partition layouts for 4 MB boards 2026-04-19 15:33:04 +10:00
xJARiDandGitHub b26d645177 Merge pull request #36 from xJARiD/develop
v1.15.0
2026-04-19 12:29:57 +10:00
Jared Dohrman ec4b57aabf docs: add v1.15.0 releases 2026-04-19 12:24:38 +10:00
Jared Dohrman 2646d7177e Merge upstream/dev into develop 2026-04-19 12:21:01 +10:00
Scott Powell dee3e26ac0 Merge branch 'dev'
# Conflicts:
#	docs/faq.md
2026-04-19 11:35:03 +10:00
Scott Powell 3751785400 * version 1.15.0 2026-04-19 11:27:55 +10:00
xJARiDandGitHub b38c0dd1d1 Merge pull request #35 from xJARiD/develop
fix TBeam 1W, improve cache, sync docs, add AGENTS.md
2026-04-19 09:06:19 +10:00
Jared Dohrman de0ff6fcd0 docs: add decision rule to AGENTS.md for safer change boundaries 2026-04-19 09:01:18 +10:00
Scott Powell 49b37d5622 * minor bounds fix 2026-04-18 21:32:41 +10:00
ripplebizandGitHub 35b5548c0c Merge pull request #2328 from recrof/xiao_c3-companion-fix
fix: remove sensors from xiao c3 companion because of bootloops
2026-04-18 20:44:15 +10:00
Liam CottleandGitHub 54a48da6b5 Merge pull request #2306 from petrkr/otaupdate2
SDK3.x: Fix OTA includes, bump Async version
2026-04-18 19:56:56 +12:00
Rastislav Vysoky 0899f66034 fix: remove sensors from xiao c3 companion because of bootloops 2026-04-18 09:42:27 +02:00
Liam CottleandGitHub acdb41fcf9 Merge pull request #2103 from robekl/docs-radio-rxgain
docs: add radio.rxgain command reference
2026-04-18 19:05:43 +12:00
Liam CottleandGitHub 352fe5f4ae Merge pull request #2315 from jirogit/fix/wireless-paper-companion-usb
feat: add USB Companion Radio env for Heltec Wireless Paper
2026-04-18 18:45:38 +12:00
Jared Dohrman 46475859fe docs: add repeater-mqtt-eastmesh-v1.3.4 release notes 2026-04-18 14:52:44 +10:00
Jared Dohrman 55d50f29d3 docs: sync web-panel CLI allowlist and note AGC reset workaround 2026-04-18 14:49:55 +10:00
Nick Dunklee c7be216f27 fix(sensors): improve sensor initialization and handling to prevent hangs and handle growth
This is a medium-ish refactor to attempt to clean up sensor handling logic both for board stability and future potential growth before the code becomes all spaghetti and meatballs.

I'd be curious to see if anyone running sensors out there that knows how to build and flash MeshCore code could give this a try and see how it behaves. It is working fine on my end on multiple nodes.

PR notes are gigantic because it is a fundamental behavior repair for sensors, so I wanted to over-explain. Also, if it hadn't been mentioned previously, push-back is always welcome. I'm just spending my time trying to clean up / fix / enhance this corner of the firmware, and want to contribute my improvements back to the project.

**Problem:**

Current MeshCore code makes no attempt to see what sensors are actually available on the I2C bus at startup and blindly tries to interact with sensors. This has some very bad side-effects, like if a sensor that is unsupported, or has a weird initialization process, the MeshCore node will just hang at boot and never successfully start up and ostensibly looks bricked, or the INA226 and SHT4X both sharing the same address and the code just silently fighting.

The current implementation also gloms sensor readouts from the MCU and environment sensors onto the same telemetry channel, with some arbitrary exceptions for incrementing channels based on certain behavioral situations. The MCU temperature and external temperature sensors would appear on channel 1, and it wouldn't be possible to tell which sensor the temperature value was coming from.

Per [CayenneLPP](https://github.com/myDevicesIoT/CayenneLPP): *Data Channel: Uniquely identifies each sensor in the device across frames, eg. “indoor sensor”* So this channel division implementation falls inline with what CayenneLPP intended. There are up to 256 channels available. So I tried to model this change in that behavioral style.

**Proposed Improvement:**

This implementation scans the I2C bus for what devices are present, sets each sensor to its own CayenneLPP channel, and keeps MCU telemetry on channel 1 only. So Channel 1 is always "self" and no confusion can result.

Details:
  - Channel 1 is always the MCU and things about it, so you always know that telemetry is from the board itself. Exception is GPS, GPS stays on channel 1 as well since it is "about the board" even though it's a bit gray-area as GPS can often be a secondary chip.
  - Each sensor board is allocated to a dedicated CayenneLPP channel, so if you are reading from that channel, you know the data is from that sensor only. (Sensors emitting more than one of the same type of measurement are exceptions.)
  - `scanI2CBus()` probes addresses 0x08–0x77 with raw `beginTransmission`/`endTransmission`. No sensor library is touched until after this completes. This will prevent sensor-based boot hangs, unknown or unresponsive devices never reach a library init call.
  - Created `SENSOR_TABLE` a compile-time array that is gated by the existing `ENV_INCLUDE_*` macros. A sentinel `{ 0, nullptr, nullptr, nullptr }` at the end keeps the array non-empty regardless of which sensors are enabled, avoiding zero-length array warnings.
  - When `begin()` is called, scan first, then loop: skip if address not detected, skip if `init()` returns 0, otherwise register one ActiveSensor entry per sub-channel.
  - `querySensors()` I replaced the entire #ifdef chain with a 3-line loop.
  - T1000-E has its own T1000SensorManager, so it should be completely unaffected by this change.
  - SHT4X quirky initialization behavior is retained.
  - MLX90614  - git commits around this didn't have any notes as to why it is reporting ambient temperature on a separate channel as well as the object temperature, as the ambient temperature is used internally to compute the object temperature and not really needed for the sensor's purpose - just the same, kept the existing behavior of reporting the ambient temperature one channel above the channel assigned to the sensor
  - All `bool *_initialized` fields are gone, replaced with `ActiveSensor _active_sensors[16]` (query function pointer and sub-channel index) and `_active_sensor_count. SensorDef` lives entirely in the `.cpp` so the header has no dependency on it.
  - Details on the INA226 and SHT4X: both default to address 0x44, the old code had a bug and would have both begin() calls fire and they would just fight each other silently. In the new code, the respective sensor code is only called if the device is actually present, however, if both were present simultaneously, SHT4X comes first in the table and would win, and INA226 would return false and be skipped. The INA226 has 16 possible addresses that are configurable in the hardware itself, so in a potential scenario where both sensors would be present, the person implementing that design could take that into account.
  - BME680 gas resistance will now transmit on the same channel as the rest of BME680 telemetry which is inline with CayenneLPP standards. Coupling this PR with https://github.com/meshcore-dev/MeshCore/pull/2146 streamline the whole sensor telemetry, and with https://github.com/meshcore-dev/MeshCore/pull/2149 will overall improve BME680 handling. The gas resistance sensor actually has a binary library to make it more useful, calibration, accounting for age of sensor, and other improvements, but since that adds more flash consumption, I have omitted that in PRs thus far.
 - RAK12035 and other current upstream dev branch changes integrated.
2026-04-17 22:23:21 -06:00
liamcottle cfe4b0b9a5 bleuart service stay registered first to prevent gatt cache issues on android when already paired 2026-04-18 14:43:47 +12:00
Kevin Le 992dddeee5 Added support for Expansion Kit to Heltec V4 OLED repeaters 2026-04-18 09:24:53 +07:00
Jared Dohrman 663f493817 web: cache repeater title across app and stats pages 2026-04-18 11:17:49 +10:00
Liam CottleandGitHub 77d737beb9 Merge pull request #2323 from txkbaldlaw/updated-companion-dfu-from-mt
Add support for Companion BLE OTA updates on nRF devices
2026-04-18 12:17:16 +12:00
txkbaldlaw 96a16c238a Additional Update to FAQs regarding Companion OTA 2026-04-17 16:17:12 -05:00
txkbaldlaw 4f9764b1b4 Update FAQ to include Companion OTA DFU updates 2026-04-17 10:56:51 -05:00
Jared Dohrman d00fc588d3 fix(web-panel): apply 4-color thresholds to largest-block memory meters 2026-04-17 21:05:47 +10:00
Jared Dohrman b635bd1327 fix: add missing TBeam 1W flash partition size 2026-04-17 19:16:03 +10:00
xJARiDandGitHub fd20a84228 Merge pull request #34 from xJARiD/develop
docs: add repeater-mqtt-eastmesh-v1.3.3 release notes
2026-04-17 18:07:59 +10:00
Jared Dohrman d4a3ec33f4 docs: add repeater-mqtt-eastmesh-v1.3.3 release notes 2026-04-17 18:07:24 +10:00
xJARiDandGitHub d1043594dd Merge pull request #33 from xJARiD/develop
fix: improve web stats startup and memory indicators
2026-04-17 18:05:12 +10:00
Jared Dohrman 9cf2462f11 Merge branch 'integrate-upstream-dev-2026-04-17' into develop 2026-04-17 17:57:09 +10:00
Jared Dohrman e05c9bc09c Merge upstream/dev into develop 2026-04-17 17:54:47 +10:00
Jared Dohrman 006577bc00 docs: add repeater-mqtt-eastmesh-v1.3.3 release notes 2026-04-17 17:42:08 +10:00
Jared Dohrman 64402c7f5e fix: improve web stats startup and memory indicators 2026-04-17 17:40:32 +10:00
Scott Powell d7a3d41843 Merge branch 'default-scope' into dev 2026-04-17 16:30:19 +10:00
Scott Powell 91f3fa0bdf * CLI: 'region put ...' now defaults to flood allowed 2026-04-17 15:11:10 +10:00
Scott Powell 7cdb056cb3 * CLI: 'region default ...' now auto-creates the region 2026-04-17 15:02:04 +10:00
Jared Dohrman 05fcffc838 fix: start web stats capture from boot on >=4MB PSRAM boards 2026-04-17 14:42:51 +10:00
Scott Powell 77d02e844f * bug fix 2026-04-17 14:38:03 +10:00
Scott Powell d3ba89c8bb * doco: "region default" 2026-04-17 13:49:57 +10:00
xJARiDandGitHub 7533b08759 Merge pull request #32 from xJARiD/develop
fix: improve repeater stats UX and persist ESP32 fallback clock
2026-04-17 12:32:40 +10:00
Jared Dohrman 29aa60ea2f ci: improve workflow caching for build checks 2026-04-17 12:28:41 +10:00
Jared Dohrman 769414453e docs: add repeater-mqtt-eastmesh-v1.3.2 release notes 2026-04-17 12:23:00 +10:00
Jared Dohrman d412e3e84a fix: improve repeater stats UX and persist ESP32 fallback clock 2026-04-17 12:17:35 +10:00
txkbaldlaw b898e7a04e Add DFU to BLE Stack 2026-04-16 16:04:30 -05:00
xJARiDandGitHub 42f93daa57 Merge pull request #31 from xJARiD/develop
docs(web-panel): document stats history caps and SD archive behaviour
2026-04-16 21:32:47 +10:00
Jared Dohrman b38538e6fd docs(web-panel): document stats history caps and SD archive behaviour 2026-04-16 21:32:27 +10:00
OverkillFPVandGitHub 958204c7f1 Merge branch 'dev' into lora-longer-preamble 2026-04-16 20:43:46 +10:00