Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

MQTTwarn

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

  1. Victor

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

    Сообщения:
    2.224
    Симпатии:
    389
    важным моментом является то, что mqttwarn нужно запускать из каталога /overlay/mosquitto/
    в /etc/init.d/mqttwarn за это отвечает строка 14 cd $DIR
     
  2. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    Начал работать и формируется mqttwarn.log, который кроме всего прочего фиксирует передаваемые mqtt сообщения, но указанный в 'mqttwarn.ini' файл для формирования лога так и не создается...
     
  3. Victor

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

    Сообщения:
    2.224
    Симпатии:
    389
    уберите в последней строке mqttwarn.ini smtp:notify, , т.к. сервис smtp у вас не прописан
     
  4. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    Всё заработало, спасибо за помощь!
     
  5. Victor

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

    Сообщения:
    2.224
    Симпатии:
    389
    удачи!
     
  6. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    И вот опять вопрос:

    Код (Text):
    1.  
    2. 2015-09-02 19:12:33,669 DEBUG [mqttwarn] Message received on /ESP8266/DATA: {"micros":784060,"counter":78}
    3. 2015-09-02 19:12:33,690 DEBUG [mqttwarn] Section [/ESP8266/DATA] matches message on /ESP8266/DATA. Processing...
    4. 2015-09-02 19:12:33,722 DEBUG [mqttwarn] Message on /ESP8266/DATA going to log:info
    5. 2015-09-02 19:12:33,741 DEBUG [mqttwarn] New `log:info' job: /ESP8266/DATA
    6. 2015-09-02 19:12:33,762 DEBUG [mqttwarn] Processor is handling: `log' for info
    7. 2015-09-02 19:12:33,781 DEBUG [mqttwarn] Message on /ESP8266/DATA going to file:data
    8. 2015-09-02 19:12:33,791 DEBUG [mqttwarn] New `file:data' job: /ESP8266/DATA
    9. 2015-09-02 19:12:33,833 DEBUG [log] *** MODULE=services/log.py: service=log, target=info
    10. 2015-09-02 19:12:33,820 DEBUG [mqttwarn] Message on /ESP8266/DATA going to http:thingspeak
    11. 2015-09-02 19:12:33,862 INFO  [log] {"micros":784060,"counter":78}
    12. 2015-09-02 19:12:33,861 DEBUG [mqttwarn] New `http:thingspeak' job: /ESP8266/DATA
    13. 2015-09-02 19:12:33,892 DEBUG [mqttwarn] Processor is handling: `file' for data
    14. 2015-09-02 19:12:33,880 DEBUG [mqttwarn] Message on /ESP8266/DATA going to instapush:alerts
    15. 2015-09-02 19:12:33,932 DEBUG [mqttwarn] New `instapush:alerts' job: /ESP8266/DATA
    16. 2015-09-02 19:12:33,951 DEBUG [file] *** MODULE=services/file.py: service=file, target=data
    17. 2015-09-02 19:12:33,967 DEBUG [mqttwarn] Processor is handling: `http' for thingspeak
    18. 2015-09-02 19:12:33,999 DEBUG [http] *** MODULE=services/http.py: service=http, target=thingspeak
    19. 2015-09-02 19:12:34,423 DEBUG [mqttwarn] Processor is handling: `instapush' for alerts
    20. 2015-09-02 19:12:34,467 DEBUG [instapush] *** MODULE=services/instapush.py: service=instapush, target=alerts
    21. 2015-09-02 19:12:35,189 ERROR [mqttwarn] Cannot invoke service for `instapush': <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] unknown error (_ssl.c:581)>
    22. 2015-09-02 19:12:35,210 WARNING [mqttwarn] Notification of instapush for `/ESP8266/DATA' FAILED
    23.  
    Так выглядит фрагмент моего mqttwarn.log файла. Из которого следует, что instapush вообще не вызывается. Есть ли какие либо советы на этот счёт??
     
  7. Stas43

    Stas43 Новичок

    Сообщения:
    5
    Симпатии:
    2
    Есть ли у кого опыт запуска mqttwarn на Ubuntu server?
    Конкретно интересует запуск как демона из /etc/init.d/mqttwarn
     
  8. Victor

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

    Сообщения:
    2.224
    Симпатии:
    389
    убедитесь, что установлены корневые сертификаты
     
  9. Victor

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

    Сообщения:
    2.224
    Симпатии:
    389
    берите любой скрипт из init.d (выбирайте, который попроще) и подправьте под mqttwarn
     
  10. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    Извиняюсь за идиотский вопрос, каким образом это сделать?
     
  11. Victor

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

    Сообщения:
    2.224
    Симпатии:
    389
    Посмотрите установлен ли пакет ca-certificates и если нет, то установите его.
     
  12. Stas43

    Stas43 Новичок

    Сообщения:
    5
    Симпатии:
    2
    Запуск mqttwarn на Ubuntu server 14.04
    Данное руководство создано на основе информации с этого сайта
    http://esp8266.ru/esp8266-openwrt-mosquitto-mqttwarn-thingspeak-email-android-ios-twitter-cloudmqtt/
    Я только отладил start-stop его как сервиса. Прилагаемые примеры в исходниках у меня не работали:(

    Раскрыть Спойлер


    1. Скачиваем архив mqttwarn:
    wget https://github.com/jpmens/mqttwarn/archive/master.zip
    2. Распаковываем в любое место.
    3. Устанавливаем недостающие модули:
    sudo apt-get install python
    sudo apt-get install python-distutils
    sudo apt-get install python-email
    sudo apt-get install python-logging
    sudo apt-get install python-ncurses
    sudo apt-get install python-openssl
    sudo apt-get install python-pip
    sudo pip install paho-mqtt
    sudo apt-get install ca-certificates

    4. Создаем папку /etc/mqttwarn
    копируем в нее из ранее скачанного архива:
    папку /services
    mqttwarn.py

    5. Создаем файл /etc/init.d/mqttwarn следующего содержания

    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides: mqttwarn
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: mqttwarn
    # Description: mqttwarn
    ### END INIT INFO

    set -e
    NAME=mqttwarn
    DAEMON=mqttwarn.py
    PIDFILE=/var/run/mqttwarn.pid

    . /lib/lsb/init-functions

    perform_start()
    {
    log_daemon_msg «Starting $NAME»

    if start-stop-daemon --start --quiet --chroot / --chdir /etc/mqttwarn --oknodo --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} ; then
    log_end_msg 0
    return 0
    else
    log_end_msg 1
    return 1
    fi
    }

    perform_stop()
    {
    log_daemon_msg «Stopping $NAME»

    if start-stop-daemon --stop --quiet --oknodo --pidfile ${PIDFILE}; then
    log_end_msg 0
    rm -f ${PIDFILE}
    return 0
    else
    log_end_msg 1
    return 1
    fi
    }

    case "$1" in
    start)
    perform_start
    ;;
    stop)
    perform_stop
    ;;
    *)
    echo "Usage: /etc/init.d/$NAME {start|stop}"
    exit 3
    ;;
    esac

    :

    и даем ему права 755 root root

    6. Выполняем в терминале команду:
    sudo update-rc.d myscript start 99 2 3 4 5 . stop 01 0 1 6 .

    7. Создаем файл /etc/mqttwarn/mqttwarn.ini - пример есть на этом сайте, повторять не буду.
    8. Пробуем сервис запустить и остановить.
    sudo /etc/init.d/mqttwarn start
    - должен появиться лог файл (/etc/mqttwarn/mqttwarn.log), если его не было и pid файл (/var/run/mqttwarn.pid). В pid файле указан номер процесса, под которым работает демон (python). По этому номеру он виден и по top

    sudo /etc/init.d/mqttwarn stop
    - процесс пропадет, pid файл удален.

    Перезагружаемся. Mqttwarn должен стартануть автоматом (если не опечатались в п.6)

    Всё.


     
    sp01 и Victor нравится это.
  13. Michael Kokorev

    Michael Kokorev Новичок

    Сообщения:
    14
    Симпатии:
    1
    Спасибо большое, всё заработало...
     
    Victor нравится это.
  14. Stas43

    Stas43 Новичок

    Сообщения:
    5
    Симпатии:
    2
    Дополнения к исходной статье (http://esp8266.ru/esp8266-openwrt-mosquitto-mqttwarn-thingspeak-email-android-ios-twitter-cloudmqtt/)

    В примере, для отправки уведомления по e-mail, указан следующий конфиг (вырезка):

    [config:smtp]
    server='smtp.mail.ru:25'
    sender="MQTTwarn "
    username=esp8266@mail.ru
    password=xxxxxxxxxxxxxxxx
    starttls=True
    targets={
    'notify' :['4refr0nt@gmail.com']
    }

    У меня такая конфигурация давала отказ smtp.mail.ru сервера:
    2015-09-06 22:04:15,648 WARNING [smtp] Error sending notification to SMTP recipient notify [['admin@*******.ru']]: {'admin@*******.ru': (501, 'sender address must match authenticated user')}

    Уведомления стали отсылаться только после исправления строки senders . Конкретно для примера выше:
    sender="esp8266@mail.ru"
    и ничего более!
     
  15. FedorDostoevsky

    FedorDostoevsky Новичок

    Сообщения:
    1
    Симпатии:
    1
    Запускаю mqttwarn на TP-Link MR3020 с разделом swap на USB Оперативной памяти в роутере действительно надо 64 мегабайта. В дополнение к материалу статьи:

    Экспорт в таблицы Google docs spreadsheets заработал через gss2.py, который недавно появлся в git mqttwar
    Видимо, красавцы из Google переделали авторизацию, и теперь чтобы получить конфиг, нужно пройти квест.

    Настройки выглядят так:
    [config:gss2]
    timeout = 20 ; с таймаутом не разбрался.
    client_secrets_filename = client_secrets.json
    oauth2_code = 4/Ygygsklsjfiefj89ue89fwhcwhcniuw-c
    oauth2_storage_filename = oauth2.store
    targets = {
    # spreadsheet_url # worksheet_name
    'test': [ 'https://docs.google.com/spreadsheets/d/HrKHrhrjrjiiieuu2984shvskvhsuhvv/edit#gid=0', 'Sheet1']
    # This target would be addressed as 'gss2:test'.
    }

    До формата отправки тоже не сразу допёр, но потом сделал по образцу gss.py
    mosquitto_pub -t clients/spreadsheet -m '{"counter":"125"}' -u test -P test

    Для gss,py не удалось поставить пакеты python из-за ошибки в pip install gdata-python-client. Может быть, не хватило памяти
    (gcc, например, штатно не поставился из-за размера пакета).
     
    Victor нравится это.
  16. Jon811

    Jon811 Новичок

    Сообщения:
    2
    Симпатии:
    0
    Всем доброго дня!
    У меня DIR-320NRU с USB-картой, всё сконфигурировано.
    Установил mosquitto - все завелось, mqttspy подключается.
    Попробовал отправить данные через mqttspy на instapush - ничего не происходит, в системном логе:
    Wed Jul 13 10:55:49 2016 local5.debug mosquitto[1126]: Received PUBLISH from project_161606211 (d0, q0, r0, m0, '/ESP8266/DATA', ... (13 bytes))
    Wed Jul 13 10:55:49 2016 local5.debug mosquitto[1126]: Sending PUBLISH to project_161606211 (d0, q0, r0, m0, '/ESP8266/DATA', ... (13 bytes))
    При попытке перезапуска mqttwarn в system log появляется запись: Wed Jul 13 11:37:05 2016 daemon.err uhttpd[1115]: start-stop-daemon: warning: killing process 3600: No such process
    Log файл не формируется (в паке /overlay/mosquitto новых файлов нет).
    Кто подскажет куда копать можно?
    mqttwarn.ini:
    Раскрыть Спойлер

    [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:instapush]
    appid = '1111111111111111111'
    appsecret = '222222222222222222222'
    targets = {
    # event # tracker
    'alerts' : [ 'alerts', {"object":"counter", "action":'{counter}'}],
    'gpio' : [ 'gpio' , {"status":'{status}'}]
    }
    [/ESP8266/DATA]
    targets = instapush:alerts
     
    Последнее редактирование: 13 июл 2016
  17. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    Добрый, Гуру

    Установлено OpenWrt Chaos Calmer 15.05.1 / LuCI 15.05-149-g0d8bbd2 Release (git-15.363.78009-956be55)
    монтируется USB с тремя разделами: /Overlay, /USB, /Swap
    Установлены все рекомендуемые в статье пакеты
    мosquitto работает
    mqtt-spy подключается, топики # видно, информация поступает

    а вот mqttwarn ни как не хочет работать

    Мои файлы
    /overlay/mosquitto/

    mqttwarn.ini
    Раскрыть Спойлер

    [defaults]
    hostname = 'localhost'
    port = '1883'
    username = 'esp8266'
    password = 'хххххххх'
    clientid = 'mqttwarn'
    lwt = 'clients/mqttwarn'
    skipretained = False
    cleansession = True
    protocol = 3
    logformat = '%(asctime)-15s %(levelname)-5s [%(module)s] %(message)s'
    logfile = 'mqttwarn.log'
    loglevel = DEBUG
    launch = file, log, http
    [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' ]
    }
    [failover]
    targets = log:error, file:mqttwarn


    mqttwarn.ry
    Раскрыть Спойлер
    из архива. без изменений


    /etc/init.d/mqttwar chmod 100755
    Раскрыть Спойлер

    #!/bin/sh /etc/rc.common
    # Script to start mqttwarn as a daemon for OpenWRT

    START=95
    STOP=10

    DIR='/overlay/mosquitto/'
    BIN='/overlay/mosquitto/mqttwarn.py'
    PIDFILE=/var/run/mqttwarn.pid
    start() {
    echo start
    cd $DIR
    start-stop-daemon -b -S -q -m -p $PIDFILE -x $BIN
    }

    stop() {
    echo stop
    start-stop-daemon -K -q -p $PIDFILE
    rm -f $PIDFILE
    }


    Системный журнал:
    Раскрыть Спойлер

    Sun Nov 13 20:22:25 2016 daemon.err uhttpd[1222]: 1479057745: mosquitto version 1.4.7 (build date 2016-01-31 13:11:04+0100) starting
    Sun Nov 13 20:22:25 2016 daemon.err uhttpd[1222]: 1479057745: Using default config.
    Sun Nov 13 20:22:25 2016 daemon.err uhttpd[1222]: 1479057745: Opening ipv6 listen socket on port 1883.


    файлы логов: mqttwarn.log mqtt-data.log mqttwarn.err не создаются

    проверяю работу mqttwarn

    root@OpenWrt:~# ps | grep mqttwarn
    2373 root 1356 S grep mqttwarn
    root@OpenWrt:~#

    paho-mqtt установлен

    Если запустить:

    root@OpenWrt:~#cd /overlay/mosquitto/
    root@OpenWrt:~#/usr/bin/python /overlay/mosquitto/mqttwarn.py

    Системный журнал:
    Раскрыть Спойлер

    Sun Nov 13 21:45:59 2016 user.emerg syslog: 1479062759: New connection from 127.0.0.1 on port 1883.
    Sun Nov 13 21:45:59 2016 user.emerg syslog: 1479062759: New client connected from 127.0.0.1 as mqttwarn (c1, k60, u'esp8266').
    Sun Nov 13 21:46:35 2016 daemon.info hostapd: wlan0: STA 5c:cf:7f:c2:f8:a6 WPA: group key handshake completed (RSN)


    создается топик clients/mqttwarn (смотрю mqtt-spy)

    создается файл лога mqttwarn.log

    Раскрыть Спойлер

    2016-11-13 21:49:35,847 INFO [mqttwarn] Starting mqttwarn
    2016-11-13 21:49:35,851 INFO [mqttwarn] Log level is DEBUG
    2016-11-13 21:49:35,883 DEBUG [mqttwarn] Service file loaded
    2016-11-13 21:49:35,902 DEBUG [mqttwarn] Service log loaded
    2016-11-13 21:49:38,669 DEBUG [mqttwarn] Service http loaded


    где я не прав?
     
  18. dao89

    dao89 Читатель

    Сообщения:
    85
    Симпатии:
    5
    Файлы '/overlay/mosquitto/mqtt-data.log' и '/overlay/mosquitto/mqttwarn.err' сами собой и не создадутся, пока вы не укажите из какого топика нужно класть туда данные.
    Попробуйте в ini файл добавить
    Код (Text):
    1. [/myTopic]
    2. targets = file:data
    Затем перезапустите mqttwarn и через mqtt-spy пошлите сообщение в топик /myTopic
    Файл /overlay/mosquitto/mqtt-data.log должен появиться, каждая строчка в нём - сообщения, которые отправите в /myTopic
    Я бы рекомендовал посмотреть readme, который лежит рядом с mqttwarn.py: там в начале как раз приводится пример с file.
     
    Последнее редактирование: 14 ноя 2016
  19. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    наверно я много написал

    как заставить стартовать mqttwarn демоном, с командной строки меня не устраивает
     
  20. Victor

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

    Сообщения:
    2.224
    Симпатии:
    389
    Скрипт загрузки есть, только его нужно установить вручную
     

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