- PVSM.RU - https://www.pvsm.ru -

Уведомление о непрочитанном входящем письме с помощью Yoctupuce-Demo

image

Вступление:

Я был вдохновлен 2мя статьями, этой [1] и этой [2]. Мне очень понравилась идея первой статьи, но я подумал, что покупать Arduino для этой затеи было бы слишком «жирно». Затем, когда я наткнулся на вторую статью, я понял, что Yoctopuce-demo -как раз то, что мне надо! И я решил заказать его.

Посылка:

Через 25 дней я получил на почте конверт из Швейцарии. В нем был сам чип, упакованный в антистатичный пакет с названием и датой производства. Так же шел кабель и письмо с инструкциями. Чип был размером 2х2 см, на нем имелось 2 светодиода, и одна кнопка. К сожалению взаимодействовать можно лишь с 1м светодиодом, но нам этого хватит. Устройство работало без драйверов, но нужно было скачать VirtualHub, который доступен для всех платформ на сайте производителя. Весит он всего 170 кб. Подробный обзор чипов есть тут [2], поэтому подробно описывать его я не стану.
image

Выбор языка программирования:

На сайте производителя можно скачать библиотеки к следующим языкам: Javascript, PHP, C++, C# ,.NET, Delphi. Мой выбор сразу пал на Javascript. И вот почему: он предельно понятен и прост в разработке, запускается прямо из браузера и не требует установки. Более того он кроссплатформенный, что важно. В комплекте с библиотеками есть папка с примерами для всех устройств. Вот pastebin.com/atweug6J [3] код примера для Yoctopuce-Demo. В данном примере программа проверяет подключен ли девайс каждые 0.5 секунд. Есть 2 кнопки (Вкл/Выкл светодиод).

Что дальше:

Дальше у меня возникла проблема: Как проверять наличие непрочитанных писем? Javascript не может сам подключаться по POP или IMAP и проверять их наличие. Но выход нашелся. В Gmail есть фид по адресу: mail.google.com/mail/feed/atom/. [4] По этому адресу нам будут выдаваться непрочитанные сообщения. Необходимо лишь быть залогиненым в Gmail в вашем браузере. Смотрим исходный код и находим там строчку Х, где Х — количество непрочитанных сообщений. Это то, что нам надо! Осталось только считать это число. А делается это очень просто:

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","https://mail.google.com/mail/feed/atom",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

fullcount=
xmlDoc.getElementsByTagName("fullcount")[0].childNodes[0].nodeValue;

Осталось лишь немного изменить исходный текст примера, который шел вместе с библиотеками и дело в шляпе. Воспользуемся уже готовой функцией refresh, добавив в нее загрузку переменной fullcount. Далее сравниваем fullcount с 0, и взависимости от этого включаем или выключаем лампочку. Еще можно увеличить время между обновлением. Для этого просто меняем значение setTimeout с 500 до 5000. Вот и все. Проверяем, работает!
image

Почему это удобно?

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

Вывод:

Получился маленький удобный скрипт. Про плюсы я уже сказал. Минус я нашел только один — нужно быть залогиненым в gmail в браузере. Скрипт несовершенен, много чего можно доработать и добавить. Если есть какие нибудь идеи — пишите в комментариях. Буду рад отзывам.

Ссылки:

Полный код скрипта: pastebin.com/atweug6J [3]
Сайт производителя: www.yoctopuce.com/ [5]

Автор: nikmaster


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/diy/3970

Ссылки в тексте:

[1] этой: http://habrahabr.ru/post/137179/

[2] этой: http://habrahabr.ru/post/138502/

[3] pastebin.com/atweug6J: http://pastebin.com/atweug6J

[4] mail.google.com/mail/feed/atom/.: https://mail.google.com/mail/feed/atom/.

[5] www.yoctopuce.com/: http://www.yoctopuce.com/