Оглавление:

Получение уведомления по электронной почте, если канал на ThingSpeak некоторое время не обновлялся: 16 шагов
Получение уведомления по электронной почте, если канал на ThingSpeak некоторое время не обновлялся: 16 шагов

Видео: Получение уведомления по электронной почте, если канал на ThingSpeak некоторое время не обновлялся: 16 шагов

Видео: Получение уведомления по электронной почте, если канал на ThingSpeak некоторое время не обновлялся: 16 шагов
Видео: Проект Интернета вещей с использованием Cayenne и ESP8266, отправка SMS и электронной почты, проект Nodemcu, проект безопасности Интернета вещей 2024, Ноябрь
Anonim
Получать уведомление по электронной почте, если канал на ThingSpeak некоторое время не обновлялся
Получать уведомление по электронной почте, если канал на ThingSpeak некоторое время не обновлялся

Предыстория

У меня шесть автоматизированных теплиц, разбросанных по Дублину, Ирландия. Используя индивидуальное приложение для мобильного телефона, я могу удаленно контролировать и взаимодействовать с автоматизированными функциями в каждой теплице. Я могу вручную открывать / закрывать окна, когда температура слишком высокая / низкая; Я могу начать / остановить полив, когда влажность почвы слишком низкая / высокая; и я могу запустить / остановить вентилятор при слишком высокой / низкой влажности воздуха. Или я могу просто переключить систему в автоматический режим, и за овощами будет ухаживать мозг Arduino. Более подробную информацию об этом проекте можно найти здесь -

Удаленное подключение к платам Arduino в шести теплицах стало возможным с помощью USB-ключей GPRS, по одному в каждом месте (я купил свой здесь https://www.aliexpress.com/item/Unlocked-New-Huawei-E353) -E353s-2-With-Antenna-3G-USB-Modem-21-6-Mbps-HSPA-Mobile / 32979630201.html? Spm = a2g0s.9042311.0.0.44cb4c4dzVUThU). Как и в случае с мобильным подключением для передачи данных (по крайней мере, в Дублине), оно случайным образом отключается, иногда на несколько минут, иногда может быть на пару часов. Если соединение прерывается, Arduino запрограммирован на сброс USB-ключа каждые 10 минут, чтобы он попытался инициировать новое соединение. Иногда, однако, по (пока) неизвестным причинам, даже если соединение для передачи данных GPRS снова включено, Arduino (и прикрепленный к нему экран Ethernet) не может заметить это событие. Это момент, когда мне нужно перейти в это конкретное место и вручную сбросить всю систему.

Когда соединение для передачи данных обрывается в каком-то месте, я хотел получить уведомление по электронной почте как можно скорее, чтобы я мог следить за этим конкретным местом. Поскольку связь между телефонным приложением и Arduino осуществляется через онлайн-службу, предоставляемую https://thingspeak.com, до недавнего времени (и до 31 марта 2019 г.) это было возможно с помощью другой службы, предоставляемой https:// ifttt.com/discover и установив ThingHTTP и React для каждого канала, отслеживая, не обновлялся ли этот конкретный канал в течение некоторого времени. Однако, согласно электронному письму, которое я получил от Google, начиная с 31 марта 2019 г., из-за несоблюдения их обновленных требований к конфиденциальности данных (https://cloud.google.com/blog/products/g-suite/elevating-user -trust-in-our-api -osystems), доступ к некоторым данным в моей учетной записи Google больше не будет доступен для IFTTT, и, поскольку в моем случае электронная почта была единственным ресурсом, к которому IFTTT имел доступ, я понял, что уведомление описанная выше служба перестанет работать.

Итак, вот мы и реализуем альтернативное решение, чтобы уведомления по электронной почте продолжали поступать, когда соединение для передачи данных в моих местах разрывается. Это по-прежнему использует функции ThingHTTP и React на моих каналах, только ссылка на IFTTT была перенаправлена на Google Диск. Итак, помимо оборудования (Arduino в моем случае), у вас может быть связь с вашей учетной записью ThingSpeak, вам нужно будет создать учетную запись Google, на случай, если у вас ее еще нет… и давайте начнем!

Шаг 1:

Изображение
Изображение

На Google Диске

Во-первых, на Google Диске (https://drive.google.com) нам нужно создать электронную таблицу и простую форму. Откройте свой Google Диск и нажмите «Создать» - «Google Таблицы» - «Пустая таблица».

Шаг 2:

Изображение
Изображение

Я переименовал свой "Местоположение в таблице". Затем перейдите в Инструменты - Создать форму.

Шаг 3:

Изображение
Изображение

Я переименовал форму в «Расположение вниз» и изменил «Вопрос без названия» на «Статус», а тип - с «Множественный выбор» на «Краткий ответ».

Шаг 4:

Изображение
Изображение

Затем я удалил опцию сбора адресов электронной почты - нажмите «Изменить настройки» и снял отметки со всех опций в появившемся окне. Щелкните на «Сохранить».

Шаг 5:

Изображение
Изображение

Закройте текущую вкладку браузера, содержащую вашу форму, и вы должны вернуться на свою основную вкладку Google Диска, где у вас должны быть и форма, и электронная таблица, которую вы только что создали. Откройте электронную таблицу и перейдите в «Файл - Поделиться…». В новом окне нажмите «Дополнительно».

Шаг 6:

Изображение
Изображение

Затем нажмите «Изменить…» рядом с меткой «Личное - доступ только вам».

Шаг 7:

Изображение
Изображение

и измените на "Вкл. - Все, у кого есть ссылка", а также на "Может редактировать"

Шаг 8:

Изображение
Изображение

Нажмите «Сохранить» и «Готово», чтобы вернуться к своей таблице. Находясь там, нажмите «Файл - Опубликовать в Интернете…», а затем нажмите «Опубликовать» и «ОК» для диалогового окна. Закройте окно «Опубликовать в Интернете».

Находясь в электронной таблице, нажмите «Форма - Перейти к активной форме». Щелкните правой кнопкой мыши (я использую браузер Google Chrome) и выберите «Просмотреть источник страницы».

Шаг 9:

Изображение
Изображение

На открывшейся новой странице выполните поиск по запросу «действие формы», а затем найдите ссылку, похожую на https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXX/formResponse. Выберите эту ссылку, скопируйте и вставьте ее в текстовый документ. Вы будете использовать его для формирования последней ссылки, которую необходимо ввести в ThingHTTP для ThingSpeak.

Шаг 10:

Изображение
Изображение

Вернитесь к исходному виду вашей формы и выполните поиск по запросу «entry.». Найдите и выделите весь текст, например «entry. XXXXX». Скопируйте и вставьте его в тот же текстовый документ, что и выше. Теперь вы можете закрыть исходный вид вашей формы Google.

Шаг 11:

Изображение
Изображение

В новом текстовом документе (где теперь у вас есть ссылка и запись, которую мы вставили ранее) создайте последнюю ссылку, которая должна выглядеть так:

docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXX/formResponse?entry. XXXXX = LOCATION + NAME & submit = Submit

В моем случае "МЕСТОПОЛОЖЕНИЕ + НАЗВАНИЕ" будет заменено фактическим названием каждого конкретного местоположения, которое мне нужно отслеживать. Электронное письмо с уведомлением, которое я получу при разрыве соединения, будет содержать этот текст, чтобы я точно знал, в каком месте есть проблемы. Фактически, этот текст будет представлен как краткое содержание поля «статус» в форме Google. «& Submit = Submit» отправит форму без каких-либо дополнительных действий при вызове ThingHTTP и React.

Наконец, нам нужно добавить скрипт, который будет автоматически отправлять уведомление по электронной почте каждый раз, когда в электронную таблицу добавляется новая запись. Откройте электронную таблицу и нажмите «Инструменты - Редактор скриптов». В новом открывшемся окне добавьте следующий код (с необходимыми изменениями, отражающими ваши потребности):

функция newEntryNotification (e)

{

пытаться

{

var timestamp = e.values [0];

var location = e.values [1];

var message = location + 'location is DOWN / n' + timestamp;

MailApp.sendEmail («ВАШ АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ», «Внимание, местоположение ВНИЗ!», Сообщение);

}

поймать (е)

{

MailApp.sendEmail («ВАШ АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ», «Ошибка - Внимание, расположение ВНИЗ!», Электронное сообщение);

}

}

Замените текст «ВАШ АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ» адресом электронной почты, на который должно быть отправлено уведомление, и фактическим сообщением с уведомлением, если хотите.

Шаг 12:

Изображение
Изображение

Этот сценарий необходимо запускать, когда в электронную таблицу добавляется новая запись. Находясь в том же окне (с приведенным выше кодом сценария), щелкните значок «секундомер» на панели инструментов - «Триггеры текущего проекта». Вам будет предложено назвать ваш проект (я назвал свой «locationDown»), и откроется другая вкладка браузера, сообщающая, что результатов (триггеров) не найдено. Нажмите на «создать новый триггер».

Шаг 13:

Изображение
Изображение

В новом окне выберите «Из электронной таблицы» для «Выбрать источник события»; «При отправке формы» для «Выбрать тип события»; «Уведомить меня немедленно» для «Настройки уведомлений об ошибках». Щелкните "Сохранить". Вам будет предложено войти в свою учетную запись Google и «Разрешить» для этого триггера получить доступ к вашей учетной записи при необходимости.

Шаг 14:

Изображение
Изображение

Теперь у вас должен быть триггер в списке триггеров, который будет связан со сценарием, который мы создали ранее. Таким образом, при вставке новых данных в электронную таблицу (с использованием ссылки автоматической формы и описанного выше метода без вывода сообщений) триггер немедленно вызовет сценарий, который отправит на указанный адрес электронной почты уведомление, содержащее выбранное вами сообщение.

Мы закончили со стороной Google Диска, и теперь мы переходим к ThingSpeak.

Шаг 15:

Изображение
Изображение

В ThingSpeak войдите в свою учетную запись (https://thingspeak.com/login), перейдите в «Приложения - ThingHTTP», а затем нажмите «New ThingHTTP». Дайте ему имя (я выбрал фактическое имя каждого местоположения; «MyLocationName» для целей этого руководства) и в поле «URL» вставьте ссылку из текстового файла, которая выглядит как

docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXX/formResponse?entry. XXXXX = LOCATION + NAME & submit = Submit

Оставьте все остальные поля как есть и нажмите «Сохранить ThingHTTP».

Шаг 16:

Изображение
Изображение

Затем перейдите в «Приложения - React» и нажмите «New React». Дайте ему имя (опять же, я выбрал имя местоположения, за которым следует слово «реагировать», но вы можете выбрать любое имя, какое захотите); «Нет проверки данных» для «Типа условия»; «Каждые 10 минут» для «Частоты тестирования»; имя канала, обновления которого вы хотите отслеживать, для «If Channel»; время, когда канал не обновлялся (я выбрал 15 минут), для "не обновлялся в течение"; «ThingHTTP» для «Действия»; "MyLocationName" для "затем выполнить ThingHTTP"; «Выполнять действие только при первом выполнении условия», так как я хочу получать уведомление только один раз. Это будет сброшено само, когда канал снова обновится с новыми входящими данными. Нажмите «Сохранить реакцию», и все готово.

С этого момента, когда ваш канал не обновлялся в течение 15 минут (или в другое время, в зависимости от того, что вы выбрали), React перехватит это исключение, которое вызовет ThingHTTP, который, в свою очередь, незаметно создаст новую запись в вашем электронная таблица. Триггер и скрипт в Google Spreadsheet возьмут его оттуда, как уже объяснялось выше.

Рекомендуемые: