Skip to content

pyMC_Repeater 1.0.10 updates#259

Merged
rightup merged 125 commits into
mainfrom
dev
May 22, 2026
Merged

pyMC_Repeater 1.0.10 updates#259
rightup merged 125 commits into
mainfrom
dev

Conversation

@rightup
Copy link
Copy Markdown
Collaborator

@rightup rightup commented May 22, 2026

Whats New! pyMC_Repeater 1.0.10

  • Added full GPS diagnostics system, GPS UI/API, GPS-based repeater location updates, GPS time sync, and improved GPS configuration/status handling.
  • Added live radio configuration updates, radio validation, improved error/status handling, and setup status protections.
  • Added support for new hardware/radio types including UltraPeaterZero, RAK6421 + RAK13300x, pymc TCP/USB radios, KISS modem connection types, and null-radio defaults.
  • Expanded setup wizard flows and modem discovery tooling for USB/TCP devices.
  • Added sensor plugin framework with ENS210, INA219, SHTC3, and Waveshare UPS HAT D/E integrations.
  • Added new APIs for broker presets, config validation, site info, serial/USB modem discovery, adverts pagination, and contacts pagination.
  • Improved MQTT reliability with TLS support, reconnect/JWT refresh handling, broker parsing fixes, enhanced logging, bundled presets, and corrected Semtech packet duration publishing.
  • Major Buildroot, Docker, and CI improvements including cleaner installs/upgrades, OTA fixes, embedded support, rootless Docker, automated publishing workflows, and config bootstrapping.
  • Improved configuration management with TX power validation, preserved config comments, expanded config imports, and safer restart validation flows.
  • Improved frontend/UI performance, setup flows, restart/update UX, neighbour filtering, and loop detection handling.
  • Added additional presets/templates including Southern California radio presets and bundled MC2MQTT broker templates.
  • Expanded automated tests and updated documentation/examples across GPS, MQTT/TLS, sensors, Buildroot, Docker, and configuration handling.

mitchellmoss and others added 30 commits April 23, 2026 18:54
…on options

- Introduced `en_pin` and `en_pins` parameters in radio configuration.
- Updated `get_radio_for_board` to handle new configuration options.
- Added unit tests to verify correct handling of `en_pins`.
- Introduced options for using GPS coordinates for repeater location fields in config.
- Implemented precision control for GPS coordinates.
- Added a new API endpoint for a Server-Sent Events stream of GPS diagnostics.
- Updated GPSService to handle new configuration options and fallback logic.
- Enhanced unit tests for GPS location handling.
yellowcooln and others added 29 commits May 18, 2026 10:48
docker: bootstrap config on startup and include rootless container fixes
docker: improve container restart handling, publishing, and config mounting
- shtc3.py: SHTC3 temperature/humidity sensor (RAK1901 WisBlock module,
  I2C 0x70). Uses smbus2 i2c_rdwr for raw I2C reads since SHTC3 requires
  16-bit command words with no register-byte prefix. Returns temperature_c,
  temperature_f, humidity_pct.

- waveshare_ups_d.py: Waveshare UPS HAT (D) battery monitor via INA219 at
  I2C 0x43. Uses the HAT's actual shunt (0.01 Ω, CAL=26868) rather than the
  generic INA219 defaults. Returns bus_voltage_v, shunt_voltage_mv,
  current_ma, power_mw, battery_percent (piecewise-linear SoC for 21700
  cell), and charge_state (charging/discharging/idle). Sign convention
  matches Waveshare sample code: negative current = charging.

Both plug-ins tested on Raspberry Pi 3B+ (DietPi) with RAK1901 WisBlock
sensor and Waveshare UPS HAT (D).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
nmea_gps.py reads NMEA 0183 sentences directly from a serial GPS receiver
(/dev/serial0 by default) and exposes fix status, position, motion, accuracy,
and satellite fields as sensor readings.

Parses GGA, RMC, and GSA sentence types using stdlib only (no pynmea2
dependency) — pyserial is already required by the repeater.

Designed for use when the repeater's built-in GPS service is disabled
(gps.enabled: false). Both cannot share the serial port simultaneously.
With gps.api_fallback_to_config_location: true the repeater continues
advertising the manually-configured location while the sensor plugin handles
raw GPS data.

Returns: fix_valid, fix_quality, fix_type, latitude, longitude, altitude_m,
speed_kmh, course_degrees, hdop, pdop, vdop, satellites_used, utc_datetime.
Position and motion fields are null when fix_valid is false to avoid
reporting config-fallback coordinates as real GPS data.

Tested on Raspberry Pi 3B+ (DietPi) with a u-blox GPS module on /dev/serial0.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add SHTC3 and Waveshare UPS HAT (D) sensor plug-ins
The HAT (E) uses a dedicated BMS MCU (not an INA219) at I2C address 0x2D.
It exposes charge state, pack voltage/current, per-cell voltages, remaining
capacity in mAh, and time-to-empty/full estimates directly via I2C registers.

Tested on Raspberry Pi 4B with pyMC_Repeater running pymc-battery-writer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add Waveshare UPS HAT (E) sensor plug-in
- Add pre-restart config preflight to RestartModal with pass/warning/fail result panel and "Restart Anyway" confirmation for warnings
- Add Site Identification (site_name) config field shown as browser title and login page caption
- Add GET /api/validate_config and GET /api/site_info backend endpoints
- Sync document.title with site_name via system store watchEffect
- Fix authRegression.test.ts TS2367 type narrowing error
- add new radio hardware and radio settings tabs
@rightup rightup merged commit e17d113 into main May 22, 2026
1 check passed
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.

7 participants