• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

MQTTwarn

AlexeyM81

New member
Подскажите пожалуйста как решить задачу:
Есть несколько территориально удаленных устройств arduino, все они работают через один брокер Mosquitto, как сделать так, что бы владельцы устройств получали данные только от своих Arduino? Каждому пользователю нужно получать данные только от своего устройства, а в случае если оно отправляет сообщение в топик "авария", тогда пользователь должен получить уведомление через Mqttwarn, например на почту.

На данный момент я понимаю что mqttwarn однопользовательский плагин.
Или я ошибаюсь и как то можно с его помощью реализовать мою задачу?
 

Victor

Administrator
Команда форума
Каждому пользователю нужно получать данные только от своего устройства
1. Каждое устройство шлет данные только в свой топик
2. На каждое устройство (топик) прописываете те действия, которые нужно осуществить или каждый пользователь подписывается только на тот топик, который ему нужен
 

AlexeyM81

New member
1. Каждое устройство шлет данные только в свой топик
2. На каждое устройство (топик) прописываете те действия, которые нужно осуществить или каждый пользователь подписывается только на тот топик, который ему нужен
По п.2 это понятно, называю топики устройств по разному и пользователь получает только по своей подписке.

Для меня не понятна работа mqttwarn, множество подписок он обработает, а сможет ли на выходе разделить оповещение. Т.е. из 10 моих устройств и стольких же пользователей mqttwarn сможет отправить например электронное письмо только лишь на один почтовый адрес. Или я ошибаюсь и mqttwarn может по топику выбрать конкретный адрес и отправить уведомление кому нужно а не всем пользователям?
 

Victor

Administrator
Команда форума
может по топику выбрать конкретный адрес и отправить уведомление кому нужно а не всем пользователям
для mqttwarn нет понятия пользователь, а есть понятие "действие", которое осуществляется по топику. Т.е. если у вас будет столько действий и топиков, сколько пользователей, то сообщения (или что-то другое) будут приходить индивидуально, в соответствии с тем топиком, который привязан к данному действию
 

AlexeyM81

New member
для mqttwarn нет понятия пользователь, а есть понятие "действие", которое осуществляется по топику. Т.е. если у вас будет столько действий и топиков, сколько пользователей, то сообщения (или что-то другое) будут приходить индивидуально, в соответствии с тем топиком, который привязан к данному действию
Большое спасибо за ваш ответ. По крайней мере можно пойти таким, заведомо не обреченным путем.

Теперь возник второй вопрос, как устfновить MQTTWarn на Ubuntu Server 16?
 

eratnik

New member
Может кто подскажет, не идут логи, не могу установить paho-mqtt выдает такие сообщения:
Код:
root@OpenWrt:/tmp/src/paho-mqtt-1.1# python setup.py install
running install
running build
running build_py
warning: build_py: byte-compiling is disabled, skipping.

running install_lib
warning: install_lib: byte-compiling is disabled, skipping.

running install_egg_info
Removing /usr/lib/python2.7/site-packages/paho_mqtt-1.1-py2.7.egg-info
Writing /usr/lib/python2.7/site-packages/paho_mqtt-1.1-py2.7.egg-info
На короткое время логи пошли, но вскоре безвозвратно пропали. Установка командой pip install paho-mqtt завершается Killed
 

Slacky

Member
Добрый день.

В питоне не очень, в доках не нашел (может плохо искал). Вопрос - можно ли в файле mqttwarn.ini сделать include другого файла, чтобы программа считала это просто продолжением конфига? Просто хочу изменяемую часть вынести в отдельный файл.

Спасибо.
 

Slacky

Member
А вот еще вопрос. Уже час подставляю параметры, не выходит.

Как передать в execute в вызываемую программу аргументы? Мне нужно, чтобы в аргументах оказался текст сообщения.

В документации говориться что-то про [TEXT], но я не очень понял как. А методом тыка не выходит.

Вот при такой настройке файл test.pl запускается. Но как ему передать текст сообщения в аргументах?

Код:
[config:execute]
targets = {
             # argv0 .....
   'PerlScript' : [ '/opt/etc/mosquitto/test.pl',  ]
   }

[/601941EE5E2/In]
targets = log:info, execute:PerlScript
 

Slacky

Member
В общем разобрался я. Пришлось посмотреть, что находится в execute.py и понять, что текст сообщения все-таки туда передается.

Короче, конфиг должен выглядеть так -

Код:
[config:execute]
targets = {
             # argv0 .....
   'PerlScript' : [ '/opt/etc/mosquitto/test.pl', '[TEXT]' ]
   }
 

Anydy

New member
Теперь возник второй вопрос, как устfновить MQTTWarn на Ubuntu Server 16?
Тоже бьюсь с установкой на Убунту, ничего не получается....может есть где внятная инструкция для новичков?
Mosquitto работает, а вот mqttwarn не могу запустить..
 

Плаха

New member
Добрый день!
Есть следующий код:

Код:
[config:mysql]
host  =  'localhost'
port  =  3306
user  =  'jane'
pass  =  'secret'
dbname  =  'test'
targets = {
              # tablename  #fallbackcolumn
'm2'   : [ 'names',    'string1', 'string2'  ]
  }
[#]
targets = mysql:m2
Подскажите, можно ли сделать так, что бы скрипт автоматически подставлял наименование топика на который было отправлено сообщение, перед string1?
 

Плаха

New member
Тоже бьюсь с установкой на Убунту, ничего не получается....может есть где внятная инструкция для новичков?
Mosquitto работает, а вот mqttwarn не могу запустить..
А в чем конкретно проблема?
Вот простая инструкция: https://esp8266.ru/forum/threads/mqttwarn.385/page-2#post-10351
 

replay

New member
Добрый день, подскажите на счет отправки в sqlite.
есть брокер, работает, на него есп отправляют данные, складывают в разные топики.
wqttwarn запускается, файлы логов появляются, пытаюсь настроить отправку в sqlite.
для этого создал базу, в ней таблицу, в таблице несколько столбиков.
пример с гитхаба

[config:sqlite]
targets = {
#path #tablename
'demotable' : [ '/tmp/m.db', 'mqttwarn' ]
}

я не могу понять, как данные из разных топиков раскидать по разным столбцам таблицы, можете подсказать?
 

Slacky

Member
@replay, мне не очень понравилось из mqqtwarn сразу писать в sqlite. Потому я использую execute, вызывая скрипт на perl, который уже работает с базой ...
 

Gnork

New member
MR3020 + Chaos Calmer 15.05.1 на флешке. Mosquitto работает. Хотел поставить MQTTwarn.
Попытка поставить питон заканчивается с "killed". Что это такое и как с этим бороться?
 

eratnik

New member
внимательней, мою ссылку про API на GitHub

секция thingspeak

[config:thingspeak]
targets = {
#API WRITE KEY field optional builddata=true/false
'field1' : [ 'XXYYZZXXYYZZXXYY', 'field1' , 'true' ],
'field2' : [ 'XXYYZZXXYYZZXXYY', 'field2' ],
'composite': [ 'XXYYZZXXYYZZXXYY', [ 'temp', 'hum' ] ]
}
подскажите пожалуйста на примере что за что здесь отвечает. Бьюсь уже несколько дней, но понять не смог. Вот например у меня есть топики sensor/temp и sensor/hum как мне на них подписаться и передать данные через mqttwarn в thingspeak? В примере указанном API два раза field1 и field2, а потом temp и hum. Умом понимаю, что это три разных варианта использования и мне можно взять например третий composite, но тогда как mqttwarn подпишется на указанные топики?
PS если можно подробно описать весь пример - в интернете ничего более подробного не нашел.
 

ivanpost67

New member
Здравствуйте! С телеграм-ботом никто mqttwarn не смог подружить? Требует какой то модуль...

ERROR [mqttwarn] Can't load telegram service (services/telegram.py): No module named requests

А какой - не понятно.
 
Сверху Снизу