Инструменты пользователя

Инструменты сайта


firmware-autoreply

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
firmware-autoreply [2025/11/07 21:54] rsgrinkofirmware-autoreply [2025/12/07 14:13] (текущий) rsgrinko
Строка 3: Строка 3:
 {{:wiki:photo_2025-11-07_21-42-14.jpg|}} {{:wiki:photo_2025-11-07_21-42-14.jpg|}}
  
-В данном разделе приведена информауия по модификации исходного кода прошивки Meshtastic для реализации функционала автоматического ответа на сообщения с информированием об уровнях принятого сигнала.+В данном разделе приведена информация по модификации исходного кода прошивки Meshtastic для реализации функционала автоматического ответа на сообщения с информированием об уровнях принятого сигнала.
  
-===== Добавление обработчика принятого сообщения =====+===== Добавляем обработчик принятого сообщения =====
  
 В файл **src\modules\ReplyModule.cpp** добавляем метод обработки приема сообщения В файл **src\modules\ReplyModule.cpp** добавляем метод обработки приема сообщения
Строка 49: Строка 49:
 </code> </code>
 {{:wiki:screenshot_2025-11-07_215325.png|}} {{:wiki:screenshot_2025-11-07_215325.png|}}
 +
 +
 +===== Обновление от 15.11.2025 ===== 
 +В код автоответа требуется добавить проверку на факт того, что сообщение адресованно именно вашей ноде. Иначе она при получения сообщения в общий канал также отреагирует и ответит в директ отправителю.
 +
 +<code>
 +...
 +ProcessMessage ReplyModule::handleReceived(const meshtastic_MeshPacket &mp)
 +{
 +    uint32_t nodeId = nodeDB->getNodeNum();
 +    
 +    // Проверяем, нам ли адресован этот пакет
 +    if (mp.to == nodeId) {
 +        auto reply = allocDataPacket();
 +        float P = mp.rx_rssi + mp.rx_snr - 10*log10f(pow10f(mp.rx_snr/10)+1);
 +....
 +</code>
 +
 +{{:wiki:photo_2025-11-08_16-04-04.jpg|}}
 +
 +Альтернативный вариант (более корректный):
 +<code>
 +...
 +ProcessMessage ReplyModule::handleReceived(const meshtastic_MeshPacket &mp)
 +{
 +    // Проверяем, что пакет не является броадкаст
 +    if (!isBroadcast(mp.to)) {
 +        auto reply = allocDataPacket();
 +        float P = mp.rx_rssi + mp.rx_snr - 10*log10f(pow10f(mp.rx_snr/10)+1);
 +....
 +</code>
 +
 +===== Готовая сборка для Heltec V3 =====
 +Отвечает на сообщения в директ. 
 +  * S - уровень сигнала
 +  * P - ping
 +
 +Из сборки вырезаны следующие модули:
 +  * PAXCOUNTER
 +  * ATAK
 +  * POWERSTRESS
 +  * REMOTEHARDWARE
 +  * AUDIO
 +  * EXTERNALNOTIFICATION
 +Также добавлена поддержка кириллицы
 +
 +[[https://meshtula.ru/uploaded-files/firmware.bin|firmware.bin]]
 +
 +[[https://meshtula.ru/uploaded-files/firmware.factory.bin|firmware.factory.bin]]
  
 ===== Итог ===== ===== Итог =====
 Получили ноду, которая на принятые сообщения отвечает уровнем принятого сигнала и его характеристиками. Получили ноду, которая на принятые сообщения отвечает уровнем принятого сигнала и его характеристиками.
- 
 {{:wiki:photo_2025-11-07_21-54-25.jpg|}} {{:wiki:photo_2025-11-07_21-54-25.jpg|}}
firmware-autoreply.1762541694.txt.gz · Последнее изменение: rsgrinko

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki