Неглупый дом-3
Количество датчиков моего самодельного «умного дома» потихоньку увеличивается.
Потихоньку, потому что я выделил на это ежемесячную небольшую сумму и стараюсь укладываться в неё, а так как мне не хочется возиться со всякими там Ардуно, я беру более-менее готовые модули, которые, к тому же, умеют работать с вай-фаем.
Вчера, ура, приехали ко мне два устройства фирмы Supermechanical, которые умеют передавать температуру, свою ориентацию в пространстве, уровень вибрации и (с дополнительным датчиком) нет ли воды на контролируемой поверхности по вай-фаю. Меня, конечно, более всего последний датчик и интересовал.
В коробке он лежит в небольшом отделении с надписью «IS IT WET?». Питание — от двух «мизинчиковых» батареек, либо от юэсби-зарядки (в комплекте нет, но можно купить любой «китай» с подходящим током).
Настаиваются устройства элементарно — на корпусе написан адрес сайта, куда надо зайти для настройки, там перечислены простые шаги, которые надо сделать, всё с картинками, ребёнок справится. Собираемые датчиками данные отправляются на другой сайт, где их можно посмотреть через интернет.
Неприятно, что нет какого-либо АПИ, чтобы эту информацию забирать. Правда, на форуме ребята приводят способ получить её в удобоваримом виде — достаточно залогиниться и данные каждого устройства (у меня их два) можно будет забрать в формате JSON.
Написал башовский скрипт на свой компьютер «умного дома» (в его роли — смартбук с Лубунтой на борту):
#!/bin/bash
COOK=`mktemp /tmp/sup.XXXXXXX`
SUP1=`mktemp /tmp/sup.XXXXXXX`
# очищаем временные файлы на выходе
function Remove {
rm -f "$COOK" "$SUP1"
}
trap Remove EXIT
# логинимся на сайт, куки запоминаем
wget --quiet -O /dev/null --keep-session-cookies --save-cookies "$COOK" \
--no-check-certificate --post-data="email=EMAIL&password=PASSWORD" \
https://twine.cc/login || exit 1
# забираем данные в формате JSON
wget --quiet -O "$SUP1" --load-cookies "$COOK" --no-check-certificate \
https://twine.cc/YOURID/rt?cached=1 || exit 1
# отправляем данные на сайт моего «умного дома»
curl -F p=@"$SUP1" http://example.org/someapi/dtm.php?num=1 >&- 2>&-
Как видите, ничего особо сложного, правда с возвращаемыми данными пришлось ещё разбираться, к счастью, раз есть JSON, значит есть и Джаваскрипт, который его читает, посмотрел код страницы, сразу всё встало на свои места.
Не известно же что будет с сайтом этим через год.
Я бы на твоем месте уже сейчас бы запустил сниффер и начал разбирать протокол. Если данные идут по какому нибудь http, то можно в dns/hosts прописать алиас домена на 127.0.0.1 (или какой другой сервер в локальной сети) и будет счастье. Предполагаю, что устройство делает POST данных в формате JSON — по крайней мере это было бы логично.
Вот с https чуть-чуть сложнее будет.
Комментарий для Bagir:
Неизвестно, конечно. Только зачем решать проблему, которой нет?
У тебя узкое место получается: если протечет вода, из-за этого отключится электричество, то датчик не сможет передать данные на сервер без работающего вайфая. А если даже вайфай-роутер будет работать от ИБП, может сломаться интернет («подъездный» роутер выключится, например, или провод перегорит в случае пожара). А если бы передал напрямую на ноутбук, ноутбук смог бы отправить смс.
Комментарий для fulc.ru:
Датчик не позволяет напрямую на роутер передать, но:
1) что это за кошмарный потоп от которого всё так разом накроется?
2) лучше так, чем вовсе никак
Комментарий для fulc.ru:
На ноут то есть, а не роутер.
Напиши поподробней про самодельный умный дом. Как что подключал, где покупал итд. Интересно.
Комментарий для mopsicus.ru:
Я потихоньку и пишу, это уже третий пост на эту тему:
http://bolknote.ru/all/4036/
http://bolknote.ru/all/4037/
Комментарий для Евгения Степанищева:
Не все разом, а либо электричество, либо интернет. Прорвет трубу около розетки, и пробки выбьет раньше, чем вода до датчика дойдет, например.
Я к тому, что ты специально делал так, чтобы при возникновении чрезвычайной ситуации смс точно отправилась независимо от того, есть ли интернет.
Комментарий для fulc.ru:
У меня нет ни одной трубы около розетки :) Честно сказать, я ни разу не видел, чтобы так делали.
Не получится — не умеют эти устройства так. Разве что заменить DNS, расколоть протокол и собирать с них информацию напрямую. Может и займусь, когда все датчики придут.
Комментарий для Евгения Степанищева:
так розеток много, выключатели, просто соединение клеммником. что-то рядом с трубой да будет и пробки выбьет. даже не обязательно рядом.
Как-то время работы от батареек (всего три месяца) не радует. Неужели нельзя растянуть на подольше?
Комментарий для zg.livejournal.com:
У меня дома нет ничего рядом с трубой. Трубы вообще большей частью в коробах или в шкафу под мойкой.
Комментарий для sergey-cheban.livejournal.com:
http://help.supermechanical.com/kb/using-twine/power-frequently-asked-questions
Комментарий для Евгения Степанищева:
Про розетки и трубы рядом, недавно соседка умудрилась так удачно затопить что лилось плавно под обоями. По чуть чуть, но во всю стену практически. В результате обои плавно и поотклеивались.
На мой взгляд коментатор выше верно подметил про зависимость от левого сайта, ведь проблемы могут быть с кучей нюансов, траблы самого сайта, траблы днс и т. п.
Я понимаю что завязка на интернет сама по себе не выглядит шибко надёжной, но минимизировать количество звеньев между вами и системой кмк стоит.
Комментарий для anleal:
Стоит, когда это возможно. У этих устройств нет такой возможности.
Комментарий для anleal:
Т. е. я не говорю, что это плохая идея, просто с этим устройством это невозможно. Хотя такое пожелание от пользователей есть: http://community.supermechanical.com/index.php?p=/discussion/198/accessing-it-locally-#Item_15
Комментарий для Евгения Степанищева:
Евгений, а можно пояснений?
Комментарий для Евгения Степанищева:
Планирую в новой квартире тоже датчиков забабахать все случае жизни, так что спасибо за интересные заметки. Думаю в качестве сервера умного дома использовать вот такую штуку http://dx.com/p/tronsmart-mk808-android-4-1-1-dual-core-mini-pc-google-tv-player-w-1gb-ram-8gb-rom-black-232824 с установленной ubuntu (picuntu если говорить точнее). Довольно компактная штука, работает по wi-fi, можно спрятать куда угодно и управлять по ssh.
Комментарий для Руслан:
Я ещё расскажу как-нибудь про остальные датчики, только руки дойдут.