Скрыть объявление
Управляйте вашими ESP8266 и другими устройствами прямо с телефона из любой точки мира, где есть интернет!
Подробности и обсуждение IoT Manager в этой теме. Официальный сайт приложения и документация IoTmanager.ru
Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

MQTTwarn

Тема в разделе "Домашние IoT серверы", создана пользователем Victor, 3 июн 2015.

  1. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
  2. Casper

    Casper Новичок

    Сообщения:
    32
    Симпатии:
    1
    Помогите разобраться с установкой и настройкой. Из статьи при установки модулей 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. А как дальше настраивать сервисы я не очень понял. Подскажите какой самый простой способ проверить что все работает. И где прописывать из какого топика и куда он будет пересылать данные?
     
    Последнее редактирование: 4 июл 2015
    Michael Kokorev нравится это.
  3. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    Вот полный файл настроек mqttwarn из статьи
    mqttwarn.ini (раскрыть)
    Код (Text):
    1. [defaults]
    2. hostname     = 'localhost'
    3. port         = 1883
    4. username     = test
    5. password     = test
    6. clientid     = 'mqttwarn'
    7. lwt         = 'clients/mqttwarn'
    8. skipretained = False
    9. cleansession = True
    10.  
    11. # MQTTv31 = 3   (default)
    12. # MQTTv311 = 4
    13. protocol     = 3
    14.  
    15. ; logging
    16. logformat = '%(asctime)-15s %(levelname)-5s [%(module)s] %(message)s'
    17. logfile      = 'mqttwarn.log'
    18.  
    19. ; one of: CRITICAL, DEBUG, ERROR, INFO, WARN
    20. loglevel     = DEBUG
    21.  
    22. ; name the service providers you will be using.
    23. launch     = file, log, instapush, smtp, http, twitter
    24.  
    25. [config:file]
    26. append_newline = True
    27. targets = {
    28.     'data'      : ['/overlay/mosquitto/mqtt-data.log'],
    29.     'mqttwarn'  : ['/overlay/mosquitto/mqttwarn.err'],
    30.     }
    31.  
    32. [config:log]
    33. targets = {
    34.     'info'   : [ 'info' ],
    35.     'warn'   : [ 'warn' ],
    36.     'crit'   : [ 'crit' ],
    37.     'error'  : [ 'error' ]
    38.   }
    39.  
    40. ; special config for 'failover' events
    41. [failover]
    42. targets = log:error, file:mqttwarn
    43.  
    44. [config:http]
    45. timeout = 60
    46.  
    47. targets = {
    48.                 #method     #URL               # query params or None          # list auth
    49.  
    50.   'thingspeak' : [ "get", "http://api.thingspeak.com/update?key=XXXXXXXXXXXXXXXXXXX&field1={micros}&field2={counter}", None, None ]
    51.   }
    52.  
    53. [config:smtp]
    54. server    =  'smtp.mail.ru:25'
    55. sender    =  "MQTTwarn <esp8266@mail.ru>"
    56. username  =  esp8266@mail.ru
    57. password  =  XXXXXXXXX
    58. starttls  =  True
    59. targets = {
    60.     'notify'     : [ '4refr0nt@gmail.com' ],
    61.     'special'    : [ 'ben@gmail', 'suzie@example.net' ]
    62.     }
    63.  
    64. [config:instapush]
    65. appid = 'XXXXXXXXXXXXXXXXXXXXXXXX'
    66. appsecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    67. targets = {
    68.              # event   # tracker
    69.   'alerts' : [ 'alerts', {"object":"counter", "action":'{counter}'}],
    70.   'gpio'   : [ 'gpio'  , {"status":'{status}'}]
    71.   }
    72.  
    73.  
    74. [config:twitter]
    75. targets = {
    76.   'tweet' : [ 'XXXXXXXXXXXXXXXXXXXXXXXXX',                           # consumer_key
    77.               'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',  # consumer_secret
    78.               'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',  # access_token_key
    79.               'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'        # access_token_secret
    80.             ]
    81.    }
    82.  
    83. [/ESP8266/DATA]
    84. targets = log:info, file:data, smtp:notify, instapush:alerts, http:thingspeak, instapush:alerts
    85.  
    86. [/ESP8266/STATUS/GPIO/4]
    87. targets = instapush:gpio
    88. twitter:tweet
     
  4. Nikita

    Nikita Новичок

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

    Nikita Новичок

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

    Michael Kokorev Новичок

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

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    В таких случаях всегда помогают логи - смотрите логи и увидите в чем проблема.
    Достаточно одной запятой не в том месте в конфиге, чтобы это привело к ошибке при запуске.
     
  8. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    В том то и проблема, я забыл сказать, что ни лога mqtt-data.log, ни файла ошибок mqttwarn.err не формируется. На что ещё стоит обратить внимание?
     
  9. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    попробуйте сократить mqttwarn.ini до минимума, добейтесь чтобы запускалось и писало логи, а потом добавляйте свои настройки по чуть-чуть :)
     
  10. Michael Kokorev

    Michael Kokorev Новичок

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

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    Внутри локальной сети можно поднять Wireshark, тогда увидите все пакеты (придется правда поставить второй сетевой интерфейс на комп, или еще как-то сделать, чтобы весь трафик шел через сетевой интерфейс компа).
    Проще проверить можно отправив вручную GET запрос на thinkspeak (можно через telnet, например) и убедиться, что он строит график.
     
  12. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    Большое спасибо за ваши скорые и обстоятельные ответы. Проверил работу thinkspeak, все работает с командой
    HTML:
    1. http://api.thingspeak.com/update?key=J11B6MT8FV2Q8VV&field1=0&field2=0
    , естественно номер ключа я изменил ;) а в значения полей можно забивать любые числа. Даже нашел на просторах интернета соответствующее видео В этом вопросе я разобрался. Но проблема с mqttwarn осталась, как мне кажется он вообще не работает, не передает данные на thinkspeak, не пишет логи и сообщения об ошибках, хотя удачно загружен в систему и не менее удачно запущен. Одним словом как быть и что делать?
     
  13. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    сложно что-то советовать с таким минимумом информации
    попробуйте сюда выложить ini
    может что-то бросится в глаза
     
  14. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    Код (Text):
    1. [defaults]
    2. hostname     = 'localhost'
    3. port         = 1883
    4. username     = test
    5. password     = test
    6. clientid     = 'mqttwarn'
    7. lwt         = 'clients/mqttwarn'
    8. skipretained = False
    9. cleansession = True
    10.  
    11. # MQTTv31 = 3   (default)
    12. # MQTTv311 = 4
    13. protocol     = 3
    14.  
    15. ; logging
    16. logformat = '%(asctime)-15s %(levelname)-5s [%(module)s] %(message)s'
    17. logfile      = 'mqttwarn.log'
    18.  
    19. ; one of: CRITICAL, DEBUG, ERROR, INFO, WARN
    20. loglevel     = DEBUG
    21.  
    22. ; name the service providers you will be using.
    23. launch     = file, log, instapush, smtp, http
    24.  
    25. [config:file]
    26. append_newline = True
    27. targets = {
    28.     'data'      : ['/overlay/mosquitto/mqtt-data.log'],
    29.     'mqttwarn'  : ['/overlay/mosquitto/mqttwarn.err'],
    30.     }
    31.    
    32. [config:log]
    33. targets = {
    34.     'info'   : [ 'info' ],
    35.     'warn'   : [ 'warn' ],
    36.     'crit'   : [ 'crit' ],
    37.     'error'  : [ 'error' ]
    38.   }
    39.  
    40. ; special config for 'failover' events
    41. [failover]
    42. targets = log:error, file:mqttwarn
    43.  
    44. [config:http]
    45. timeout = 60
    46.  
    47. targets = {
    48.                 #method     #URL               # query params or None          # list auth
    49.  
    50.   'thingspeak' : [ "get", "http://api.thingspeak.com/update?key=J11B6MT8FV2QWDVV&field1={micros}&field2={counter}", None, None ]
    51.  
    52.   }
    53.  
    54. [config:instapush]
    55. appid = '55ce2e53a5c48a6934c9a5df'
    56. appsecret = '4539a3f86c271c45c249751293c62d07'
    57. targets = {
    58.              # event   # tracker
    59.   'alerts' : [ 'alerts', {"object":"counter", "action":'{counter}'}],
    60.   'gpio'   : [ 'gpio'  , {"status":'{status}'}]
    61.   }
    62.  
    63. [/ESP8266/DATA]
    64. targets = http:thingspeak, smtp:notify, instapush:alerts
    65.  
    66.  
    По вашей просьбе выкладываю код mqttwarn.ini. По ходу пьесы, у меня закрались сомнения насчёт файла mqttwarn тот что мы улдадываем в папку /etc/init.d можите ли вы показать его? Возможно там кроется ошибка у меня?
    Все идентификационные номера в моём коде исправлены на не правильные... :)
     
  15. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    И снова здравствуйте! За истекший период, мне так и не удалось получить от mqttwarn лог файл с какими либо данными приходящими по MQTT, хотя MQTT-SPY исправно сообщает о том что данные таки поступают. Такое впечатление, что mqttwarn вообще не работает хотя Люся сообщает о том что он таки загружен и запущен. Отсюда вопрос, какими ещё средствами можно убедиться в работе mqttwarn? Потому как даже на минимальный mqttwarn.ini он не реагирует вовсе?
     
  16. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    ps acx | grep mqttwarn
    с ключами могу ошибаться, но вы в мане посмотрите, я запамятовал уже

    UPDATE
    проверил у себя - нужно без ключей
    ps | grep mqttwarn
    получится так, если все ок
    Код (Text):
    1. root@OpenWrt:~# ps | grep mqttwarn
    2. 1329 root     16724 S    {mqttwarn.py} /usr/bin/python /overlay/mosquitto/mqttwarn.py
    3. 9162 root      1356 S    grep mqttwarn
    4. root@OpenWrt:~#

    Вот мой /etc/init.d/mqttwarn
    Код (Text):
    1. #!/bin/sh /etc/rc.common
    2. # Script to start mqttwarn as a daemon
    3.  
    4.  
    5. START=95
    6. STOP=10
    7.  
    8. DIR="/overlay/mosquitto/"
    9. BIN="/overlay/mosquitto/mqttwarn.py"
    10. PIDFILE=/var/run/mqttwarn.pid
    11.  
    12. start() {      
    13.     echo start
    14.     cd $DIR
    15.     start-stop-daemon -b -S -q -m -p $PIDFILE -x $BIN
    16.                                                
    17. }              
    18.                  
    19. stop() {        
    20.     echo stop
    21.     start-stop-daemon -K -q -p $PIDFILE
    22.     rm -f $PIDFILE
    23. }
     
    Последнее редактирование: 30 авг 2015
  17. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    Код (Text):
    1. root@OpenWrt:/# ps | grep mqttwarn
    2. 3200 root      1356 S    grep mqttwarn
    3. root@OpenWrt:/#
    4.  
    Вот что я получаю со своей стороны! Пропала строка? Где она?
     
  18. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    Код (Text):
    1. root@OpenWrt:/# /usr/bin/python /overlay/mosquitto/mqttwarn.py
    2. Traceback (most recent call last):
    3.   File "/overlay/mosquitto/mqttwarn.py", line 4, in <module>
    4.     import paho.mqtt.client as paho   # pip install paho-mqtt
    5. ImportError: No module named paho.mqtt.client
    6. root@OpenWrt:/#
    7.  
    При попытке запуска "в лоб" получаем такое вот сообщение.
     
  19. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    установите paho-mqtt
    pip install paho-mqtt
     
  20. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    Код (Text):
    1. root@OpenWrt:/# pip install paho-mqtt
    2. Downloading/unpacking paho-mqtt
    3.   Downloading paho-mqtt-1.1.tar.gz (41kB): 41kB downloaded
    4.   Running setup.py (path:/tmp/pip_build_root/paho-mqtt/setup.py) egg_info for package paho-mqtt
    5.  
    6. Installing collected packages: paho-mqtt
    7.   Running setup.py install for paho-mqtt
    8.     warning: build_py: byte-compiling is disabled, skipping.
    9.  
    10.     warning: install_lib: byte-compiling is disabled, skipping.
    11.  
    12.  
    13. Successfully installed paho-mqtt
    14. Cleaning up...
    15. root@OpenWrt:/# ps | grep mqttwarn
    16. 3571 root      1356 S    grep mqttwarn
    17. root@OpenWrt:/# /usr/bin/python /overlay/mosquitto/mqttwarn.py
    18. Cannot open configuration at mqttwarn.ini: [Errno 2] No such file or directory: 'mqttwarn.ini'
    19. [EMAIL]root@OpenWrt:/#[/EMAIL]
    Попытался установить в ручную. Ошибка изменилась. Но результат тот же. Файл 'mqttwarn.ini' находится в том же каталоге что и 'mqttwarn.py'.
     

Поделиться этой страницей