Skip to content

Commit e71f43f

Browse files
authored
Release ЦУП Альтаир v0.5.0 — Технопром 2026
Миссия на Луну: телеметрия v5, ANTENNA=0/1, CC1101/ESP32 gateway, графики, команды, прошивальщик ESP32, поворотка и Windows installer.
2 parents 64624f1 + 99c3e77 commit e71f43f

23 files changed

Lines changed: 3514 additions & 5003 deletions
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: ЦУП Альтаир — v5 UI checks
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
push:
8+
branches:
9+
- main
10+
workflow_dispatch:
11+
12+
jobs:
13+
syntax:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout repository
17+
uses: actions/checkout@v4
18+
19+
- name: Set up Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: "22"
23+
24+
- name: Validate package.json
25+
run: node -e "JSON.parse(require('fs').readFileSync('package.json','utf8')); console.log('package.json OK')"
26+
27+
- name: Check browser JavaScript syntax
28+
run: |
29+
node --check js/parser.js
30+
node --check js/app.js
31+
node --check js/charts.js
32+
node --check js/help.js
33+
node --check js/flasher-v5.js
34+
node --check js/serial.js
35+
node --check js/ui.js
36+
node --check js/rotator.js
37+
38+
- name: Check Electron host syntax
39+
run: node --check desktop/main.cjs
40+
41+
- name: Check required v5 interface fields
42+
shell: bash
43+
run: |
44+
for id in ID VOLT PANEL_POWER PACKET UPTIME TEMP RSSI SNR chartVOLT chartPANEL_POWER chartTEMP chartRSSI chartSNR; do
45+
grep -q "id=\"$id\"" index.html || { echo "Missing interface id: $id"; exit 1; }
46+
done
47+
grep -q '"ANTENNA"' js/app.js || { echo "Missing ANTENNA field in application UI"; exit 1; }
48+
grep -q 'ANTENNA: Object.freeze' js/parser.js || { echo "Missing ANTENNA parser definition"; exit 1; }
49+
grep -q 'ANTENNA=' examples/technoprom_2026_transmitter/Transmit_v5.ino || { echo "Missing ANTENNA in transmitter example"; exit 1; }
50+
grep -q '1 · РАСКРЫТА' js/app.js || { echo "Missing deployed antenna label"; exit 1; }
51+
grep -q '0 · СЛОЖЕНА' js/app.js || { echo "Missing stowed antenna label"; exit 1; }
52+
if grep -q 'id="CURR"' index.html; then
53+
echo "CURR must not be present in the v5 main interface"
54+
exit 1
55+
fi

.github/workflows/esp32-radio-gateway.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: ESP32 radio gateway firmware
1+
name: ЦУП Альтаир — ESP32 radio gateway firmware
22

33
on:
44
push:
@@ -43,25 +43,25 @@ jobs:
4343
BOOT_APP0="$(find "$HOME/.platformio/packages" -name boot_app0.bin -print -quit)"
4444
test -n "$BOOT_APP0"
4545
46-
cp "$BUILD_DIR/firmware.bin" firmware-artifact/openmcc-radio-gateway-firmware.bin
47-
cp "$BUILD_DIR/bootloader.bin" firmware-artifact/openmcc-radio-gateway-bootloader.bin
48-
cp "$BUILD_DIR/partitions.bin" firmware-artifact/openmcc-radio-gateway-partitions.bin
49-
cp "$BOOT_APP0" firmware-artifact/openmcc-radio-gateway-boot_app0.bin
46+
cp "$BUILD_DIR/firmware.bin" firmware-artifact/altair-radio-gateway-firmware.bin
47+
cp "$BUILD_DIR/bootloader.bin" firmware-artifact/altair-radio-gateway-bootloader.bin
48+
cp "$BUILD_DIR/partitions.bin" firmware-artifact/altair-radio-gateway-partitions.bin
49+
cp "$BOOT_APP0" firmware-artifact/altair-radio-gateway-boot_app0.bin
5050
5151
cat > firmware-artifact/flash-layout.txt <<'EOF'
52-
ESP32-WROOM-32 / esp32dev flash layout
53-
0x1000 openmcc-radio-gateway-bootloader.bin
54-
0x8000 openmcc-radio-gateway-partitions.bin
55-
0xE000 openmcc-radio-gateway-boot_app0.bin
56-
0x10000 openmcc-radio-gateway-firmware.bin
52+
ЦУП Альтаир / ESP32-WROOM-32 / esp32dev
53+
0x1000 altair-radio-gateway-bootloader.bin
54+
0x8000 altair-radio-gateway-partitions.bin
55+
0xE000 altair-radio-gateway-boot_app0.bin
56+
0x10000 altair-radio-gateway-firmware.bin
5757
EOF
5858
5959
md5sum firmware-artifact/*.bin > firmware-artifact/md5sums.txt
6060
6161
- name: Upload compiled firmware
6262
uses: actions/upload-artifact@v4
6363
with:
64-
name: OpenMCC-ESP32-Radio-Gateway
64+
name: Altair-ESP32-Radio-Gateway
6565
path: firmware-artifact/*
6666
if-no-files-found: error
6767
retention-days: 30

.github/workflows/windows-installer.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Windows installer
1+
name: ЦУП Альтаир — Windows installer
22

33
on:
44
push:
@@ -51,10 +51,10 @@ jobs:
5151
New-Item -ItemType Directory -Force "bundled_firmware" | Out-Null
5252
5353
$images = @(
54-
@{ Source = "$buildDir/bootloader.bin"; File = "gateway-bootloader.bin"; Label = "Bootloader"; Address = 4096 },
55-
@{ Source = "$buildDir/partitions.bin"; File = "gateway-partitions.bin"; Label = "Partition table"; Address = 32768 },
56-
@{ Source = $bootApp0.FullName; File = "gateway-boot_app0.bin"; Label = "boot_app0"; Address = 57344 },
57-
@{ Source = "$buildDir/firmware.bin"; File = "gateway-firmware.bin"; Label = "Radio gateway"; Address = 65536 }
54+
@{ Source = "$buildDir/bootloader.bin"; File = "gateway-bootloader.bin"; Label = "Bootloader"; Address = 4096 },
55+
@{ Source = "$buildDir/partitions.bin"; File = "gateway-partitions.bin"; Label = "Partition table"; Address = 32768 },
56+
@{ Source = $bootApp0.FullName; File = "gateway-boot_app0.bin"; Label = "boot_app0"; Address = 57344 },
57+
@{ Source = "$buildDir/firmware.bin"; File = "gateway-firmware.bin"; Label = "Altair radio gateway"; Address = 65536 }
5858
)
5959
6060
$manifestImages = @()
@@ -84,7 +84,7 @@ jobs:
8484
targetChip = "ESP32"
8585
firmwareVersion = $firmwareVersion
8686
applicationVersion = $appVersion
87-
buildLabel = "OpenMCC v$appVersion CI"
87+
buildLabel = "Altair MCC v$appVersion CI"
8888
flashMode = "dio"
8989
flashFreq = "40m"
9090
flashSize = "4MB"
@@ -109,7 +109,7 @@ jobs:
109109
- name: Upload Windows installer artifact
110110
uses: actions/upload-artifact@v4
111111
with:
112-
name: OpenMCC-Windows-Installer
112+
name: CUP-Altair-Windows-Installer
113113
path: |
114114
release/*.exe
115115
release/*.yml
@@ -142,13 +142,13 @@ jobs:
142142
exit 0
143143
}
144144
145-
$installer = Get-ChildItem -Path release -Filter "OpenMCC-Setup-*.exe" | Select-Object -First 1
145+
$installer = Get-ChildItem -Path release -Filter "CUP-Altair-Setup-*.exe" | Select-Object -First 1
146146
if (-not $installer) {
147-
throw "Windows installer was not found in release/."
147+
throw "Altair Windows installer was not found in release/."
148148
}
149149
150150
gh release create $env:RELEASE_TAG $installer.FullName `
151151
--target $env:GITHUB_SHA `
152-
--title "OpenMCC $env:RELEASE_TAG" `
153-
--generate-notes `
152+
--title "ЦУП Альтаир v5 ($env:RELEASE_TAG) — Технопром 2026. Миссия на Луну" `
153+
--notes "ЦУП Альтаир v5: интерфейс Технопром 2026, телеметрия миссии без измерения тока, графики сразу под телеметрией, профиль CC1101 для передатчика 434.000 МГц, встроенная прошивка ESP32-радиошлюза и управление AZ/EL." `
154154
--latest

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,32 @@
11
# Changelog
22

3+
## v0.5.0 / v5 — ЦУП Альтаир · Технопром 2026 · Миссия на Луну
4+
5+
- приложение переименовано в **«ЦУП Альтаир»**, подзаголовок — «Центр управления полётами»;
6+
- добавлено оформление **«Технопром 2026 — Миссия на Луну»**;
7+
- главный экран перестроен: сразу после телеметрии расположены графики, затем команды, радиоканал, прошивка ESP32 и поворотное устройство;
8+
- состав телеметрии изменён на `ID`, `VOLT`, `PANEL_POWER`, `PACKET`, `UPTIME`, `ANTENNA`, `TEMP`, `RSSI`, `SNR`;
9+
- добавлено состояние раскрытия рулеточной антенны: `ANTENNA=1` — раскрыта, `ANTENNA=0` — сложена;
10+
- карточка раскрытия антенны визуально меняет состояние и выводит `1 · РАСКРЫТА` либо `0 · СЛОЖЕНА`;
11+
- параметр тока `CURR` полностью удалён из интерфейса v5 и графиков;
12+
- рекомендуется именованный пакет `$TM,ID=...,PACKET=...,UPTIME=...,VOLT=...,PANEL_POWER=...,TEMP=...,ANTENNA=...`;
13+
- парсер также принимает позиционный пакет `$TM,<ID>,<PACKET>,<UPTIME>,<VOLT>,<PANEL_POWER>,<TEMP>,<ANTENNA>`;
14+
- сохранена поддержка `$TEL,KEY=VALUE,...` и legacy IntroSat `$TM`;
15+
- графики v5: аккумулятор, мощность солнечных панелей, температура, RSSI, SNR;
16+
- проанализирован загруженный `Transmit.ino`: фактические настройки — 434.000 МГц и 5 dBm;
17+
- добавлен профиль CC1101 **«Технопром 2026»**: 434.000 МГц / 4.8 kbps / 2-FSK / 5 кГц deviation / 58 кГц RX BW;
18+
- исходный загруженный скетч сохранён как `examples/technoprom_2026_transmitter/Transmit_original.ino`;
19+
- `Transmit_v5.ino` обновлён: формирует именованный пакет телеметрии и передаёт `ANTENNA=0/1`;
20+
- ESP32 radio gateway обновлён до **0.2.0**;
21+
- CC1101 gateway передаёт именованные `$TM`-поля без потерь и добавляет RSSI/LQI/SNR;
22+
- для свободной тестовой строки исходного передатчика реализован вывод `RF_RAW` в журнал;
23+
- SNR для CC1101 реализован как диагностическая оценка `RSSI_packet - RSSI_noise_floor`, поскольку прямого готового SNR у CC1101 нет;
24+
- добавлен новый mission guide `docs/TECHNOPROM_2026_MOON_MISSION.md`;
25+
- добавлена документация `docs/ANTENNA_TELEMETRY_V5.md`;
26+
- desktop product name и ярлык изменены на **«ЦУП Альтаир»**;
27+
- установщик переименован в `CUP-Altair-Setup-0.5.0.exe`;
28+
- Windows release workflow обновлён для автоматической публикации релиза v0.5.0.
29+
330
## v0.4.0 — Integrated ESP32 firmware flasher
431

532
- добавлен встроенный раздел **«Прошивка ESP32»** в desktop-приложение OpenMCC;

0 commit comments

Comments
 (0)