• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

MQTTwarn

Casper

Member
Помогите разобраться с установкой и настройкой. Из статьи при установки модулей python доступны модули только Python, ca-certificates, python-ncurses, python-openssl. Я установил еще python-sqlite3 что бы работать с БД. С гитхаба скачал mqttwarn и залил файл mqttwarn.py и папку services в \ect\mosquitto, т.к. у меня он там установлен, а не как в статье overlay. Файл OpenWRT.init переименовал в mqttwarn без расширения и подправил пути
DIR="/overlay/mosquitto/" BIN="/overlay/mosquitto/mqttwarn.py" на DIR="/ect/mosquitto/" BIN="/ect/mosquitto/mqttwarn.py" скопировал в /etc/init.d и задал права 755. Далее создал в /ect/mosquitto файл mqttwarn.ini с содержанием из статьи, только опять пути overlay поменял на ect. Но файлы mqtt-data.log и mqttwarn.err не создались.. Потом запустил mqttwarn. А как дальше настраивать сервисы я не очень понял. Подскажите какой самый простой способ проверить что все работает. И где прописывать из какого топика и куда он будет пересылать данные?
 
Последнее редактирование:

Victor

Administrator
Команда форума
Вот полный файл настроек mqttwarn из статьи
Код:
[defaults]
hostname     = 'localhost'
port         = 1883
username     = test
password     = test
clientid     = 'mqttwarn'
lwt         = 'clients/mqttwarn'
skipretained = False
cleansession = True

# MQTTv31 = 3   (default)
# MQTTv311 = 4
protocol     = 3

; logging
logformat = '%(asctime)-15s %(levelname)-5s [%(module)s] %(message)s'
logfile      = 'mqttwarn.log'

; one of: CRITICAL, DEBUG, ERROR, INFO, WARN
loglevel     = DEBUG

; name the service providers you will be using.
launch     = file, log, instapush, smtp, http, twitter

[config:file]
append_newline = True
targets = {
    'data'      : ['/overlay/mosquitto/mqtt-data.log'],
    'mqttwarn'  : ['/overlay/mosquitto/mqttwarn.err'],
    }
  
[config:log]
targets = {
    'info'   : [ 'info' ],
    'warn'   : [ 'warn' ],
    'crit'   : [ 'crit' ],
    'error'  : [ 'error' ]
  }

; special config for 'failover' events
[failover]
targets = log:error, file:mqttwarn

[config:http]
timeout = 60

targets = {
                #method     #URL               # query params or None          # list auth

  'thingspeak' : [ "get", "http://api.thingspeak.com/update?key=XXXXXXXXXXXXXXXXXXX&field1={micros}&field2={counter}", None, None ]
  }

[config:smtp]
server    =  'smtp.mail.ru:25'
sender    =  "MQTTwarn <esp8266@mail.ru>"
username  =  esp8266@mail.ru
password  =  XXXXXXXXX
starttls  =  True
targets = {
    'notify'     : [ '4refr0nt@gmail.com' ],
    'special'    : [ 'ben@gmail', 'suzie@example.net' ]
    }

[config:instapush]
appid = 'XXXXXXXXXXXXXXXXXXXXXXXX'
appsecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
targets = {
             # event   # tracker
  'alerts' : [ 'alerts', {"object":"counter", "action":'{counter}'}],
  'gpio'   : [ 'gpio'  , {"status":'{status}'}]
  }


[config:twitter]
targets = {
  'tweet' : [ 'XXXXXXXXXXXXXXXXXXXXXXXXX',                           # consumer_key
              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',  # consumer_secret
              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',  # access_token_key
              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'        # access_token_secret
            ]
   }

[/ESP8266/DATA]
targets = log:info, file:data, smtp:notify, instapush:alerts, http:thingspeak, instapush:alerts

[/ESP8266/STATUS/GPIO/4]
targets = instapush:gpio
twitter:tweet
 

Nikita

New member
Статья отличная, большое спасибо узнал про множество полезных сервисов, в частности про mqttwarn. Хотел настроить отправку данных из mqtt сообщений от датчиков на thingspeak с помощью Openhab, возможно, лучшим решением будет сделать это используя mqttwarn. Но пока никак не могу понять как настраивать mqttwarn, хотелось бы разобрать следующий пример, возможно, кому-то тоже будет интересно:
От esp8266 периодически приходят mqtt сообщения о температуре и влажности в темы /home/out/esp_temp1 и /home/out/esp_hum1. Как мне нужно написать блок настроек для thingspeak.com в mqttwarn, чтобы отправлять получаемые значения в качестве field1 и field2?
Правильно ли я понимаю, что отправлять эти сообщения можно только по расписанию или можно настроить триггер, чтобы информация на thingspeak или другой ресурс отправлялась при получении mqtt сообщения в определенной теме?
 

Nikita

New member
Добрый день! Продолжаю поиски решения, отправлять по одному сообщению за раз я научился, т.е. получено сообщение от какого-либо датчика, я его тут же отправляю на thingspeak, но когда таких сообщений приходит несколько подряд, то получается следующая картина: первое как правило доставляется на thingspeak, второе иногда доставляется, третье почти не доставляется, четвертое вообще не доставляется. Все сообщения пишут в один и тот же канал, возможно, разнесение отправки сообщений из ESP8266 по времени или отправлять в разные каналы на thingspeak будет обходным решением, но хочется все же решить проблему, отправлять сообщения разом по триггеру, например, для четырех сообщений: при получении четвертого mqtt-сообщения отправлять все данные разом на thingspeak из всех четырех сообщений в одном http запросе. Подозреваю, что это можно сделать в mqttwarn. Возможно, кто-то уже решал подобную задачу?
 

Michael Kokorev

New member
Доброго времени суток! Очень доволен статьёй, долго искал нечто подобное, хотя, на пошаговую инструкцию она явно не тянет, но тем не менее создает представление о принципах работы с устройствами на esp8266 через маршрутизатор Gl-iNet. Следуя вашим советам, в статье, у меня всё прекрасно получалось, но до определённого момента, а именно до запуска mqttwarn на маршрутизаторе. Загрузка mqttwarn прошла без проблем, а вот его запуск, сопровождался 10 - ти секундной паузой, а затем изменением значка, что этот модуль загружен, на указание, о том, что он не загружен. И так постоянно. Соответственно ThingSpeak отображает у себя пустые графики. Срочно нуждаюсь в помощи, мой проект простаивает...
 

Victor

Administrator
Команда форума
запуск, сопровождался 10 - ти секундной паузой, а затем изменением значка, что этот модуль загружен, на указание, о том, что он не загружен.
В таких случаях всегда помогают логи - смотрите логи и увидите в чем проблема.
Достаточно одной запятой не в том месте в конфиге, чтобы это привело к ошибке при запуске.
 

Michael Kokorev

New member
В таких случаях всегда помогают логи - смотрите логи и увидите в чем проблема.
Достаточно одной запятой не в том месте в конфиге, чтобы это привело к ошибке при запуске.
В том то и проблема, я забыл сказать, что ни лога mqtt-data.log, ни файла ошибок mqttwarn.err не формируется. На что ещё стоит обратить внимание?
 

Michael Kokorev

New member
Доброго времени суток! Переустановил mqttwarn и теперь, как бы запускается. mqtt-spy сообщает, что сообщения с модуля esp8266 со скетчем mqtt.ino на борту исправно приходят, а вот ThingSpeak их в упор не видит. Как вообще можно проверить, что данные покидают маршрутизатор и доходят до ThingSpeak?
 

Victor

Administrator
Команда форума
Как вообще можно проверить, что данные покидают маршрутизатор и доходят до ThingSpeak?
Внутри локальной сети можно поднять Wireshark, тогда увидите все пакеты (придется правда поставить второй сетевой интерфейс на комп, или еще как-то сделать, чтобы весь трафик шел через сетевой интерфейс компа).
Проще проверить можно отправив вручную GET запрос на thinkspeak (можно через telnet, например)