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

MQTTwarn

Michael Kokorev

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

Victor

Administrator
Команда форума
уберите в последней строке mqttwarn.ini [inline]smtp:notify, [/inline], т.к. сервис smtp у вас не прописан
 

Michael Kokorev

New member
И вот опять вопрос:

Код:
2015-09-02 19:12:33,669 DEBUG [mqttwarn] Message received on /ESP8266/DATA: {"micros":784060,"counter":78}
2015-09-02 19:12:33,690 DEBUG [mqttwarn] Section [/ESP8266/DATA] matches message on /ESP8266/DATA. Processing...
2015-09-02 19:12:33,722 DEBUG [mqttwarn] Message on /ESP8266/DATA going to log:info
2015-09-02 19:12:33,741 DEBUG [mqttwarn] New `log:info' job: /ESP8266/DATA
2015-09-02 19:12:33,762 DEBUG [mqttwarn] Processor is handling: `log' for info
2015-09-02 19:12:33,781 DEBUG [mqttwarn] Message on /ESP8266/DATA going to file:data
2015-09-02 19:12:33,791 DEBUG [mqttwarn] New `file:data' job: /ESP8266/DATA
2015-09-02 19:12:33,833 DEBUG [log] *** MODULE=services/log.py: service=log, target=info
2015-09-02 19:12:33,820 DEBUG [mqttwarn] Message on /ESP8266/DATA going to http:thingspeak
2015-09-02 19:12:33,862 INFO  [log] {"micros":784060,"counter":78}
2015-09-02 19:12:33,861 DEBUG [mqttwarn] New `http:thingspeak' job: /ESP8266/DATA
2015-09-02 19:12:33,892 DEBUG [mqttwarn] Processor is handling: `file' for data
2015-09-02 19:12:33,880 DEBUG [mqttwarn] Message on /ESP8266/DATA going to instapush:alerts
2015-09-02 19:12:33,932 DEBUG [mqttwarn] New `instapush:alerts' job: /ESP8266/DATA
2015-09-02 19:12:33,951 DEBUG [file] *** MODULE=services/file.py: service=file, target=data
2015-09-02 19:12:33,967 DEBUG [mqttwarn] Processor is handling: `http' for thingspeak
2015-09-02 19:12:33,999 DEBUG [http] *** MODULE=services/http.py: service=http, target=thingspeak
2015-09-02 19:12:34,423 DEBUG [mqttwarn] Processor is handling: `instapush' for alerts
2015-09-02 19:12:34,467 DEBUG [instapush] *** MODULE=services/instapush.py: service=instapush, target=alerts
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)>
2015-09-02 19:12:35,210 WARNING [mqttwarn] Notification of instapush for `/ESP8266/DATA' FAILED
Так выглядит фрагмент моего mqttwarn.log файла. Из которого следует, что instapush вообще не вызывается. Есть ли какие либо советы на этот счёт??
 

Stas43

New member
Есть ли у кого опыт запуска mqttwarn на Ubuntu server?
Конкретно интересует запуск как демона из /etc/init.d/mqttwarn
 

Stas43

New member
Запуск 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)

Всё.
 

Stas43

New member
Дополнения к исходной статье (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"
и ничего более!
 

FedorDostoevsky

New member
Запускаю 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, например, штатно не поставился из-за размера пакета).
 

Jon811

New member
Всем доброго дня!
У меня 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
 
Последнее редактирование:

alfa2

New member
Добрый, Гуру

Установлено 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

где я не прав?
 

dao89

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