Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
18300cb
feat: add GPS diagnostics web UI
mitchellmoss Apr 23, 2026
9cd2de9
chore: move GPS diagnostics UI to frontend repo
mitchellmoss Apr 24, 2026
8ae1c0f
feat: sync system time from GPS
mitchellmoss Apr 24, 2026
53f6e8a
fix: Remove old letsmesh_handler.py file
Rigear Apr 24, 2026
3a6da40
fix: Always parse additional brokers
Rigear Apr 24, 2026
b3fdfee
fix: Handle TLS for all MQTT connections
Rigear Apr 24, 2026
d4aecf7
fix: Stop warning spam if brokers are disabled
Rigear Apr 24, 2026
bdb98f3
fix(docs): Updated example config with TLS information
Rigear Apr 24, 2026
cfa8c17
Merge pull request #204 from Rigear/fix/mqtt_fixes
rightup Apr 25, 2026
707c816
Start service cleanly on first Buildroot install
yellowcooln Apr 24, 2026
971ad4d
Preserve setuptools_scm version on Buildroot installs
yellowcooln Apr 25, 2026
d214885
Install setuptools_scm in Buildroot venv
yellowcooln Apr 25, 2026
8418fd5
Clarify Buildroot venv rebuild message
yellowcooln Apr 25, 2026
5c7bcab
Add spinner for Buildroot venv rebuilds
yellowcooln Apr 25, 2026
42068e2
Print clear Buildroot upgrade completion
yellowcooln Apr 25, 2026
066fcef
Skip unchanged Buildroot upgrade steps
yellowcooln Apr 25, 2026
2ba16cd
Revert "rak6421 + rak13300x support"
rightup Apr 26, 2026
8ab7bad
Merge pull request #209 from rightup/revert-208-rak6421-13300x
rightup Apr 26, 2026
d780afa
Add support for RAK6421 with RAK13300x radios and enhance configurati…
rightup Apr 26, 2026
1ed85c4
Merge pull request #207 from yellowcooln/dev
rightup Apr 26, 2026
79541aa
Implement live radio configuration updates and add unit tests for rad…
rightup Apr 27, 2026
a36d991
Fix event loop handling in TextHelper for room server synchronization
rightup Apr 28, 2026
42b4bbd
Merge PR #199: [codex] Add GPS diagnostics API
rightup Apr 28, 2026
76a9785
Add GPS location configuration and diagnostics stream
rightup Apr 28, 2026
22d0e31
gps front end static files
rightup Apr 28, 2026
1f88b73
Pass configurable SX1262 timing delay
yellowcooln Apr 29, 2026
83de210
Fix backspace handling in Buildroot prompts
yellowcooln Apr 29, 2026
97fde6e
Set Pico Pi radio timing override in Buildroot profiles
yellowcooln Apr 29, 2026
b0b0be1
Preserve config comments on Buildroot
yellowcooln Apr 29, 2026
4653725
Fix Buildroot yq comment merge
yellowcooln Apr 29, 2026
8856268
Expose Buildroot image version
yellowcooln Apr 29, 2026
bf44efb
feat: update repeater location from GPS fix
mitchellmoss Apr 29, 2026
da8f839
Fix GPS location updates and status reporting
mitchellmoss Apr 29, 2026
d83cb61
Make GPS location persistence opt-in and fuzzed
mitchellmoss Apr 29, 2026
187d033
Merge pull request #211 from mitchellmoss/feat-gps-location-update
rightup Apr 29, 2026
6720f6b
Merge pull request #212 from yellowcooln/dev
rightup Apr 29, 2026
bbaf8bd
fix:gps-fixes
rightup Apr 29, 2026
56814bf
Support local embedded Buildroot installs
yellowcooln Apr 29, 2026
fe0d3d3
Fix Buildroot OTA upgrade path
yellowcooln Apr 29, 2026
52cce9d
Merge branch 'rightup:dev' into dev
yellowcooln Apr 29, 2026
acb7961
Prefer repo Buildroot updater on embedded images
yellowcooln Apr 29, 2026
f7a212f
Merge pull request #213 from yellowcooln/dev
rightup Apr 29, 2026
972aefc
bug:fixes to gps page
rightup Apr 29, 2026
9d3d5e6
refactor: update GPS configuration parameters and improve documentation
rightup Apr 30, 2026
2dd7961
add map toggle and discord icon
rightup Apr 30, 2026
8bbef50
Merge pull request #219 from rightup/feat-gps
rightup Apr 30, 2026
55ed40c
Adding in UltraPeaterZero defintions
May 1, 2026
f1933dd
Fix up the CapabilityBoundingSet to allow changing the GID and UID as…
May 1, 2026
86e5f78
Merge pull request #221 from zindello/feat/add-ultrapeaterzero
rightup May 1, 2026
11572f8
Merge pull request #222 from zindello/bugfix/restart-issues
rightup May 1, 2026
dfacfea
feat: bundled MC2MQTT broker presets (waev, letsmesh) + format family
May 2, 2026
0251304
fix(mqtt): publish Semtech-derived packet duration instead of hard-co…
May 3, 2026
ebfc629
Merge pull request #229 from dmduran12/fix/mqtt-packet-duration
rightup May 5, 2026
e4efc80
feat: implement resolve_storage_dir for consistent storage paths
rightup May 5, 2026
5b20f55
feat: enhance MQTT logging and error handling with payload summaries …
rightup May 6, 2026
bd7a305
feat: improve MQTT connection handling with enhanced reconnect logic …
rightup May 6, 2026
d250828
feat: enhance MQTT connection handling with JWT refresh and error log…
rightup May 6, 2026
68656fc
Merge pull request #231 from pyMC-dev/pr-227
rightup May 6, 2026
4d710a0
fix/ui-tidy-dev
rightup May 8, 2026
f394668
bug/further fixes to ui initla loading
rightup May 11, 2026
941c355
feat: add pagination support and count retrieval for adverts by conta…
rightup May 11, 2026
f04f581
fix:Neighbors get function
rightup May 11, 2026
43648da
fix:add Pagination to contacts table
rightup May 11, 2026
eb5d971
fix: filter neighbors to include only zero-hop repeaters in response
rightup May 11, 2026
66532a0
feat: Add sensor plugin framework and Sensors
rightup May 12, 2026
9bfe125
feat: add ENS210 temperature/humidity sensor plug-in
May 13, 2026
3f7b6d5
fix: add smbus2 dependency, i2c-tools, and use hex I2C addresses in docs
May 13, 2026
7865e9c
fix: standardise sensor module structure and docs
May 13, 2026
a01d593
fix(ens210): check correct VALID bit in T_VAL/H_VAL polling
May 13, 2026
9dbf545
Merge pull request #238 from zindello/feat/add-sensor-ens210
rightup May 13, 2026
0e7bb05
Refactor INA219 sensor integration.
rightup May 13, 2026
541b25b
config: add pymc_tcp / pymc_usb radio_type branches
May 13, 2026
c70f360
Merge pull request #240 from itk80/feat/pymc-tcp-usb-radio
rightup May 13, 2026
ca7dd38
ci: automate docker publish on main and dev
yellowcooln May 13, 2026
e03174d
Merge pull request #241 from yellowcooln/docker-image
rightup May 13, 2026
446d2bf
Update Docker image repository in workflow
yellowcooln May 13, 2026
af9799d
Merge pull request #242 from yellowcooln/patch-1
rightup May 13, 2026
d5903c3
Add Southern California radio preset
dmduran12 May 13, 2026
2510bed
feat: ui speed enhance
rightup May 14, 2026
5b95be3
refactor: remove sync word configuration from radio settings
rightup May 14, 2026
7a0aec7
feat(presets): expose bundled broker presets via GET /api/broker_presets
dmduran12 May 14, 2026
3baf115
Dispatch add-on sync after Docker publish
yellowcooln May 15, 2026
a7ae704
Merge pull request #245 from dmduran12/broker_template-UIsync
rightup May 15, 2026
4f278f1
Merge pull request #243 from dmduran12/patch-1
rightup May 15, 2026
ce1acab
fix: parse sync_word as integer in get_radio_for_board function
rightup May 15, 2026
2d875ae
Derive Docker dev version from git metadata
yellowcooln May 15, 2026
baec25b
Merge pull request #247 from yellowcooln/addon-sync-workflow
rightup May 16, 2026
5f43085
ci: restrict docker publish workflow
yellowcooln May 18, 2026
f4d8948
Merge pull request #251 from yellowcooln/chore/manual-docker-workflow
rightup May 18, 2026
13b8004
wip: null-radio defaults and needs_setup updates
rightup May 18, 2026
d7f2d2c
setup wizard: pymc_tcp / pymc_usb hardware tiles
May 17, 2026
052474c
feat: add connection type for KISS and pymc modems in radio settings
rightup May 18, 2026
56113c2
feat: update radio status handling to show radio errors
rightup May 18, 2026
0e10312
update ui for setup
rightup May 18, 2026
a08c4d0
Update repository conditions in docker-publish.yml
yellowcooln May 18, 2026
72a8755
docker: bootstrap config and run rootless
yellowcooln May 18, 2026
c03d4dd
docker: merge config from example on boot
yellowcooln May 18, 2026
e0dbecd
feat: update default radio type to null in config example
rightup May 18, 2026
8c354db
Merge pull request #253 from pyMC-dev/wip/null-radio-before-pr250
rightup May 18, 2026
193b428
Merge pull request #252 from yellowcooln/patch-2
rightup May 18, 2026
7b6babd
service: restart containers by exiting process
yellowcooln May 18, 2026
ab8ae30
web: clarify docker restart update messaging
yellowcooln May 18, 2026
11e2b90
ci: route docker publish by repository owner
yellowcooln May 18, 2026
f21aba0
docker: mount config directory in compose
yellowcooln May 18, 2026
13ea672
Merge pull request #254 from yellowcooln/dev
rightup May 18, 2026
9c1661f
Add SHTC3 and Waveshare UPS HAT (D) sensor plug-ins
CarlsonCustoms May 19, 2026
8b0607a
Add NMEA GPS sensor plug-in
CarlsonCustoms May 19, 2026
f88d3c5
Revert "Add NMEA GPS sensor plug-in"
CarlsonCustoms May 19, 2026
cbfcb69
Merge pull request #255 from CarlsonCustoms/add-shtc3-waveshare-sensors
rightup May 19, 2026
7d54859
Add example configurations for SHTC3 and Waveshare UPS Hat sensors
rightup May 19, 2026
6aab7ec
fix:update-restart-functions
rightup May 19, 2026
22adbd1
feat: add setup usb/tcp details on setup
rightup May 19, 2026
6e89272
Add Waveshare UPS HAT (E) sensor plug-in
CarlsonCustoms May 19, 2026
8f3477d
Merge pull request #256 from CarlsonCustoms/add-waveshare-ups-hat-e
rightup May 20, 2026
d25e97a
feat: implement setup status check and reject subsequent setups after…
rightup May 21, 2026
5b93d10
fix: update loop detection thresholds and improve path hash handling …
rightup May 21, 2026
b464fa8
docs: update example configuration for Waveshare UPS D and E Hats
rightup May 21, 2026
22b39e5
fix: update maintainer information in changelog, control, and build s…
rightup May 21, 2026
4cf04f8
test: sensor tests with mock implementations and additional assertions
rightup May 21, 2026
5c68707
feat: add endpoint to discover available serial/USB modem device paths
rightup May 22, 2026
3244f7b
feat: add validation for TX power settings and update API endpoint fo…
rightup May 22, 2026
2a031b7
feat: add validate_config endpoint to check config.yaml syntax and re…
rightup May 22, 2026
78648f2
feat: add site_info endpoint to return site identification name witho…
rightup May 22, 2026
a48b298
feat: pre-restart config validation and site identification
rightup May 22, 2026
85f2823
feat: expand allowed sections for configuration imports to include ad…
rightup May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: Publish Docker Image

on:
push:
branches:
- main
- dev
workflow_dispatch:
inputs:
image_repository:
description: "Docker image repository to publish to"
required: false
default: "pymcdev/pymc-repeater"

jobs:
docker:
if: |
github.event_name == 'workflow_dispatch' ||
github.repository == 'pyMC-dev/pyMC_Repeater' ||
github.repository == 'yellowcooln/pyMC_Repeater'
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Compute package version
id: package_version
run: |
python -m pip install --disable-pip-version-check setuptools_scm
version="$(python -m setuptools_scm)"
echo "version=${version}" >> "$GITHUB_OUTPUT"

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Determine image repository
id: image_repo
shell: bash
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ -n "${{ inputs.image_repository }}" ]; then
image_repository="${{ inputs.image_repository }}"
elif [ "${{ github.repository }}" = "yellowcooln/pyMC_Repeater" ]; then
image_repository="yellowcooln/pymc-repeater"
else
image_repository="pymcdev/pymc-repeater"
fi

echo "Using image repository: ${image_repository}"
echo "image_repository=${image_repository}" >> "$GITHUB_OUTPUT"

- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ steps.image_repo.outputs.image_repository }}
tags: |
type=raw,value=main,enable=${{ github.ref == 'refs/heads/main' }}
type=raw,value=dev,enable=${{ github.ref == 'refs/heads/dev' }}
type=sha,format=short

- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: ./dockerfile
platforms: linux/amd64,linux/arm64
push: true
build-args: |
PACKAGE_VERSION=${{ steps.package_version.outputs.version }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Notify Home Assistant add-on repository
if: github.repository == 'pyMC-dev/pyMC_Repeater'
env:
DISPATCH_TOKEN: ${{ secrets.HA_ADDON_REPO_DISPATCH_TOKEN }}
CHANNEL: ${{ github.ref_name }}
REVISION: ${{ github.sha }}
run: |
if [ -z "${DISPATCH_TOKEN}" ]; then
echo "HA_ADDON_REPO_DISPATCH_TOKEN is not set" >&2
exit 1
fi

curl -fsSL \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${DISPATCH_TOKEN}" \
https://api.github.com/repos/pyMC-dev/pyMC-HA-Add-on/dispatches \
-d "{\"event_type\":\"sync-upstream-channel\",\"client_payload\":{\"channel\":\"${CHANNEL}\",\"revision\":\"${REVISION}\"}}"
20 changes: 5 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,15 +84,15 @@ Frequency Labs meshadv
GPIO Pins: CS=21, Reset=18, Busy=20, IRQ=16, TXEN=13, RXEN=12, use_dio3_tcxo=True

HT-RA62 module

Hardware: Heltec HT-RA62 LoRa module
Platform: Raspberry Pi (or compatible single-board computer)
Frequency: 868MHz (EU) or 915MHz (US)
TX Power: Up to 22dBm
SPI Bus: SPI0
GPIO Pins: CS=21, Reset=18, Busy=20, IRQ=16, use_dio3_tcxo=True, use_dio2_rf=True

Zindello Industries UltraPeater
Zindello Industries UltraPeater

Hardware: EBYTE E22/P 1W Module
Platform: Luckfox Pico Ultra/W (NOT A PI DEVICE)
Expand All @@ -113,16 +113,6 @@ Waveshare LoRaWAN/GNSS HAT (SPI Version Only)
GPIO Pins: CS=21, Reset=18, Busy=20, IRQ=16
Note: Only the SPI version is supported. The UART version will not work.

RAK Wireless RAK6421 with RAK1330x

Hardware: RAK1330x LoRa module
Platform: Raspberry Pi (or compatible single-board computer)
Frequency: 868MHz (EU) or 915MHz (US)
TX Power: 22dBm on RAK13300, 30dBm on RAK13302
SPI Bus: SPI0
GPIO Pins(IO Slot 1): Reset=16, Busy=24, IRQ=22, use_dio3_tcxo=True, use_dio2_rf=True
GPIO Pins(IO Slot 2): Reset=24, Busy=19, IRQ=18, use_dio3_tcxo=True, use_dio2_rf=True

...

## Screenshots
Expand All @@ -141,7 +131,7 @@ Before You Begin

Make sure SPI is switched on using raspi-config:

```bash
```bash
sudo raspi-config
```

Expand All @@ -155,12 +145,12 @@ sudo reboot
```

After reboot, you can confirm SPI is active:
```bash
```bash
ls /dev/spi*
```

You should see something like:
```bash
```bash
/dev/spidev0.0 /dev/spidev0.1
```

Expand Down
Loading
Loading