Продолжая тему, поднятую этим постом – о дистанционном контроле температуры подручными методами и средствами, — приступаем ко второму этапу. Изготавливаем домашнюю метеостанцию из подручного мусора, применяя смекалку и находчивость вместо денег.

Если вы тот пост читали, то помните, что проблема была в невозможности отправлять данные с термодатчика по e-mail, из-за того, что почтовые сервера нынче требуют SSL, а программа его не умеет.

Так вот, в комментах мне подсказали интересное решение – дивную консольную программу отправки электронной почты, умеющую ssl. Программа эта называется незамысловато, sendEmail. Это небольшой (1,5 мб) почтовый SMTP-клиент, полностью управляемый с командной строки. Отличный инструмент для автоматической отправки писем, написанный на языке Perl. Прога не требует установки никаких специальных модулей, да и вообще инсталляции, представляя собой один голый экзешник. Все данные для отправки (сервер, логин-пароль, текст письма, заголовок и путь к вложению) задаются в командной строке как аргументы.

Таким образом, задача чертовски упростилась – нужно только подготовить данные к отправке – то есть, собрать текстовые логи с температурой в один архив с заранее заданным именем, и положить его туда, где программа его возьмет. Для этого используется архиватор RAR, также умеющий работать из командной строки.

Да, кстати, тут и железо для рабочей конфигурации подоспело. Старый ноут с отломанной крышкой. Вот он, в режиме наладки, с подключенным монитором-клавиатурой:

2015-01-06-11.15.19

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

На ноут были установлены все нужные утилиты, написан и поставлен на автоматическое исполнение скрипт, а затем он просто был просто подключен к UPSу и роутеру, отключен от монитора и клавиатуры и засунут за стол. Откуда на удлинителе USB выведен наружу датчик:

2015-01-06-15.30.38

Да, кстати, сразу несколько человек предложили обойтись без термодатчика, просто периодически фотографируя вебкамерой обычный термометр. Есть и такое решение! Мне оно избыточно, но я нашел дивную софтину! Webcam2Email. Она запускается из командной строки, делает снимок вебкамерой и отправляет его на почту. Снимок потом удаляет. Такая программа-шпион. Данные почты хранятся в ini-файлике рядом (в открытом виде, так что лучше завести под задачу мусорный ящик, которого не жалко).

Чисто раз уж нашел, решил заодно и реализовать процесс в тот же скрипт – а пусть кроме температуры отправляет картинку из окна! Будем видеть, много ли снегу навалило, или не пора ли косить газон!

Камеру нашел какую-то в мусоре, оказалась с невыключаемыми светодиодами на морде. Пришлось вскрывать и варварски выкусывать.

2015-01-06-13.15.54

Зато потом – красота:

2015-01-06-13.29.53

Тем же скриптом делается снимочек и отправляется мне на почту. Вебка – распоследнее дешевое нонейм-барахло, так что качество не очень, ну да я опять же эксперимента ради.

webcam

Можно поставить хорошую HD-камеру, будет красиво. Этак, если набрать фоток за год, можно отличную гифку собрать :)

Ну и, наконец, сам скрипт:

Скриншот 2015-01-06 16.31.05

Первая строчка – запуск программы, отправляющей снимок с вебкамеры. Аргументы ей не нужны, она сама знает, что делать.

Вторая строчка – удаление из папки с логами всех файлов, старше суток – зачем мне старые логи отправлять? Я их вчера уже получил… Ну и, опять же, нет бесконечно растущей папки.

Третья строчка – синхронизации папки с логами в другую папку. Зачем это нужно, почему нельзя архивировать прямо исходную? Потому что в ней постоянно пишется последний лог, а значит, архиватор выдаст ошибку доступа «файл занят другим приложением». Скопировать его в другую папку это, однако, не мешает. У меня это папка в дропбоксе (так что я получаю файлы и в почту и в дропбокс), но это совершенно не обязательно.

Третья строчка запускает архиватор, который пакует папку с логами в архив и кладет его в корень диска С под именем TEMPer.rar.

Четвертая – запускает программу sendEmail, задавая в качестве аргументов smtp-сервер, логин/пароль и так далее (на скриншоте затерты). Программа забирает архив с логами и отправляет на указанную почту.

Последняя строчка – удаление отправленного архива, дабы не умножать сущности.

Вот этот скрипт через «Планировщик заданий» вешается на исполнение дважды в сутки – в 8.00 и 15.00. Так что в день приходит четыре письма – два с картинкой и два с таблицами температуры. Картинки тут, в принципе, лишние, но зато прикольно.

Вот такая у меня автономная метеостанция, собранная из чего попало. Чем это лучше временного решения с постоянно работавшим основным компом? Чисто в энергопотреблении. Не то чтобы мне было жалко электричества…

clip_image013

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

Но это что — я в процессе придумал, как можно организовать метеостанцию на андроиде! :) У меня как раз и лишний смарт завалялся… Но это как-нибудь в другой раз.