feat: MQTT-окружения для Waveshare S3 LR1121 и переход AGENTS.md на работу в main
- добавлены Waveshare_S3_LR1121_repeater_mqtt/_espnow/_bridge: из новых плат upstream 1.18.0 только эта на ESP32; ThinkNode M8 и M4, Wio Tracker L1 1W и Muzi Base — на nRF52, WiFi нет, MQTT-сборки для них невозможны (им место в форке MeshCore, не здесь) - EnvironmentSensorManager: возвращён scanI2CBus из upstream (слияние его потеряло, потому что мы когда-то заменили полное сканирование шины поштучной проверкой адресов); при этом сохранён наш таймаут 20 мс на ESP32 и наша поддержка адреса, определённого платой - AGENTS.md: работаем в main, ветка develop устарела (эпоха EastMesh); upstream тянем релизным тегом, а не веткой dev; версия upstream — v1.18.0 Проверено сборкой после слияния: heltec_v4_repeater_mqtt, LilyGo_TBeam_1W_repeater_mqtt, Meshadventurer_sx1262_repeater_mqtt, RAK_3112_repeater_mqtt, heltec_v4_repeater_mqtt_espnow, heltec_v4_repeater_mqtt_bridge, LilyGo_Tlora_C6_repeater_mqtt_espnow (наш фикс ESP-IDF 5), LilyGo_TBeam_1W_repeater_mqtt_espnow, Waveshare_S3_LR1121_repeater_mqtt, Waveshare_S3_LR1121_repeater_mqtt_bridge MQTT-целей стало 112: 42 uplink, 34 espnow, 36 bridge
This commit is contained in:
1 parent
80d36d20bc
commit
8fa0bfe1d3
3 files changed
+70
-22
No files matched your search
@@ -162,7 +162,7 @@ Workflow upstream MeshCore в `.github/workflows/` остаются под ис
|
||||
|
||||
Проект собирает и поставляет только MQTT-прошивки (`*_repeater_mqtt`, `*_repeater_mqtt_espnow`, `*_repeater_mqtt_bridge`). Связанные с этим правила:
|
||||
|
||||
- текущая официальная версия MeshCore — `v1.15.0`
|
||||
- текущая официальная версия MeshCore — `v1.18.0` (база PosadMesh после слияния upstream; предыдущая база — `v1.17.1`)
|
||||
- линия companion-прошивок удалена из проекта: окружения `*_companion_radio_*` и код `examples/companion_radio` остаются в upstream-оверлеях, PosadMesh их не собирает и не документирует
|
||||
- не придумывайте отдельные номера версий PosadMesh для треков, которых нет в `release-notes.yml`
|
||||
|
||||
@@ -189,24 +189,23 @@ git tag repeater-mqtt-v2026.5.1
|
||||
|
||||
Типичный порядок выпуска:
|
||||
|
||||
1. Обновить `release-notes.yml` в ветке `develop`.
|
||||
2. Смерджить релизный PR из `develop` в `main`.
|
||||
3. Собрать нужные прошивки — локально или ручным workflow в Gitea Actions — с подходящими `FIRMWARE_VERSION` и `POSADMESH_VERSION`.
|
||||
4. Создать нужный тег или теги релиза на целевом коммите в `main`.
|
||||
5. Запушить теги в git.meshinfo.ru и создать релиз в его веб-интерфейсе.
|
||||
1. Обновить `release-notes.yml` в `main`.
|
||||
2. Собрать нужные прошивки — локально или ручным workflow в Gitea Actions — с подходящими `FIRMWARE_VERSION` и `POSADMESH_VERSION`.
|
||||
3. Создать нужный тег или теги релиза на целевом коммите в `main`.
|
||||
4. Запушить теги в git.meshinfo.ru и создать релиз в его веб-интерфейсе.
|
||||
|
||||
## Синхронизация с upstream
|
||||
|
||||
Когда просят подтянуть изменения из upstream MeshCore:
|
||||
|
||||
- тянуть из `meshcore-dev/MeshCore:dev`
|
||||
- начинать с локальной ветки `develop`
|
||||
- создать временную интеграционную ветку от `develop`
|
||||
- влить upstream `dev` в эту временную интеграционную ветку
|
||||
- разрешать конфликты так, чтобы сохранить изменения, специфичные для PosadMesh
|
||||
- влить готовую интеграционную ветку обратно в `develop`
|
||||
- брать релизный тег upstream нужной роли (например `repeater-v1.18.0`), а не ветку: тег содержит ещё и релизные коммиты, которых в `dev` нет (на момент 1.18.0 — 7 штук)
|
||||
- вся работа ведётся в `main` (ветка `develop` в этом репозитории — устаревшая, от эпохи EastMesh, ей не пользуемся)
|
||||
- создать временную интеграционную ветку от `main`, например `integrate/upstream-1.18.0`
|
||||
- поставить страховочный тег `pre-<версия>` на текущий `main` и сделать `git bundle` перед слиянием
|
||||
- влить тег upstream в интеграционную ветку, разрешать конфликты так, чтобы сохранить изменения, специфичные для PosadMesh
|
||||
- проверить сборкой несколько ключевых целей, затем влить интеграционную ветку в `main`
|
||||
|
||||
Не вливайте upstream напрямую в `main`.
|
||||
Вливать upstream напрямую в `main` можно только через интеграционную ветку с проверкой сборкой.
|
||||
|
||||
## Границы области работ
|
||||
|
||||
|
||||
@@ -213,21 +213,22 @@ static RAK12500LocationProvider RAK12500_provider;
|
||||
#endif
|
||||
|
||||
// ============================================================
|
||||
// I2C sensor probe
|
||||
// Probes only the compiled-in sensor addresses.
|
||||
// This runs before any sensor library is touched, so a missing
|
||||
// or misbehaving device cannot stall or crash the boot sequence.
|
||||
// I2C bus scan
|
||||
// Сканирует шину до обращения к библиотекам датчиков, чтобы
|
||||
// отсутствующее или зависшее устройство не тормозило загрузку.
|
||||
// ============================================================
|
||||
|
||||
static bool probeI2CAddress(TwoWire* wire, uint8_t addr) {
|
||||
static void scanI2CBus(TwoWire* wire, bool found[128]) {
|
||||
if (wire == nullptr) {
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
#if defined(ESP32)
|
||||
wire->setTimeOut(20);
|
||||
wire->setTimeOut(20); // PosadMesh: ограничиваем ожидание, иначе зависший датчик тянет boot
|
||||
#endif
|
||||
wire->beginTransmission(addr);
|
||||
return wire->endTransmission() == 0;
|
||||
for (uint8_t addr = 0x08; addr < 0x78; addr++) {
|
||||
wire->beginTransmission(addr);
|
||||
found[addr] = (wire->endTransmission() == 0);
|
||||
}
|
||||
}
|
||||
|
||||
static bool readI2CRegister8(TwoWire* wire, uint8_t addr, uint8_t reg, uint8_t* value) {
|
||||
@@ -953,6 +954,10 @@ bool EnvironmentSensorManager::begin() {
|
||||
MESH_DEBUG_PRINTLN("I2C using board pins SDA: %d SCL: %d", PIN_BOARD_SDA, PIN_BOARD_SCL);
|
||||
#endif
|
||||
|
||||
// Scan the I2C bus before touching any sensor library.
|
||||
bool detected[128] = {};
|
||||
scanI2CBus(TELEM_WIRE, detected);
|
||||
|
||||
// Walk the sensor table and initialize only detected devices.
|
||||
_active_sensor_count = 0;
|
||||
for (size_t i = 0; i < SENSOR_TABLE_SIZE && _active_sensor_count < MAX_ACTIVE_SENSORS; i++) {
|
||||
|
||||
@@ -1642,3 +1642,47 @@ build_flags =
|
||||
-UMQTT_DEBUG
|
||||
build_src_filter = ${env:Xiao_S3_LoRa2021F33-2G4_repeater_mqtt.build_src_filter}
|
||||
+<helpers/bridges/MQTTBridge.cpp>
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Waveshare ESP32-S3 LR1121 (плата добавлена в upstream 1.18.0)
|
||||
; Без дисплея, кнопки и датчика батареи; радио LR1121 (850-930 МГц и 2.4 ГГц)
|
||||
; ---------------------------------------------------------------------------
|
||||
[env:Waveshare_S3_LR1121_repeater_mqtt]
|
||||
extends = Waveshare_S3_LR1121
|
||||
build_flags =
|
||||
${Waveshare_S3_LR1121.build_flags}
|
||||
-D ADVERT_NAME='"Waveshare LR1121 Repeater"'
|
||||
-D ADVERT_LAT=0.0
|
||||
-D ADVERT_LON=0.0
|
||||
-D ADMIN_PASSWORD='"password"'
|
||||
-D MAX_NEIGHBOURS=50
|
||||
-D WITH_MQTT_UPLINK=1
|
||||
-D MQTT_DEBUG=1
|
||||
-D WIFI_SSID='"myssid"'
|
||||
-D WIFI_PWD='"mypwd"'
|
||||
-D MQTT_DEFAULT_IATA='"UNSET"'
|
||||
-D CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=1
|
||||
build_src_filter = ${Waveshare_S3_LR1121.build_src_filter}
|
||||
+<../examples/simple_repeater>
|
||||
+<helpers/mqtt/*.cpp>
|
||||
+<helpers/web/*.cpp>
|
||||
lib_deps =
|
||||
${Waveshare_S3_LR1121.lib_deps}
|
||||
${esp32_ota.lib_deps}
|
||||
|
||||
[env:Waveshare_S3_LR1121_repeater_mqtt_espnow]
|
||||
extends = env:Waveshare_S3_LR1121_repeater_mqtt
|
||||
build_flags =
|
||||
${env:Waveshare_S3_LR1121_repeater_mqtt.build_flags}
|
||||
-D WITH_ESPNOW_BRIDGE=1
|
||||
build_src_filter = ${env:Waveshare_S3_LR1121_repeater_mqtt.build_src_filter}
|
||||
+<helpers/bridges/ESPNowBridge.cpp>
|
||||
|
||||
[env:Waveshare_S3_LR1121_repeater_mqtt_bridge]
|
||||
extends = env:Waveshare_S3_LR1121_repeater_mqtt
|
||||
build_flags =
|
||||
${env:Waveshare_S3_LR1121_repeater_mqtt.build_flags}
|
||||
-D WITH_MQTT_BRIDGE=1
|
||||
-UMQTT_DEBUG
|
||||
build_src_filter = ${env:Waveshare_S3_LR1121_repeater_mqtt.build_src_filter}
|
||||
+<helpers/bridges/MQTTBridge.cpp>
|
||||
Reference in new issue
Block a user