MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Проблемы/вопросы, связанные с запуском под различными платформами и конфигурациями.

Модератор: immortal

Аватара пользователя
Shindax
Сообщения: 7
Зарегистрирован: Пт апр 04, 2025 5:34 am
Благодарил (а): 0
Поблагодарили: 0

MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение Shindax » Пт апр 04, 2025 7:39 am

Добрый день.

Raspberry Pi3 B+. Установлено: Raspbian 12.10, PHP 8.2, MariaDB 10, Mosquitto, MajorDoMo последней версии со всеми обновлениями. Raspberry находится дома, белый IP, все нужные порты на рутере проброшены, DHCP рутера с фиксированными IP-адресами. MQTT настроен на протокол 1883 с авторизацией. С телефона посредством MQTT Dash и с рабочего компьютера посредством MQTT Explorer без проблем устанавливается связь с Mosquitto, MQTT-данные без проблем летают туда-обратно, настройки абсолютно одинаковые, т.е. сам канал работает. Для пробы к Raspberry через интернет подключен модуль Witty на ESP8266, светодиоды зажигаются, нажатие кнопок Mosquitto фиксируется во всех подключенных MQTT-клиентах. На MajorDoMo через "Маркет дополнений" установлен пакет "MQTT" от SergeJey. После всех настроек, аналогичных настройкам с телефона и MQTT Explorer-а на компьютере:

Адрес сервера: 188.235.xxx.xx
Порт сервера: 1883
Путь: #
С авторизацией

в MajorDoMo -> Устройства -> MQTT на панели "Service: mqtt" постоянно горит статус "OFFLINE", нажатие кнопки "Restart" меняет надпись на "OFFLINE restart", нажатие кнопки "Stop" соответственно на "OFFLINE stop". Никаких новых данных не поступает, высвечивается розовая панель "Нет данных".

Т.к. и MajorDoMo, и Mosquitto установлены на одном устройстве, пробовал адрес сервера менять на localhost и внутренний IP-адрес, все без толку.

Как узнать, почему нет коннекта, может есть какие-то логи, или что нужно допилить, чтобы получить MQTT-данные. Может какой публичный MQTT-сервер есть для проверки канала.

Спасибо.
V.A.S.t
Сообщения: 297
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 17 раз
Поблагодарили: 69 раз

Re: MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение V.A.S.t » Сб апр 05, 2025 2:47 am

Для начала из консоли системы попробовать запустить цикл MQTT
sudo -u www-data php /var/www/scripts/cycle_mqtt.php
И посмотреть, что он выдаёт
Аватара пользователя
Shindax
Сообщения: 7
Зарегистрирован: Пт апр 04, 2025 5:34 am
Благодарил (а): 0
Поблагодарили: 0

Re: MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение Shindax » Сб апр 05, 2025 7:04 am

Спасибо, выдает следующее:

shindax@raspberrypi:~ $ sudo -u www-data php /var/www/scripts/cycle_mqtt.php
11:02:46 Topics to watch: # (Total: 1)
11:02:46 Path: #
11:02:46 Subscribing to: #

На WEB-морде без изменений.
V.A.S.t
Сообщения: 297
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 17 раз
Поблагодарили: 69 раз

Re: MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение V.A.S.t » Сб апр 05, 2025 1:59 pm

Цикл не останавливается? Если что-то публиковать, то это отображается?
Аватара пользователя
Shindax
Сообщения: 7
Зарегистрирован: Пт апр 04, 2025 5:34 am
Благодарил (а): 0
Поблагодарили: 0

Re: MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение Shindax » Вс апр 06, 2025 6:17 am

Не понял про "Цикл не останавливается?". Выполняется единовременно и заканчивается, как все и устроено в PHP. Еще наблюдал так:

watch -n 1 sudo -u www-data php /var/www/scripts/cycle_mqtt.php

В MQTT передавал данные с телефона, реакции "0". Может что-то еще в cron кроме cycle.php нужно прописать?
V.A.S.t
Сообщения: 297
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 17 раз
Поблагодарили: 69 раз

Re: MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение V.A.S.t » Вс апр 06, 2025 8:06 am

Shindax писал(а):
Вс апр 06, 2025 6:17 am
Выполняется единовременно и заканчивается, как все и устроено в PHP.
Он не должен останавливаться. Это цикл, который работает бесконечно и отвечает за приём и передачу сообщений.
Shindax писал(а):
Вс апр 06, 2025 6:17 am
Может что-то еще в cron кроме cycle.php нужно прописать?
В смысле, в крон? Он должен работать отдельным сервисом. cycle.php - это такой же бесконечный цикл.
Аватара пользователя
Shindax
Сообщения: 7
Зарегистрирован: Пт апр 04, 2025 5:34 am
Благодарил (а): 0
Поблагодарили: 0

Re: MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение Shindax » Вс апр 06, 2025 10:06 am

sudo crontab -e
...
@reboot /usr/bin/php /var/www/cycle.php
...
Вы об этом? Сделал сразу.
V.A.S.t
Сообщения: 297
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 17 раз
Поблагодарили: 69 раз

Re: MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение V.A.S.t » Вс апр 06, 2025 1:23 pm

Эм... Ну дело, конечно, ваше, каким образом запускать скрипт, но... Вы уверены, что всё работает? Промониторить его работу можете? Уверены, что он стартует после SQL-сервера, что он не ругается на какие-либо ошибки..?
Ну и разберитесь с циклами вообще, циклы должны работать бесконечно. Без этого результата не будет.
Аватара пользователя
Shindax
Сообщения: 7
Зарегистрирован: Пт апр 04, 2025 5:34 am
Благодарил (а): 0
Поблагодарили: 0

Re: MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение Shindax » Пн апр 07, 2025 3:09 am

Проверка №1:
В Putty подключенному к Raspberry ввожу:
sudo mosquitto_sub -h 188.235.xxx.xx -t bathHeater -u "login" -P "password"
188.235.xxx.xx - белый IP, т.е. весь обмен ведется напрямую через интернет. В телефоне в программе MQTT Dash тоже подключаюсь к Raspberry и нажимаю переключатель настроенный на публикацию в топик bathHeater 1, или 0 поочередно. В терминале Putty наблюдаю последовательный поочередный вывод 0 и 1. В программе MQTT Explorer на PC наблюдаю то-же самое.
Проверка №2:
Плата Witty с ESP8266. На ней установлен светодиод и кнопка. Светодиод подписан на тот-же топик bathHeater, кнопка публикует данные в тот-же топик. При нажатии кнопки светодиод на плате меняет свое состояние, так-же меняет свое состояние кнопка на телефоне в MQTT Dash, те-же данные уходят в MQTT Explorer и в терминал Putty.

Работу MySQL контролирую через phpmyadmin и еще одной сторонней программой.

Разве из всего этого не следует вывод, что MQTT-канал на Raspberry работает, как положено?
Где и какие логи мне следует посмотреть? Весь софт ставил на Raspberry последовательно и независимо. MajorDoMo ставил в последнюю очередь. Может есть смысл взять готовую сборку MajorDoMo и попробовать снова?
V.A.S.t
Сообщения: 297
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 17 раз
Поблагодарили: 69 раз

Re: MajorDoMo на Raspberry Pi. Проблема с MQTT. Постоянный OFFLINE

Сообщение V.A.S.t » Пн апр 07, 2025 3:47 am

Вы либо не читаете, что я вам пишу, либо не хотите вникать в смысл написанного...
1. Я НЕ просил вас проверить работает ли брокер. Понятно, что он работает.
2. Я просил удостовериться, что cycle.php работает нормально. Соединяется с базой, не выдаёт никаких ошибок, не вылетает с исключениями. Именно он следит за работоспособностью всех циклов. И его лучше всего запускать в виде сервиса systemd (https://dmr.md/2022/03/21/setup-majordomo-in-debian-11/)
3. Я просил разобраться, почему цикл MQTT, запущенный из консоли (sudo -u www-data php /var/www/scripts/cycle_mqtt.php) завершает свою работу, хотя должен работать бесконечно, при этом выдавая в консоль всю полученную/переданную информацию.
Без выполнения данных рекомендаций, дальнейшее обсуждение считаю нецелесообразным.
Ответить