[Модуль] MQTT (mqtt)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

ivannag
Сообщения: 146
Зарегистрирован: Вт апр 12, 2016 12:19 am
Благодарил (а): 18 раз
Поблагодарили: 27 раз

Re: Предложения по доработке модуля MQTT

Сообщение ivannag » Ср янв 03, 2018 11:54 pm

Рад был помочь тому, кто всем тут помогает!))
avp8853
Сообщения: 52
Зарегистрирован: Пт июн 09, 2017 8:39 pm
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Предложения по доработке модуля MQTT

Сообщение avp8853 » Вс янв 07, 2018 12:44 am

nick7zmail писал(а):Ну ахренеть блин!!! Заработало...как так то...
Достаточно было кстати

Код: Выделить всё

payload[0]=payload[0]-'0';//вычесть из полученного значения в байтах (49 при 1, 48 при 0), байтовый 0 (48)...ну и типа в остатке 1 или 0...но это такая бредятина блин...   
Бессмысленное умножение нуля на 10 тут явно лишнее)) В любом случае спасибо! В очередной раз убеждаюсь в "капризности" Arduino IDE.
Ничего тут капризного нет.
Вложения
img2.jpg
img2.jpg (412.59 КБ) 5339 просмотров
avp8853
Сообщения: 52
Зарегистрирован: Пт июн 09, 2017 8:39 pm
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Предложения по доработке модуля MQTT

Сообщение avp8853 » Вс янв 07, 2018 1:13 am

Можно так
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("] ");
}
avp8853
Сообщения: 52
Зарегистрирован: Пт июн 09, 2017 8:39 pm
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Предложения по доработке модуля MQTT

Сообщение avp8853 » Вс янв 07, 2018 1:15 am

if(tmp == 90 || tmp == 165){ это мои значения все прилетает в натуральном виде как отправляешь.
Аватара пользователя
prmres
Сообщения: 433
Зарегистрирован: Пт ноя 24, 2017 2:24 am
Откуда: оттуда
Благодарил (а): 113 раз
Поблагодарили: 123 раза

Re: Предложения по доработке модуля MQTT

Сообщение prmres » Вс янв 07, 2018 8:50 pm

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
да, та же самая проблема
пока что просто отключил логирование этих записей, но очевидно глюк в клиенте и требует внимания разработчика

подозреваю мало кто это замечает, ибо ставится брокер без конфигов настроек и пользователей, поэтому и не видно логов
Не только лишь все!
DX168B
Сообщения: 11
Зарегистрирован: Вт янв 02, 2018 7:10 pm
Благодарил (а): 0
Поблагодарили: 3 раза

Re: Предложения по доработке модуля MQTT

Сообщение DX168B » Вт янв 09, 2018 12:02 pm

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
Будет время, поковыряюсь в модуле и поищу причину бага.
За это сообщение автора DX168B поблагодарил:
prmres (Вт янв 09, 2018 1:57 pm)
Рейтинг: 1.16%
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Предложения по доработке модуля MQTT

Сообщение nick7zmail » Вт янв 09, 2018 1:20 pm

То что отваливается МД - это не нормально. Он должен слать что то типа heartbit раз в 20 секунд что ли...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
prmres
Сообщения: 433
Зарегистрирован: Пт ноя 24, 2017 2:24 am
Откуда: оттуда
Благодарил (а): 113 раз
Поблагодарили: 123 раза

Re: Предложения по доработке модуля MQTT

Сообщение prmres » Вт янв 09, 2018 2:43 pm

DX168B писал(а): В файле /etc/init.d/majordomo у меня следующий заголовок:
полез в свою Ubuntu и не обнаружил этого файла, оказываетцо используется менеджер systemd
и соответственно описание сервиса тут: /etc/systemd/system/majordomo.service
добавил строку:

Код: Выделить всё

Requires=mosquitto.service
в моските включил log_type notice, перезапустил Ubuntu
результата ноль, в логе:

Client majordomo has exceeded timeout, disconnecting.


есть зависимость, нет зависимости - всё едино
клиент MD отваливается, лог потихонечку наполняется
Не только лишь все!
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Предложения по доработке модуля MQTT

Сообщение nick7zmail » Вт янв 09, 2018 3:35 pm

Цикл mqtt в самой системе какой используете?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
prmres
Сообщения: 433
Зарегистрирован: Пт ноя 24, 2017 2:24 am
Откуда: оттуда
Благодарил (а): 113 раз
Поблагодарили: 123 раза

Re: Предложения по доработке модуля MQTT

Сообщение prmres » Вт янв 09, 2018 5:40 pm

nick7zmail писал(а):Цикл mqtt в самой системе какой используете?
поставил дополнение из маркета, появилост MQTT в устройствах
указал в настройках имя клиента, адрес сервера, топики все (т.е. #), имя-пароль
сразу пошла информация
это какой цикл я использую?
:)
Не только лишь все!
Ответить