Проекты

Метеостанция

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

Если вы тот пост читали, то помните, что проблема была в невозможности отправлять данные с термодатчика по 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-е провисит полчаса от силы, а вот ноут без экрана в режиме фоновой активности может хоть целый день с него питаться. Так что до обратного включения скорее всего доживет.

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

14 комментария к записи Метеостанция

  1. Ivan M 07.01.2015 в 10:19 #

    Все идет к созданию умного дома, из подручных средств 🙂

    Здорово!

    • Павел Иевлев 07.01.2015 в 11:17 #

      В принципе, теперь это стало вполне доступно — исполнительные механизмы стоят уже недорого, а железо и ПО вполне по силам организовать самостоятельно.

  2. Валентин 07.01.2015 в 11:04 #

    Можно еще на окно снаружи простой спиртовой термометр поставить под камеру. Чтобы видеть сразу температуру и внутри, и снаружи.

    • Павел Иевлев 07.01.2015 в 11:15 #

      Температуру снаружи мне узнавать не требуется. Она в городе и за городом одинаковая 🙂

  3. Василий 07.01.2015 в 11:27 #

    Про Android очень жду — есть в наличии и аппарат, и желание сделать подобную вещь 🙂

    Да, если еще не смотрели, возможно вам пригодится этот ресурс: smartliving.ru

    • Павел Иевлев 07.01.2015 в 12:38 #

      Выглядит интересно, надо будет поковыряться.

  4. hidden 07.01.2015 в 13:26 #

    Здоровски.

    Раз уж целый ноут собирает данные, можно было бы на нём ещё поднять простенький веб-сервер и настроить mrtg, чтоб график температуры рисовал. Будет такой сам себе росгидромет.

    • Павел Иевлев 07.01.2015 в 13:52 #

      Нельзя. Интернет-то мобильный, сотовые операторы используют собственные локальные IP, никаких веб-серверов не поднять.

      • Евгений 07.01.2015 в 14:55 #

        Ну почему же сразу нельзя? 🙂

        Во первых даже у сотовых операторов есть услуга по предоставлению реального ip, но небесплатно, естественно.

        Во вторых можно поднять с ноута впн куда нить где есть внешний ip и оттуда порт пробросить.

        Ну и еще можно что-нить придумать, при желании...

        • Павел Иевлев 07.01.2015 в 18:15 #

          Это настолько небесплатно, что оторопь берет 🙂

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

          • ManOwaR 08.01.2015 в 15:17 #

            Есть такой сервис — noip.com, позволяющий привязать доменное имя к компу с динамическим IP. В додропбоксовские времена я активно юзал это дело для создания FTP-сервера на своем компе. 🙂

            • Starky 15.01.2015 в 16:02 #

              «С динамическим ип», а мегафон дает локальный IPшник за NAT-ом, скажем.

  5. Георгий 07.01.2015 в 16:37 #

    Просто и изящно.Для удалённого жилища весьма актуальная вещь,особенно если камеру направить (по возможности)на подъезд к дому-будет видно сколько копать зимой(без шуток).

  6. Странник 08.01.2015 в 1:10 #

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