Проекты

Температура онлайн

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

Долго прикидывал, как бы это сделать. Ну, то есть, нормальный человек купил бы просто GSM-термометр за 200 баксов и голову бы себе не напрягал. Хорошая штука — отсылает смс с данными датчика температуры, по расписанию или по запросу. Гибрид термометра и мобильника. Многие даже позволяют дистанционно включать какую-нибудь нагрузку, например — обогреватель.

clip_image001

Но дистанционное включение мне не нужно, а 200 баксов кажется мне дорого. Ну и, опять же — воткнул-работает… Скучно!

И потому я пошел своеобычным путем per anus оригинальных технических решений. Для чего приобрел в Китае термодатчик в USB. За 250 рублей. Это ровно в 20 раз дешевле самого дешевого GSM-термометра.

Выглядит он как обычная флешка и втыкается туда же.

clip_image003

К нему имеется фирменная утилита, которая, по замыслу китайцев, умеет все:

Скриншот 2015-01-04 11.22.41

Показывать график, посекундную таблицу измерений, отправлять данные по скайпу, MSN и емаил. Разумеется, наиболее привлекательным выглядело последнее. Стоит себе на даче нетбучочечек, воткнутый в UPS, и два раза в сутки шлет мне на почту сводный отчет от температуре через мою же GSM-to-Wi-Fi сетку. У меня как раз и нетбучок ненужный для этого есть:

clip_image007

Тот самый «еле-еле пися» — EeePC. Неубиваемый древний девайс, вечный, как окаменевшее говно мамонта и примерно настолько же полезный. Зато он на одном упсе может неделю работать, потребление у него как у планшета.

Но, разумеется, если бы все заработало, как планировалось, то о чем бы я вам рассказывал?

Для начала, фирменная утилита термометра потребовала на нетбуке обновления NET Framework до 3.5, но все равно не стала запускаться, выдавая этого самого фраймворка ошибку. Я ее и так и этак, со словами и без слов… — нет, глядь, не работает. С «еле-еле-писей» это частенько случается, там криво и жестоко кастрированная (чтобы влезала на крошечный SSD) ХРень, у нее свои странные приколы. Некоторые вещи на ней не работают «просто потому что». Проще плюнуть, чем понять, чего им не хватает.

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

clip_image009

Установил утилиту, настроил почту — и с какого ящика отсылать, и на какой…

Скриншот-2015-01-03-13.08.13

Ан хрен там!

clip_image012

Я знал, но как-то не придавал значения тому, что в прошлом году абсолютно все почтовики перешли на безусловную SSL-авторизацию SMPT. А между тем, это именно так. А утилита этого не умеет. Погуглив, обнаружил, что сервера без SSL теперь только за лютые деньги для профессиональных спамеров. Именно потому, что они позволяют отправлять письма любым унылым утилиткам, типа этой. А нормальные сервера это обрезали. Как раз в целях борьбы со спамом.

Нет, конечно можно поднять собственный почтовый сервер, с блэкджэком и без SSL, но… Чот это как-то из пушки по воробьям. Долго и муторно. Нормальные герои, как известно, всегда идут в обход.

Что нам остается? Скайп? Скайп надысь принципиально порезал API для сторонних разработчиков. Ну да, в микрософте, известно дело, жадные ненатуралы давно окопались. MSN Messenger? Так его, вроде, теперь вообще нету. Всех еще об прошлом годе принудительно перевели на тот же скайп. Потому что в микрософте… ну, вы поняли.

Таким образом, остался только лог, который постоянно пишет программа. Текстовый файл, состоящий из строк вида «номер строки, температура, дата, время»:

clip_image013

Частота записи — раз в секунду. Это явно избыточно для моей задачи, но, к сожалению — никак не регулируется. Движок с этой функцией в интерфейсе настроек есть, но ни на что, зараза, не влияет.  Ладно, черт с ним, пусть так. Можно по крайней мере задать число строк для одного файла, что уже неплохо. Хотя безвестный китайский программист, написавший эту утилиту, явно напрашивается на ампутацию рук — чтобы сидеть не мешали…

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

Осталось только наладить получение этих логов с загородного компа на домашний, что уже задача попроще. Сначала я просто задал программе путь для сохранения логов в папку Дропбокса — но вышло нехорошо. Постоянно перезаписываемый раз в секунду файл бесконечно синхронизируется, что сводит Дропбокс с ума и создает непрерывный трафик.

Пришлось сделать периодическую синхронизацию папки с логами в папку дропбокса при помощи моей любимой консольной утилиты nnBackup. Для чего я написал такой микроскрипт:

clip_image014

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

Скрипт подвесил через стандартный «Планировщик задач» (клянусь бейцами биллгейца, я даже не представлял, через какую задницу он запускается на 8.1! «консоль управления»! ояебундестаг!..) на выполнение дважды в сутки.

clip_image015

clip_image016

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

В общем, кривоватая и корявоватая система дистанционного мониторинга температуры заработала. Но, конечно, вышло неизящно. Эка они подкузьмили-то со своим SSL…

Надо еще подумать.

19 комментариев к записи Температура онлайн

  1. Repich 04.01.2015 в 14:38 #

    А разве ноутбук не вносит свои коррективы в окружающую температуру? Он ведь, собака, греется, что должно привести к искажению результатов? Конечно, если задача понять, что «все пропало» и температура в доме приблизилась а абсолютному нулю такой штучки достаточно, а вот может ли она отличить +22 от +17?

    • Павел Иевлев 04.01.2015 в 14:50 #

      А для этого достаточно полметрового удлинителя USB 🙂

  2. lnr 04.01.2015 в 15:37 #

    sms.ru

    Когда-то пользовался этим сервисом.

    Он, вообще, платный, но раньше для одного номера можно было слать смс-ки бесплатно.

    У них есть АПИ клиенты на всех популярных языках, можно запустить какого-то демона на ноуте и стучаться к апи.

    • Павел Иевлев 04.01.2015 в 15:53 #

      Интересная идея. Хотя не совсем понятно, как скармливать их АПИ произвольный текстовый файл...

      Но есть над чем подумать.

      • lnr 04.01.2015 в 16:08 #

        Этот вариант хорош, когда информация в отчете ограничивается сотней символов.

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

        • Павел Иевлев 04.01.2015 в 16:14 #

          А можно поподробнее про сервисы?

          • lnr 04.01.2015 в 16:20 #

            промахнулся, ответил ниже

  3. Денис 04.01.2015 в 16:11 #

    Есть такая штучка stunnel, позволяет natить SMTP трафик с безSSLных клиентов на SSLные почтовые серверы. Мы такой пользовались для 1с, у которой до поры поддержки SSL не было.

  4. lnr 04.01.2015 в 16:19 #

    www.unisender.com/ru/

    первое бесплатное что нагуглил

    Пока гуглил, пришла еще одна идея — твиттер, он будто создан для этого)

    • Павел Иевлев 04.01.2015 в 17:18 #

      А у твиттера есть подходящий API?

      • lnr 04.01.2015 в 17:27 #

        Да, полноценный REST.

        в интернете есть куча примеров на PHP как с ним работать

  5. elveel 04.01.2015 в 18:41 #

    С линуксом дружит?

    Насколько знаю, делают прошивки с опенврт для роутера с поддержкой всяких датчиков.

  6. Евгений 04.01.2015 в 19:43 #

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

    Если надо — welcome 🙂

    • Павел Иевлев 04.01.2015 в 20:10 #

      Спасибо за предложение, но я уже нашел решение проще. Напишу по окончании тестирования.

  7. Levap 06.01.2015 в 3:25 #

    Спасибо за статью. Весьма увлекательно и познавательно.

  8. Starky 15.01.2015 в 14:51 #

    У меня так — Arduino Mini Pro (120р + От батареек может месяцы жить, от UPS — ± бесконечность) + DHT22 (температура-влажность) + еще датчики + EtherCard (для выхода в инет) +nRF24 (для связи с другими «удаленными» датчиками и контроллером котла). Все подключено к роутеру где крутится OpenWRT, в выходные напишу скриптик на PHP (который в роутере уже есть), который будет принимать данные с ардуинки и отсылать их куда-нибудь в инет, где уже будет писаться в MySQL с графиками и прочими плюшками.

    • Павел Иевлев 15.01.2015 в 14:58 #

      Да, Arduino — моя мечта. Останавливает пока недостаток времени на освоение новой платформы. Но я еще до него доберусь!

      • Starky 15.01.2015 в 15:07 #

        Для большинства случаев вполне хватает чуть модифицированных примеров из ардуиновской оболочки или библиотек. Ну и хорошо бы уметь паять, т.к. на макетке оставлять кучу длиннючих проводов не очень хорошо.

  9. MadRat 29.01.2015 в 0:26 #

    А чего огород-то городить? Есть така халявна приблуда — TeamViewer www.teamviewer.com/ru/ . Работает, как лопата, проста и надежна, как лом. Схема проста до изумления. На удаленке запускаете сервак, на локале — клиента. И имеете такой квазиРДПконнект, но тока без выделенного айпишника ипрочих дополнительных накладных ништяков. Дальше — тварите, шо хатите )))