Skip to content

Commit 54e41df

Browse files
author
Ravi Singh
committed
feat: v2.0 rewrite - ESP-IDF firmware + TankSync PWA
Complete rewrite from Arduino to ESP-IDF for both receiver and transmitter. Added TankSync PWA cloud dashboard with MQTT, push notifications, and QR linking. Firmware: - ESP-IDF v5.4 for both ESP32 DevKit and ESP32-C3 receivers - LoRa pairing protocol, OTA updates (WiFi + LoRa relay) - Captive portal with auto-redirect (iOS/Android/Windows) - MQTT auto-discovery for Home Assistant - WS2812B status LED, remote config via LoRa downlink PWA (optional cloud dashboard): - React + Tailwind Progressive Web App - Fastify + SQLite + MQTT bridge backend - Multi-site, multi-tank management - Push notifications, QR code device linking - Dark/light themes, historical charts License split: MIT (firmware), AGPL-3.0 (PWA), CC BY-SA 4.0 (hardware) Legacy Arduino code preserved in v1.0-arduino tag.
1 parent 991bebe commit 54e41df

143 files changed

Lines changed: 27170 additions & 2923 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
name: Build & Release Firmware
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
matrix:
13+
include:
14+
- name: receiver
15+
path: firmware/receiver
16+
target: esp32
17+
binary: tanksync_receiver.bin
18+
- name: receiver-c3
19+
path: firmware/receiver-c3
20+
target: esp32c3
21+
binary: tanksync_receiver.bin
22+
- name: transmitter
23+
path: firmware/transmitter
24+
target: esp32c3
25+
binary: tanksync_transmitter.bin
26+
27+
steps:
28+
- uses: actions/checkout@v4
29+
30+
- name: Build with ESP-IDF
31+
uses: espressif/esp-idf-ci-action@v1
32+
with:
33+
esp_idf_version: v5.4
34+
target: ${{ matrix.target }}
35+
path: ${{ matrix.path }}
36+
37+
- name: Rename binary
38+
run: |
39+
cp ${{ matrix.path }}/build/${{ matrix.binary }} \
40+
tanksync-${{ matrix.name }}-${{ github.ref_name }}.bin
41+
42+
- name: Upload artifact
43+
uses: actions/upload-artifact@v4
44+
with:
45+
name: ${{ matrix.name }}
46+
path: tanksync-${{ matrix.name }}-${{ github.ref_name }}.bin
47+
48+
release:
49+
needs: build
50+
runs-on: ubuntu-latest
51+
permissions:
52+
contents: write
53+
steps:
54+
- uses: actions/download-artifact@v4
55+
56+
- name: Create GitHub Release
57+
uses: softprops/action-gh-release@v2
58+
with:
59+
files: |
60+
receiver/tanksync-receiver-${{ github.ref_name }}.bin
61+
receiver-c3/tanksync-receiver-c3-${{ github.ref_name }}.bin
62+
transmitter/tanksync-transmitter-${{ github.ref_name }}.bin
63+
generate_release_notes: true
64+
body: |
65+
## Firmware Binaries
66+
67+
| Binary | Board | Description |
68+
|--------|-------|-------------|
69+
| `tanksync-receiver-${{ github.ref_name }}.bin` | ESP32 DevKit | Receiver firmware |
70+
| `tanksync-receiver-c3-${{ github.ref_name }}.bin` | ESP32-C3 | Receiver firmware (C3 variant) |
71+
| `tanksync-transmitter-${{ github.ref_name }}.bin` | ESP32-C3 | Transmitter firmware |
72+
73+
### Flashing
74+
```bash
75+
# Receiver (ESP32 DevKit)
76+
esptool.py --chip esp32 -b 460800 write_flash 0x10000 tanksync-receiver-${{ github.ref_name }}.bin
77+
78+
# Receiver (ESP32-C3)
79+
esptool.py --chip esp32c3 -b 460800 write_flash 0x10000 tanksync-receiver-c3-${{ github.ref_name }}.bin
80+
81+
# Transmitter (ESP32-C3)
82+
esptool.py --chip esp32c3 -b 460800 write_flash 0x10000 tanksync-transmitter-${{ github.ref_name }}.bin
83+
```
84+
85+
Or use the **OTA update** via the receiver's web UI.

.gitignore

100644100755
Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,52 @@
1-
# Build files
1+
# Build artifacts (ESP-IDF)
22
**/build/
3-
*.bin
4-
*.elf
5-
*.map
3+
**/sdkconfig
4+
**/sdkconfig.old
5+
**/dependencies.lock
6+
**/managed_components/
67

7-
# BUT keep firmware release binaries
8-
!firmware/**/*.bin
8+
# Node.js
9+
node_modules/
10+
dist/
11+
*.log
12+
npm-debug.log*
913

10-
# IDE files
14+
# Environment & secrets
15+
.env
16+
.env.local
17+
.env.production
18+
19+
# IDE
1120
.vscode/
1221
.idea/
1322
*.code-workspace
1423

15-
# OS files
24+
# OS
1625
.DS_Store
1726
Thumbs.db
1827

19-
# Claude settings
28+
# Private / AI tooling
2029
.claude/
2130

22-
# Temporary files
31+
# Caches
32+
.cache/
33+
__pycache__/
34+
35+
# Legacy / dev directories (not part of release)
36+
v2-qr-linking/
37+
Receiver-ESP32-DevKit/
38+
Receiver-IDF/
39+
Transmitter-IDF/
40+
tanksync-pwa/
41+
42+
# Large binaries (use GitHub Releases instead)
43+
*.bin
44+
*.elf
45+
*.map
46+
*.zip
47+
*.pdf
48+
49+
# Temporary
2350
*.tmp
2451
*.bak
2552
*~

0 commit comments

Comments
 (0)