Здравствуйте! Появилась такого рода задача нужна два раза в месяц передавать на Email заказчику данные с счетчика электроэнергии .В начале месяца и в конце.Я настроил модуль оповещения но убей не могу понять как написать скрипт чтобы показания отправлялись. Счетчик привязан к wb6 через rs485.Подскажите пожалуйста как написать скрипт очень надо. Не могу сдать заказчику.
Добрый день. Посмотрите Примеры правил — Wiren Board и пример работы с cron Необходим разработчик для реализации проекта на Wiren Board - #21 от пользователя BrainRoot
cron-правила — это отдельный тип правил, которые задаются так:
defineRule(“crontest_hourly”, {
when: cron(“@hourly”),
then: function () {
log(“@hourly rule fired”);
}
});
Вместо @hourly
здесь можно задать любое выражение, допустимое в стандартном crontab, например, 00 00 20 * *
(секунды минуты часы, выполнять правило каждый день в 20:00). Помимо стандартных выражений допускается использование ряда расширений, см. описание формата выражений используемой cron-библиотеки.
А что вписать в function что бы отправлялось email? И что выбрать в настройках сообщения чтобы при изменении параметра отправлялось ил и cron будет это игнорировать?
Чтобы отправить сообщение, из правила нужно вызвать функцию
Notify.sendEmail("to", "subject", "text"); //отправляет почту указанному адресату (to), с указанной темой (subject) и содержимым (text); почтовый адрес, тема и содержимое указываются в кавычках
То есть получится примерно так:
defineRule('crontest_hourly', {
when: cron('@hourly'),
then: function () {
log('@hourly rule fired');
Notify.sendEmail('12345@mail.ru', 'Subject of the letter', 'Text inside the letter');
}
});
При этом нужно сделать настройки для отправки почты, описанные в документации:
https://wirenboard.com/wiki/Notification_module#Настройка_модуля_уведомлений
Не ругайте сильно я так понял что правилом выше я отправляю email по расписания а как в сообщении отправить показателя со счетчика?
Вместо строки 'Text inside the letter'
просто подставьте значения (переменные), которые хотите передать.
‘mercury200.02_39170457/Power consumption tariff 1’ Здравствуйте в таком формате подставлять или как то по другому.Цифра в сообщение не подставляется.Отправляю командой через терминал
Не понял, честно говоря.
"Вместо строки 'Text inside the letter'
просто подставьте значения (переменные), которые хотите передать."Видимо и я вас не правильно понял. Подставляю значенин переменной которую хочу увидеть в сообщении
Как выглядит строка после подстановки?
Выведите ее в лог чтобы убедиться.
Отправляю из терминала сообщение.echo ‘T1 mercury200.02_39170457/Power consumption tariff 1’ | ssmtp -v .................@yandex.ru приходит на почту следующие T1 mercury200.02_39170457/Power consumption tariff 1 а хотелось бы увидеть здесь показатели переменной /devices/mercury200.02_39170457/controls/Power consumption tariff 1
Так, а где тут переменная? Точнее - вы отправляете строкой название контрола, никак его не разрешая.
Если echo
- то предполагаю bash, то есть должно выглядеть так.
Переменной POWERVAL нужно предварительно задать значение, прочитав его из топика, например.
echo ‘Power consumption ’$POWERVAL | ssmtp -v XXX@yandex.ru
А как это сделать помогите я не программист я только учусь. Не совсем понял вы этотуде сделали в строке ниже или это как то нужно по-другому сделать
Если основываться на на вот этом
то как и писал следует предварительно получить, так, например с выводом:
POWERVAL=`mosquitto_sub -t "/devices/T1 mercury200.02_39170457/Power consumption tariff 1" -C 1`
echo $POWERVAL
То есть в результате:
POWERVAL=`mosquitto_sub -t "/devices/T1 mercury200.02_39170457/Power consumption tariff 1" -C 1`
echo ‘Power consumption ’$POWERVAL | ssmtp -v XXX@yandex.ru
Это если и планируете использовать bash.
[quote=“Explorerol, post:6, topic:13562”]
defineRule('crontest_hourly', {
when: cron('@hourly'),
then: function () {
log('@hourly rule fired');
Notify.sendEmail('12345@mail.ru', 'Subject of the letter', 'Text inside the letter');
}
});
А как в правило добавить переменную POWERVAL чтобы ее отправлять каждый месяц 1-ого числа
Не уверен что понимаю вопрос верно… Вы показываете отправку писем из bash. В правилах значения топиков получаются так: GitHub - wirenboard/wb-rules: Rule engine for Wiren Board
Из терминала отправлял для теста. Можете подсказать как правильно написать скрипт чтобы отправлялось сообщение с показаниями счетчика
Но коллега выше уже дал готовый?
Да.Я понял .Только не понял куда подставлять перемменую. И как ее описать