Есть у меня перманентная задача на зимний период – дистанционный контроль за температурой в загородном доме. Ну, чтобы точно знать, что пора срочно ехать и топить печку, пока все нафиг не померзло к чертовой матери. Когда я тут живу, то, разумеется, и так все понятно, а вот когда обстоятельства требуют долговременного присутствия в городе – мне как-то неспокойно.
Долго прикидывал, как бы это сделать. Ну, то есть, нормальный человек купил бы просто GSM-термометр за 200 баксов и голову бы себе не напрягал. Хорошая штука — отсылает смс с данными датчика температуры, по расписанию или по запросу. Гибрид термометра и мобильника. Многие даже позволяют дистанционно включать какую-нибудь нагрузку, например – обогреватель.
Но дистанционное включение мне не нужно, а 200 баксов кажется мне дорого. Ну и, опять же – воткнул-работает… Скучно!
И потому я пошел своеобычным путем per anus оригинальных технических решений. Для чего приобрел в Китае термодатчик в USB. За 250 рублей. Это ровно в 20 раз дешевле самого дешевого GSM-термометра.
Выглядит он как обычная флешка и втыкается туда же.
К нему имеется фирменная утилита, которая, по замыслу китайцев, умеет все:
Показывать график, посекундную таблицу измерений, отправлять данные по скайпу, MSN и емаил. Разумеется, наиболее привлекательным выглядело последнее. Стоит себе на даче нетбучочечек, воткнутый в UPS, и два раза в сутки шлет мне на почту сводный отчет от температуре через мою же GSM-to-Wi-Fi сетку. У меня как раз и нетбучок ненужный для этого есть:
Тот самый «еле-еле пися» — EeePC. Неубиваемый древний девайс, вечный, как окаменевшее говно мамонта и примерно настолько же полезный. Зато он на одном упсе может неделю работать, потребление у него как у планшета.
Но, разумеется, если бы все заработало, как планировалось, то о чем бы я вам рассказывал?
Для начала, фирменная утилита термометра потребовала на нетбуке обновления NET Framework до 3.5, но все равно не стала запускаться, выдавая этого самого фраймворка ошибку. Я ее и так и этак, со словами и без слов… — нет, глядь, не работает. С «еле-еле-писей» это частенько случается, там криво и жестоко кастрированная (чтобы влезала на крошечный SSD) ХРень, у нее свои странные приколы. Некоторые вещи на ней не работают «просто потому что». Проще плюнуть, чем понять, чего им не хватает.
Плюнул. Воткнул пока в основной комп. Потом привезу из города старый ноут с отломанным экраном, он у меня раньше за сервак работал, а теперь без дела лежит. А пока, думаю, для примера разберусь и настрою на компе. Вот, рядом контрольный термометр для калибровки:
Установил утилиту, настроил почту – и с какого ящика отсылать, и на какой…
Ан хрен там!
Я знал, но как-то не придавал значения тому, что в прошлом году абсолютно все почтовики перешли на безусловную SSL-авторизацию SMPT. А между тем, это именно так. А утилита этого не умеет. Погуглив, обнаружил, что сервера без SSL теперь только за лютые деньги для профессиональных спамеров. Именно потому, что они позволяют отправлять письма любым унылым утилиткам, типа этой. А нормальные сервера это обрезали. Как раз в целях борьбы со спамом.
Нет, конечно можно поднять собственный почтовый сервер, с блэкджэком и без SSL, но… Чот это как-то из пушки по воробьям. Долго и муторно. Нормальные герои, как известно, всегда идут в обход.
Что нам остается? Скайп? Скайп надысь принципиально порезал API для сторонних разработчиков. Ну да, в микрософте, известно дело, жадные ненатуралы давно окопались. MSN Messenger? Так его, вроде, теперь вообще нету. Всех еще об прошлом годе принудительно перевели на тот же скайп. Потому что в микрософте… ну, вы поняли.
Таким образом, остался только лог, который постоянно пишет программа. Текстовый файл, состоящий из строк вида «номер строки, температура, дата, время»:
Частота записи – раз в секунду. Это явно избыточно для моей задачи, но, к сожалению – никак не регулируется. Движок с этой функцией в интерфейсе настроек есть, но ни на что, зараза, не влияет. Ладно, черт с ним, пусть так. Можно по крайней мере задать число строк для одного файла, что уже неплохо. Хотя безвестный китайский программист, написавший эту утилиту, явно напрашивается на ампутацию рук – чтобы сидеть не мешали…
(UPD — интервал мониторинга не без бубна, но заработал. Теперь утилита пишет в лог одну строку в полчаса, число строк на файл ограничил шестью — то есть, один текстовый файл в шесть строк раз в три часа. Это уже гораздо, гораздо лучше! Текстовый файлики в несколько килобайт вообще не дают трафика.)
Осталось только наладить получение этих логов с загородного компа на домашний, что уже задача попроще. Сначала я просто задал программе путь для сохранения логов в папку Дропбокса – но вышло нехорошо. Постоянно перезаписываемый раз в секунду файл бесконечно синхронизируется, что сводит Дропбокс с ума и создает непрерывный трафик.
Пришлось сделать периодическую синхронизацию папки с логами в папку дропбокса при помощи моей любимой консольной утилиты nnBackup. Для чего я написал такой микроскрипт:
Первая строчка – синхронизация данных, вторая – удаление файлов старше суток, чтобы не гонять через дропбокс лишнее и не иметь на компе бесконечно растущую папку.
Скрипт подвесил через стандартный «Планировщик задач» (клянусь бейцами биллгейца, я даже не представлял, через какую задницу он запускается на 8.1! «консоль управления»! ояебундестаг!..) на выполнение дважды в сутки.
Таким образом, сидя в городе, я дважды в сутки получаю в дропбокс оперативные логи, где указана посекундная температура за текущий день. Из этих данных можно строить графики, но зачем? Вполне достаточно того, что мне известна текущая температура.
В общем, кривоватая и корявоватая система дистанционного мониторинга температуры заработала. Но, конечно, вышло неизящно. Эка они подкузьмили-то со своим SSL…
Надо еще подумать.
А разве ноутбук не вносит свои коррективы в окружающую температуру? Он ведь, собака, греется, что должно привести к искажению результатов? Конечно, если задача понять, что «все пропало» и температура в доме приблизилась а абсолютному нулю такой штучки достаточно, а вот может ли она отличить +22 от +17?
А для этого достаточно полметрового удлинителя USB 🙂
http://sms.ru/
Когда-то пользовался этим сервисом.
Он, вообще, платный, но раньше для одного номера можно было слать смс-ки бесплатно.
У них есть АПИ клиенты на всех популярных языках, можно запустить какого-то демона на ноуте и стучаться к апи.
Интересная идея. Хотя не совсем понятно, как скармливать их АПИ произвольный текстовый файл…
Но есть над чем подумать.
Этот вариант хорош, когда информация в отчете ограничивается сотней символов.
Для больших данных можно использовать другие сервисы, мейлчимп или аналоги, там и файл можно подцепить.
А можно поподробнее про сервисы?
промахнулся, ответил ниже
Есть такая штучка stunnel, позволяет natить SMTP трафик с безSSLных клиентов на SSLные почтовые серверы. Мы такой пользовались для 1с, у которой до поры поддержки SSL не было.
http://www.unisender.com/ru/
первое бесплатное что нагуглил
Пока гуглил, пришла еще одна идея — твиттер, он будто создан для этого)
А у твиттера есть подходящий API?
Да, полноценный REST.
в интернете есть куча примеров на PHP как с ним работать
С линуксом дружит?
Насколько знаю, делают прошивки с опенврт для роутера с поддержкой всяких датчиков.
Могу предложить упростить данную связку созданием почтового ящика не требующего ssl для отправки писем (обычную авторизацию то прога умеет, надеюсь?). Сервер есть, ящик сделаю, ssl в ближайшие пару лет точно не сможем ввести как обязаловку…
Если надо — welcome 🙂
Спасибо за предложение, но я уже нашел решение проще. Напишу по окончании тестирования.
Спасибо за статью. Весьма увлекательно и познавательно.
У меня так — Arduino Mini Pro (120р + От батареек может месяцы жить, от UPS — +- бесконечность) + DHT22 (температура-влажность) + еще датчики + EtherCard (для выхода в инет) +nRF24 (для связи с другими «удаленными» датчиками и контроллером котла). Все подключено к роутеру где крутится OpenWRT, в выходные напишу скриптик на PHP (который в роутере уже есть), который будет принимать данные с ардуинки и отсылать их куда-нибудь в инет, где уже будет писаться в MySQL с графиками и прочими плюшками.
Да, Arduino — моя мечта. Останавливает пока недостаток времени на освоение новой платформы. Но я еще до него доберусь!
Для большинства случаев вполне хватает чуть модифицированных примеров из ардуиновской оболочки или библиотек. Ну и хорошо бы уметь паять, т.к. на макетке оставлять кучу длиннючих проводов не очень хорошо.
А чего огород-то городить? Есть така халявна приблуда — TeamViewer http://www.teamviewer.com/ru/ . Работает, как лопата, проста и надежна, как лом. Схема проста до изумления. На удаленке запускаете сервак, на локале — клиента. И имеете такой квазиРДПконнект, но тока без выделенного айпишника ипрочих дополнительных накладных ништяков. Дальше — тварите, шо хатите )))