[Модуль] MQTT (mqtt)
Модератор: immortal
-
- Сообщения: 52
- Зарегистрирован: Пт июн 09, 2017 8:39 pm
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Re: Предложения по доработке модуля MQTT
Ничего тут капризного нет.nick7zmail писал(а):Ну ахренеть блин!!! Заработало...как так то...
Достаточно было кстатиБессмысленное умножение нуля на 10 тут явно лишнее)) В любом случае спасибо! В очередной раз убеждаюсь в "капризности" Arduino IDE.Код: Выделить всё
payload[0]=payload[0]-'0';//вычесть из полученного значения в байтах (49 при 1, 48 при 0), байтовый 0 (48)...ну и типа в остатке 1 или 0...но это такая бредятина блин...
- Вложения
-
- img2.jpg (412.59 КБ) 5339 просмотров
-
- Сообщения: 52
- Зарегистрирован: Пт июн 09, 2017 8:39 pm
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Re: Предложения по доработке модуля MQTT
Можно так
void callback(char* topic, byte* payload, unsigned int length)
{
for (int i = 0; i < COLTOPIC; i++) {MQTT_to_Holding="";} //limpia cadenas recibidas // Cleans received strings
//преобразуем тему(topic) и значение (payload) в строку
payload[length] = '\0';
String strTopic = String(topic);
String strPayload = String((char*)payload);
unsigned int tmp = strPayload.toInt();
//Исследуем что "прилетело" от сервера по подписке:
if(strTopic == PUBLISHTOPIC1){ // значения 90/165 включение/отключения термостата
if(tmp == 90 || tmp == 165){
MQTT_to_Holding[0] += String((char*)payload); // адрес 40001
}
}
Serial.print("topic [");
Serial.print(topic);
Serial.print("-");
Serial.print(tmp);
Serial.println("] ");
}
void callback(char* topic, byte* payload, unsigned int length)
{
for (int i = 0; i < COLTOPIC; i++) {MQTT_to_Holding="";} //limpia cadenas recibidas // Cleans received strings
//преобразуем тему(topic) и значение (payload) в строку
payload[length] = '\0';
String strTopic = String(topic);
String strPayload = String((char*)payload);
unsigned int tmp = strPayload.toInt();
//Исследуем что "прилетело" от сервера по подписке:
if(strTopic == PUBLISHTOPIC1){ // значения 90/165 включение/отключения термостата
if(tmp == 90 || tmp == 165){
MQTT_to_Holding[0] += String((char*)payload); // адрес 40001
}
}
Serial.print("topic [");
Serial.print(topic);
Serial.print("-");
Serial.print(tmp);
Serial.println("] ");
}
-
- Сообщения: 52
- Зарегистрирован: Пт июн 09, 2017 8:39 pm
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Re: Предложения по доработке модуля MQTT
if(tmp == 90 || tmp == 165){ это мои значения все прилетает в натуральном виде как отправляешь.
- prmres
- Сообщения: 433
- Зарегистрирован: Пт ноя 24, 2017 2:24 am
- Откуда: оттуда
- Благодарил (а): 113 раз
- Поблагодарили: 123 раза
Re: Предложения по доработке модуля MQTT
да, та же самая проблемаin4m писал(а):Хелп, уважаемые форумчане, модуль дико долбит в лог и пожирает свободное место за 1 минуту набегает по 80 мб.
Такое чувство, что в модуле что-то с таймаутом на подключение, иначе зачем он закрывает уже установленное соединение?
вкратце: решил сегодня настроить сопряжение с MQTT, установил брокер mosquttto на ubuntu 16.04 , настроил модуль mqtt.
Вроде бы все здорово, но в логах mosquitto с космической скоростью долбят сообщения.
Вывод с mosquitto, запущенного в консоле на 3 секунды:
1512857150: New client connected from 172.16.0.20 as MajorDoMo (c0, k10).
1512857150: New connection from 172.16.0.20 on port 1883.
1512857150: New connection from 172.16.0.20 on port 1883.
1512857150: Client MajorDoMo already connected, closing old connection.
1512857150: Client MajorDoMo disconnected.
1512857150: New client connected from 172.16.0.20 as MajorDoMo (c0, k10).
1512857150: Client MajorDoMo already connected, closing old connection.
1512857150: Client MajorDoMo disconnected.
1512857150: New client connected from 172.16.0.20 as MajorDoMo (c0, k10).
1512857150: New connection from 172.16.0.20 on port 1883.
1512857150: Client MajorDoMo already connected, closing old connection.
1512857150: Client MajorDoMo disconnected.
1512857150: New client connected from 172.16.0.20 as MajorDoMo (c0, k10).
C1512857150: Client MajorDoMo already connected, closing old connection.
1512857150: Client MajorDoMo disconnected.
1512857150: New client connected from 172.16.0.20 as MajorDoMo (c0, k10).
1512857150: mosquitto version 1.4.14 terminating
тут похоже описывают туже самую проблему: https://majordomo.smartliving.ru/forum/ ... =30#p65277
пока что просто отключил логирование этих записей, но очевидно глюк в клиенте и требует внимания разработчика
подозреваю мало кто это замечает, ибо ставится брокер без конфигов настроек и пользователей, поэтому и не видно логов
Не только лишь все!
-
- Сообщения: 11
- Зарегистрирован: Вт янв 02, 2018 7:10 pm
- Благодарил (а): 0
- Поблагодарили: 3 раза
Re: Предложения по доработке модуля MQTT
На днях проверю у себя и попробую исправить. Если что, создам запрос на добавление изменений. Кстати, мои доработки, о которых я писал выше, уже добавлены в официальный репозиторий.prmres писал(а):да, та же самая проблема
пока что просто отключил логирование этих записей, но очевидно глюк в клиенте и требует внимания разработчика
подозреваю мало кто это замечает, ибо ставится брокер без конфигов настроек и пользователей, поэтому и не видно логов
UPD: Сейчас подключился домой и проверил логи moquitto в \var\log\mosquitto\mosquitto.log
Такого я там не обнаружил. Однако, если остановить mosquitto при работающем majordomo, а потом его запустить,
то тогда появляется эта проблема. После перезапуска сервиса majordomo проблема исчезает.
Я в свое время решил эту проблему, прописав зависимость сервиса majordomo от MySQL и Mosquitto, чтобы сервис MD
стартовал только после запуска вышеуказанных служб.
В файле /etc/init.d/majordomo у меня следующий заголовок:
Код: Выделить всё
#!/bin/sh
### BEGIN INIT INFO
# Provides: SmartLiving
# Required-Start: $remote_fs $syslog $mysql $mosquitto
# Required-Stop: $remote_fs $syslog $mysql $mosquitto
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
- Рейтинг: 1.16%
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Предложения по доработке модуля MQTT
То что отваливается МД - это не нормально. Он должен слать что то типа heartbit раз в 20 секунд что ли...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- prmres
- Сообщения: 433
- Зарегистрирован: Пт ноя 24, 2017 2:24 am
- Откуда: оттуда
- Благодарил (а): 113 раз
- Поблагодарили: 123 раза
Re: Предложения по доработке модуля MQTT
полез в свою Ubuntu и не обнаружил этого файла, оказываетцо используется менеджер systemdDX168B писал(а): В файле /etc/init.d/majordomo у меня следующий заголовок:
и соответственно описание сервиса тут: /etc/systemd/system/majordomo.service
добавил строку:
Код: Выделить всё
Requires=mosquitto.service
результата ноль, в логе:
Client majordomo has exceeded timeout, disconnecting.
есть зависимость, нет зависимости - всё едино
клиент MD отваливается, лог потихонечку наполняется
Не только лишь все!
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Предложения по доработке модуля MQTT
Цикл mqtt в самой системе какой используете?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- prmres
- Сообщения: 433
- Зарегистрирован: Пт ноя 24, 2017 2:24 am
- Откуда: оттуда
- Благодарил (а): 113 раз
- Поблагодарили: 123 раза
Re: Предложения по доработке модуля MQTT
поставил дополнение из маркета, появилост MQTT в устройствахnick7zmail писал(а):Цикл mqtt в самой системе какой используете?
указал в настройках имя клиента, адрес сервера, топики все (т.е. #), имя-пароль
сразу пошла информация
это какой цикл я использую?
Не только лишь все!