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

MQTTwarn

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

  1. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    В каталоге, из которого запускается mqttwarn, должен быть подкаталог services, где он и пытается найти telegram.py ...
     
    ivanpost67 нравится это.
  2. ivanpost67

    ivanpost67 Новичок

    Сообщения:
    23
    Симпатии:
    0
    Каталог - есть. Другие модули из него - работают (file, http, smtp, thingspeak) . Модуль telegram.py в нем имеется. Но требует еще чего может все же в настройках что то? У вас - работает со вновь созданным ботом?

    Код (Text):
    1. [config:telegram]
    2. timeout = 60
    3. parse_mode = 'Markdown'
    4. token = 'MY:ToKeN'
    5. targets = {
    6.    #        First Name or @username or #chat_id
    7.  
    8.    'j02' : [ '@myname' ]
    9.     }
    Этот parse_mode - зачем?
     
  3. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    Я не работаю с telegram, я просто предположил, что программа не может найти модуль ...
     
  4. nikolz

    nikolz Гуру

    Сообщения:
    4.509
    Симпатии:
    444
    посмотрите в telegram.py
     
    ivanpost67 нравится это.
  5. ivanpost67

    ivanpost67 Новичок

    Сообщения:
    23
    Симпатии:
    0
    Не силен в питоне.
     
  6. ivanpost67

    ivanpost67 Новичок

    Сообщения:
    23
    Симпатии:
    0
    Не смог разобраться. Если кому интересно, можно использовать чужой бот, работающий через smtp. Например etlgr. Время доставки сообщения в telegram буквально 2-3 секунды. Мессенджер, не нужно копаться в почтовом ящике. Имхо, это удобней почты и пуш.
     
  7. ivanpost67

    ivanpost67 Новичок

    Сообщения:
    23
    Симпатии:
    0
    Подскажите, как в HTTP GET подставить все содержимое конкретного топика, без дробления полей в ini файле. Например:
    Код (Text):
    1.  
    2.  'thingspeak' : [ "get", "http://api.thingspeak.com/update?key=ВАШ API KEY&[/ESP8266/DATA]", None, None ]
    3.   }
    4. [/ESP8266/DATA]
    5. targets = http:thingspeak
    В хелпе написано: If you want to use the mqtt message content directly in the query parameters use '{payload}'
    Но не понятно, это пример или параметр. Во что его включать внутрь url или в параметр и как связывать
     
    Последнее редактирование: 28 июл 2018
  8. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    кусок кода который вы процитировали надо рассматривать полностью, там еще кусок не показан
    на гитхабе в документации все подробно расписано
     
  9. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    поподробнее с примером можно?
     
  10. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    Можно - slacky1965/watermeter

    execute.py немного модифицирован ...
     
  11. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    изучим
     
  12. alfa2

    alfa2 Новичок

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

    Вами проделана большая работа
    естественно захотелось запилить под себя
    файлы положил, права раздал, внутри пути везде поправил, но сыпет ошибку

    2018-09-21 18:35:07,341 DEBUG [mqttwarn] Processor #0 is handling: `execute' for water
    2018-09-21 18:35:07,357 DEBUG [execute] *** MODULE=services/execute.py: service=execute, target=water
    2018-09-21 18:35:07,424 WARNING [execute] Cannot execute [u'/srv/watermeter/watermeter.pl', u'322.8', u'esp8266/ESP01C288B6/out1'] because [Errno 2] No such file or directory
    2018-09-21 18:35:07,476 WARNING [mqttwarn] Notification of execute for `esp8266/ESP01C288B6/out1' FAILED or TIMED OUT
    2018-09-21 18:35:07,481 DEBUG [mqttwarn] Job queue has 0 items to process

    чего-то нехватает?
     
  13. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    А вот в этом, мне кажется, и есть проблема (последние 5 слов) ...
     
  14. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    execute.ry поправил (добавил вашу волшебную строку)
    watermeter.pl положил в каталог /srv/watermeter/watermeter.pl дал права 755, внутри поправил под себя
    Раскрыть Спойлер
    Код (Text):
    1. #!/usr/bin/perl
    2.  
    3. use DBI;
    4. use strict;
    5. use Text::ParseWords;
    6.  
    7. my $litersperpulse = 100;
    8.  
    9. my $mqttpub = "/usr/bin/mosquitto_pub";
    10. my $mqttuser = "esp8266";
    11. my $mqttpassword = "123456";
    12.  
    13. # define database name and driver
    14. my $driver   = "SQLite";
    15. my $db_name = "/srv/watermeter/watermeter.db";
    16. my $dbd = "DBI:$driver:dbname=$db_name";
    17.  
    18. $topic =~ s/\/out1/;
    19.  


    в файле mqttwarn.ini поправил секции
    Раскрыть Спойлер
    Код (Text):
    1. launch     = log, execute
    2.  
    3. [config:execute]
    4. targets = {
    5.    'water' : [ '/srv/watermeter/watermeter.pl', '[TEXT]', '[TOPIC]' ]
    6.    }
    7.  
    8. [esp8266/ESP01C288B6/out1]
    9. targets = log:warn, execute:water
    10.  


    перегрузил mqttwarn
    ...
    покурив, навеяли странные мысли - какие модули надо поставить? для Perl (DBI установлен)

    Раскрыть Спойлер
    Код (Text):
    1. root@OpenWrt:/overlay/mosquitto# perl watermeter.pl
    2. Can't locate DynaLoader.pm in @INC (you may need to install the DynaLoader module) (@INC contains: /usr/lib/perl5/5.20 .) at /usr/lib/perl5/5.20/DBI.pm line 14.
    3. BEGIN failed--compilation aborted at /usr/lib/perl5/5.20/DBI.pm line 14.
    4. Compilation failed in require at watermeter.pl line 3.
    5. BEGIN failed--compilation aborted at watermeter.pl line 3.
    6. root@OpenWrt:/overlay/mosquitto# perl watermeter.pl
    7. Can't locate DynaLoader.pm in @INC (you may need to install the DynaLoader module) (@INC contains: /usr/lib/perl5/5.20 .) at /usr/lib/perl5/5.20/DBI.pm line 14.
    8. BEGIN failed--compilation aborted at /usr/lib/perl5/5.20/DBI.pm line 14.
    9. Compilation failed in require at watermeter.pl line 3.
    10. BEGIN failed--compilation aborted at watermeter.pl line 3.


    установил install libdbd-sqlite3, еще нужен модуль perl-DBD-SQLite, только где его взять под OpenWrt
     
    Последнее редактирование: 24 сен 2018
  15. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    @alfa2 попробуй вот так

    Код (Text):
    1. [/esp8266/ESP01C288B6/out1]
    2. targets = log:warn, execute:water
    А еще, создай примитивный перловый скрипт, который будет просто что-то записывать в какой-нибудь файл. Если он запустится, то оставит запись. Ну чисто проверить, что врет ...
     
  16. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    при написании скрипта вы использовали модуль DBD::SQLite удобно, но нет универсальности будет работать на полноценных системах Дебиан, Редхат, Убуунти, на урезанных OpenWrt (у меня v.1.5) надо умудриться доставить этот модуль, в репозитарии он отсутствует.

    (you may need to install the DynaLoader module)

    при выполнении кода watermeter.pl ошибка в строке 14 (my $driver = "SQLite";) из за этого и 3 строка (use DBI;) ошибка

    простой, смотря для кого, не силен в перле.

    Такой подойдет?
    Код (Text):
    1.    
    2. #! /usp/bin/perl
    3.  
    4. $targetfile = "/overlay/mosquitto/test_perl.txt";
    5. open (NEWINFO, ">>$targetfile");
    6. print NEWINFO "\n\n";
    7. print NEWINFO "Text", $input{'text'},"\n<br>";
    8. print NEWINFO "TOPIC", $input{'topic'},"\n</p>\n<p><hr></p>\n";
    9. close (NEWINFO);
    10.  
     
    Последнее редактирование: 24 сен 2018
  17. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
    У меня изначально все вертелось как раз на базе роутера Zyxel с opkg. Встало все, с небольшим шаманством, подробностей не помню, но встало ...

    Нет там ошибки, у меня все работает ...

    Я тоже не профи. Наверно пойдет ...
     
  18. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    подробности как раз нужны

    perl пересобирали?
    модуль libdbd-sqlite3-perl ставили от Дебиан или Убуунти ?
    какие модули вообще ставили ?

    я не говорю что у вас ошибка в коде, ошибка в выполнении кода, так как нет модуля DBD (не установлен)
     
  19. Slacky

    Slacky Читатель

    Сообщения:
    202
    Симпатии:
    10
  20. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    я Вас, понял

    смысла нет
    код (раскрыть)
    Код (Text):
    1. root@OpenWrt:# opkg install make gawk sed
    2. Unknown package 'make'.
    3. Unknown package 'gawk'.
    4. Unknown package 'sed'.
    5. Collected errors:
    6. * opkg_install_cmd: Cannot install package make.
    7. * opkg_install_cmd: Cannot install package gawk.
    8. * opkg_install_cmd: Cannot install package sed.
     

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