Продолжая тему, поднятую этим постом – о дистанционном контроле температуры подручными методами и средствами, — приступаем ко второму этапу. Изготавливаем домашнюю метеостанцию из подручного мусора, применяя смекалку и находчивость вместо денег.
Если вы тот пост читали, то помните, что проблема была в невозможности отправлять данные с термодатчика по e-mail, из-за того, что почтовые сервера нынче требуют SSL, а программа его не умеет.
Так вот, в комментах мне подсказали интересное решение – дивную консольную программу отправки электронной почты, умеющую ssl. Программа эта называется незамысловато, sendEmail. Это небольшой (1,5 мб) почтовый SMTP-клиент, полностью управляемый с командной строки. Отличный инструмент для автоматической отправки писем, написанный на языке Perl. Прога не требует установки никаких специальных модулей, да и вообще инсталляции, представляя собой один голый экзешник. Все данные для отправки (сервер, логин-пароль, текст письма, заголовок и путь к вложению) задаются в командной строке как аргументы.
Таким образом, задача чертовски упростилась – нужно только подготовить данные к отправке – то есть, собрать текстовые логи с температурой в один архив с заранее заданным именем, и положить его туда, где программа его возьмет. Для этого используется архиватор RAR, также умеющий работать из командной строки.
Да, кстати, тут и железо для рабочей конфигурации подоспело. Старый ноут с отломанной крышкой. Вот он, в режиме наладки, с подключенным монитором-клавиатурой:
Там стоит WinXP. Конечно, для таких задач (долго работать автономно, всеми забытый, без монитора, покрываясь пылью в углу) гораздо больше подходит что-нибудь юниксоидное, но это были бы пляски с бубном на неделю. Под винду хотя бы готовый модуль к термодатчику есть.
На ноут были установлены все нужные утилиты, написан и поставлен на автоматическое исполнение скрипт, а затем он просто был просто подключен к UPSу и роутеру, отключен от монитора и клавиатуры и засунут за стол. Откуда на удлинителе USB выведен наружу датчик:
Да, кстати, сразу несколько человек предложили обойтись без термодатчика, просто периодически фотографируя вебкамерой обычный термометр. Есть и такое решение! Мне оно избыточно, но я нашел дивную софтину! Webcam2Email. Она запускается из командной строки, делает снимок вебкамерой и отправляет его на почту. Снимок потом удаляет. Такая программа-шпион. Данные почты хранятся в ini-файлике рядом (в открытом виде, так что лучше завести под задачу мусорный ящик, которого не жалко).
Чисто раз уж нашел, решил заодно и реализовать процесс в тот же скрипт – а пусть кроме температуры отправляет картинку из окна! Будем видеть, много ли снегу навалило, или не пора ли косить газон!
Камеру нашел какую-то в мусоре, оказалась с невыключаемыми светодиодами на морде. Пришлось вскрывать и варварски выкусывать.
Зато потом – красота:
Тем же скриптом делается снимочек и отправляется мне на почту. Вебка – распоследнее дешевое нонейм-барахло, так что качество не очень, ну да я опять же эксперимента ради.
Можно поставить хорошую HD-камеру, будет красиво. Этак, если набрать фоток за год, можно отличную гифку собрать 🙂
Ну и, наконец, сам скрипт:
Первая строчка – запуск программы, отправляющей снимок с вебкамеры. Аргументы ей не нужны, она сама знает, что делать.
Вторая строчка – удаление из папки с логами всех файлов, старше суток – зачем мне старые логи отправлять? Я их вчера уже получил… Ну и, опять же, нет бесконечно растущей папки.
Третья строчка – синхронизации папки с логами в другую папку. Зачем это нужно, почему нельзя архивировать прямо исходную? Потому что в ней постоянно пишется последний лог, а значит, архиватор выдаст ошибку доступа «файл занят другим приложением». Скопировать его в другую папку это, однако, не мешает. У меня это папка в дропбоксе (так что я получаю файлы и в почту и в дропбокс), но это совершенно не обязательно.
Третья строчка запускает архиватор, который пакует папку с логами в архив и кладет его в корень диска С под именем TEMPer.rar.
Четвертая – запускает программу sendEmail, задавая в качестве аргументов smtp-сервер, логин/пароль и так далее (на скриншоте затерты). Программа забирает архив с логами и отправляет на указанную почту.
Последняя строчка – удаление отправленного архива, дабы не умножать сущности.
Вот этот скрипт через «Планировщик заданий» вешается на исполнение дважды в сутки – в 8.00 и 15.00. Так что в день приходит четыре письма – два с картинкой и два с таблицами температуры. Картинки тут, в принципе, лишние, но зато прикольно.
Вот такая у меня автономная метеостанция, собранная из чего попало. Чем это лучше временного решения с постоянно работавшим основным компом? Чисто в энергопотреблении. Не то чтобы мне было жалко электричества…
Но отключения на несколько часов у нас тут хоть и нечасто, но бывают. Относительно прожорливый десктоп на UPS-е провисит полчаса от силы, а вот ноут без экрана в режиме фоновой активности может хоть целый день с него питаться. Так что до обратного включения скорее всего доживет.
Но это что — я в процессе придумал, как можно организовать метеостанцию на андроиде! 🙂 У меня как раз и лишний смарт завалялся… Но это как-нибудь в другой раз.
Все идет к созданию умного дома, из подручных средств 🙂
Здорово!
В принципе, теперь это стало вполне доступно — исполнительные механизмы стоят уже недорого, а железо и ПО вполне по силам организовать самостоятельно.
Можно еще на окно снаружи простой спиртовой термометр поставить под камеру. Чтобы видеть сразу температуру и внутри, и снаружи.
Температуру снаружи мне узнавать не требуется. Она в городе и за городом одинаковая 🙂
Про Android очень жду — есть в наличии и аппарат, и желание сделать подобную вещь 🙂
Да, если еще не смотрели, возможно вам пригодится этот ресурс: http://smartliving.ru/
Выглядит интересно, надо будет поковыряться.
Здоровски.
Раз уж целый ноут собирает данные, можно было бы на нём ещё поднять простенький веб-сервер и настроить mrtg, чтоб график температуры рисовал. Будет такой сам себе росгидромет.
Нельзя. Интернет-то мобильный, сотовые операторы используют собственные локальные IP, никаких веб-серверов не поднять.
Ну почему же сразу нельзя? 🙂
Во первых даже у сотовых операторов есть услуга по предоставлению реального ip, но небесплатно, естественно.
Во вторых можно поднять с ноута впн куда нить где есть внешний ip и оттуда порт пробросить.
Ну и еще можно что-нить придумать, при желании…
Это настолько небесплатно, что оторопь берет 🙂
Да, можно всякие придумать извращения на этот счет, но каждое из них уменьшает надежность системы в целом. И ради чего? Чтобы график онлайн рисовать? Толку с того графика…
Есть такой сервис — noip.com, позволяющий привязать доменное имя к компу с динамическим IP. В додропбоксовские времена я активно юзал это дело для создания FTP-сервера на своем компе. 🙂
«С динамическим ип», а мегафон дает локальный IPшник за NAT-ом, скажем.
Просто и изящно.Для удалённого жилища весьма актуальная вещь,особенно если камеру направить (по возможности)на подъезд к дому-будет видно сколько копать зимой(без шуток).
А в биосе уже нельзя настроить комп на включение и выключение в определённое время, скажем на час для отправки писем, это бы сделало систему ещё более энергонезависимой или нафиг надо?