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

Долго прикидывал, как бы это сделать. Ну, то есть, нормальный человек купил бы просто 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…

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