Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Неглупый дом-3

Неглупый дом (63.64КиБ)

Количество датчиков моего самодельного «умного дома» потихоньку увеличивается.

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

Вчера, ура, приехали ко мне два устройства фирмы Supermechanical, которые умеют передавать температуру, свою ориентацию в пространстве, уровень вибрации и (с дополнительным датчиком) нет ли воды на контролируемой поверхности по вай-фаю. Меня, конечно, более всего последний датчик и интересовал.

В коробке он лежит в небольшом отделении с надписью «IS IT WET?». Питание — от двух «мизинчиковых» батареек, либо от юэсби-зарядки (в комплекте нет, но можно купить любой «китай» с подходящим током).

Датчик сырости (62.36КиБ)

Настаиваются устройства элементарно — на корпусе написан адрес сайта, куда надо зайти для настройки, там перечислены простые шаги, которые надо сделать, всё с картинками, ребёнок справится. Собираемые датчиками данные отправляются на другой сайт, где их можно посмотреть через интернет.

Неприятно, что нет какого-либо АПИ, чтобы эту информацию забирать. Правда, на форуме ребята приводят способ получить её в удобоваримом виде — достаточно залогиниться и данные каждого устройства (у меня их два) можно будет забрать в формате 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, значит есть и Джаваскрипт, который его читает, посмотрел код страницы, сразу всё встало на свои места.

19 комментариев
Bagir 2013

Не известно же что будет с сайтом этим через год.

Я бы на твоем месте уже сейчас бы запустил сниффер и начал разбирать протокол. Если данные идут по какому нибудь http, то можно в dns/hosts прописать алиас домена на 127.0.0.1 (или какой другой сервер в локальной сети) и будет счастье. Предполагаю, что устройство делает POST данных в формате JSON — по крайней мере это было бы логично.

Вот с https чуть-чуть сложнее будет.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Bagir:

Неизвестно, конечно. Только зачем решать проблему, которой нет?

Vladimir Moskva (fulc.ru) 2013

У тебя узкое место получается: если протечет вода, из-за этого отключится электричество, то датчик не сможет передать данные на сервер без работающего вайфая. А если даже вайфай-роутер будет работать от ИБП, может сломаться интернет («подъездный» роутер выключится, например, или провод перегорит в случае пожара). А если бы передал напрямую на ноутбук, ноутбук смог бы отправить смс.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для fulc.ru:

Датчик не позволяет напрямую на роутер передать, но:

1) что это за кошмарный потоп от которого всё так разом накроется?
2) лучше так, чем вовсе никак

Евгений Степанищев (bolknote.ru) 2013

Комментарий для fulc.ru:

На ноут то есть, а не роутер.

Mopsicus (mopsicus.ru) 2013

Напиши поподробней про самодельный умный дом. Как что подключал, где покупал итд. Интересно.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для mopsicus.ru:

Я потихоньку и пишу, это уже третий пост на эту тему:
http://bolknote.ru/all/4036/
http://bolknote.ru/all/4037/

Vladimir Moskva (fulc.ru) 2013

Комментарий для Евгения Степанищева:

что это за кошмарный потоп от которого всё так разом накроется?

Не все разом, а либо электричество, либо интернет. Прорвет трубу около розетки, и пробки выбьет раньше, чем вода до датчика дойдет, например.

Я к тому, что ты специально делал так, чтобы при возникновении чрезвычайной ситуации смс точно отправилась независимо от того, есть ли интернет.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для fulc.ru:

Прорвет трубу около розетки

У меня нет ни одной трубы около розетки :) Честно сказать, я ни разу не видел, чтобы так делали.

Я к тому, что ты специально делал так, чтобы при возникновении чрезвычайной ситуации смс точно отправилась независимо от того, есть ли интернет.

Не получится — не умеют эти устройства так. Разве что заменить DNS, расколоть протокол и собирать с них информацию напрямую. Может и займусь, когда все датчики придут.

zg (zg.livejournal.com) 2013

Комментарий для Евгения Степанищева:

У меня нет ни одной трубы около розетки

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

Sergey Cheban (sergey-cheban.livejournal.com) 2013

Как-то время работы от батареек (всего три месяца) не радует. Неужели нельзя растянуть на подольше?

Евгений Степанищев (bolknote.ru) 2013

Комментарий для zg.livejournal.com:

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

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

Евгений Степанищев (bolknote.ru) 2013

Комментарий для sergey-cheban.livejournal.com:

How can I extend the battery life of my Twine? Twine currently runs 60 days on fresh alkaline AAA batteries (when running firmware 2.0 and radio May 24 2013), but if you want to extend that time, there are two things you can do:

  1. Set all your rules at once. Changing rules often requires more frequent Twine updates.
  2. When you don’t need Twine to be portable, plug it into a micro USB charger. Just about any micro USB power supply will work. This won’t charge Twine, but it will stop it from using battery power.

http://help.supermechanical.com/kb/using-twine/power-frequently-asked-questions

anleal 2013

Комментарий для Евгения Степанищева:

Про розетки и трубы рядом, недавно соседка умудрилась так удачно затопить что лилось плавно под обоями. По чуть чуть, но во всю стену практически. В результате обои плавно и поотклеивались.

На мой взгляд коментатор выше верно подметил про зависимость от левого сайта, ведь проблемы могут быть с кучей нюансов, траблы самого сайта, траблы днс и т. п.
Я понимаю что завязка на интернет сама по себе не выглядит шибко надёжной, но минимизировать количество звеньев между вами и системой кмк стоит.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для anleal:

Стоит, когда это возможно. У этих устройств нет такой возможности.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для anleal:

Т. е. я не говорю, что это плохая идея, просто с этим устройством это невозможно. Хотя такое пожелание от пользователей есть: http://community.supermechanical.com/index.php?p=/discussion/198/accessing-it-locally-#Item_15

oldTV 2013

Комментарий для Евгения Степанищева:

Евгений, а можно пояснений?

  1. На картине 6 секций, 5 с температурами. Я так понимаю — одно устройства Twine и 5 сенсоров? Так? Можно с ценами прям, что покупали и как подключали?
  2. почему выбор на twine?
  3. можно более подробные фотки по установке и подключению сенсоров — прям пошагово
Руслан 2013

Комментарий для Евгения Степанищева:

Планирую в новой квартире тоже датчиков забабахать все случае жизни, так что спасибо за интересные заметки. Думаю в качестве сервера умного дома использовать вот такую штуку 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.

Евгений Степанищев (bolknote.ru) 2013

Комментарий для Руслан:

Я ещё расскажу как-нибудь про остальные датчики, только руки дойдут.