7 заметок с тегом

неглупый дом

«Неглупый дом»: температура в прихожей

Предыдущие мои покупки съели весь бюджет самодельного «умного дома» на пару месяцев вперёд, поэтому на этот раз я позволил себе совсем скромную покупку — подумал, раз у меня всё равно в прихожей стоит смартбук с Линуксом, почему бы не приделать к нему термометр и не мерять им температуру?

Тем более, что датчик от корпуса греться не будет — корпус пластиковый, да и сам смартбук не нагревается. Заказал в Сингапуре сенсор TEMPer за триста рублей, сегодня он пришёл, выглядит гармонично:

TEMPer (46.78КиБ)

Вообще, кто не помнит, в роли «сердца» моего «умного дома» у меня тошибовский смартбук, на котором когда-то жил Андроид, а теперь стоит Лубунту. Процессор там ARM, так что нужны специальные драйвера.

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

sudo aptitude install libusb-dev libusb-1.0-0
wget -q http://raw.github.com/padelt/pcsensor-temper/master/src/pcsensor.c
wget -q http://raw.github.com/padelt/pcsensor-temper/master/src/Makefile
make
wget -q https://raw.github.com/padelt/pcsensor-temper/master/udev/99-tempsensor.rules
sudo cp 99-tempsensor.rules /etc/udev/rules.d
sudo cp pcsensor /usr/local/bin/

Осталось только добавить небольшую команду в крон и датчик будет отсылать мне свои показания:

/usr/bin/wget -O/dev/null -q "http://sample.org/api/cmd.php?t=$(/usr/local/bin/pcsensor | cut -d' ' -f5)"

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

Температура в прихожей (33.23КиБ)
 13 комментариев    25   2013   неглупый дом

«Неглупый дом»: входная дверь

Разобрался я всё-таки со входной дверью. На часах три часа ночи, картинка за дверью сейчас выглядит вот так:

Входная дверь (19.92КиБ)

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

Вырезал ножом подходящую нишу, запихал внутрь карточку вместе с переходником:

Препарированный видеоглазок (45.56КиБ)

Отыскать паяльник всё-таки пришлось — в процессе прорезания ниши, выдрал провода динамика. В остальном обошлось без приключений.

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

Вторую точку к смартбуку я добавил через утилиту wpa_cli по инструкции, найденной в интернете. Скрипт для заливки данных получился на этот раз развесистым:

# переключаюсь на точку доступа в карте
/sbin/wpa_cli select_network 1
/sbin/dhclient wlan0

# текущая дата и временный файл
DATE=$(/bin/date +%d-%m-%Y)
TEMP=$(/bin/tempfile) || exit
trap "/bin/rm -f -- $TEMP" exit

/usr/bin/touch /tmp/eye.current

# смотрим снимки за сегодня, выбираем первый, который ещё не заливали, скачиваем
for file in $(/usr/bin/curl -s "http://eye/command.cgi?op=100&DIR=/$DATE" | /usr/bin/awk -F, "/$DATE/ {print \$2}"); do
    echo $DATE/$file
done |
/usr/bin/diff /tmp/eye.current - | /usr/bin/awk '/^>/ {print $2}' |
/usr/bin/head -1 | /usr/bin/tee -a /tmp/eye.current | {
    read FILE && /usr/bin/curl -s "http://eye/$FILE" > "$TEMP"
}

# переключаемся обратно на интернет
/sbin/wpa_cli select_network 0
/sbin/dhclient wlan0

# если с карты что-то слили, заливаем это на сервер
[ -s "$TEMP" ] && /usr/bin/curl -F p=@"$TEMP" http://example.org/api/pict.php

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

Если кому интересно, переходник использовал китайский, купил за 160 рублей на И-бэе, карточку взял тошибовскую, Флейэйр на 16ГБ, покупал за 1700 рублей там же.

 16 комментариев    21   2013   неглупый дом

Ещё немного про «неглупый дом»

Жена попросила добавить время на обновляющиеся фото прихожей нашего доморощенного «умного дома». Мне не жалко, я дописал.

Заодно устранил переодическое зависание команды получающий фото с камеры и добавил обновление скриншота каждый 15 секунд (теперь программа делает три фото каждый свой запуск из крона):

#!/bin/bash

TEMP=$(/bin/tempfile) || exit
trap "/bin/rm -f -- $TEMP" exit

for i in {0..2}; do
    # убиваем зависшие процессы
    /usr/bin/killall streamer 2>&-

    # снимаем скриншот
    /usr/bin/streamer -j 85 -o "$TEMP" -f jpeg -s 640x480 2>&- || exit

    # повышаем ему яркость
    /usr/bin/mogrify -modulate 300,100 "$TEMP"

    # печатаем дату
    TIME=$(/bin/date +'%d.%m.%Y %H:%M:%S')
    /usr/bin/mogrify -pointsize 24 -fill white -gravity SouthWest -draw 'text 5,5 "'"$TIME"'"' "$TEMP"

    # льём на сервер
    /usr/bin/curl -F p=@"$TEMP" http://example.org/api/pict.php >&- 2>&-

    # спим 15 секунд
    sleep 15
done

Вот как стало выглядеть (это небольшой кусочек, всего там пока шесть квадратов, поскольку я лимит расходов исчерпал ещё в прошлом месяце, нового ничего не заказывал):

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

Вообще, у меня в ближайших планах было присоединить к этой системе видеоглазок (я уже пару месяцев использую «Falcon Eye FE-VE02»), у него нет никакого интерфейса, но есть карта памяти, правда, МикроСД.

План у меня был такой — купить карту СД с вай-фай точкой на борту, через китайский переходник соединить её с разъёмом МикроСД, соединяться смартбуком, который является мозгом моего «умного дома», с картой и забирать фотки гостей.

Переходник и карта (164.92КиБ)

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

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

Новая вай-фай точка (96.36КиБ)
 2 комментария    25   2013   неглупый дом

Неглупый дом-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 комментариев    31   2013   неглупый дом

Неглупый Дом-2

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

Я чуть ниже писал про свой «неглупый дом», сейчас добрался до дома и допрограммировал. Теперь немного о том как всё устроено и что добавилось.

Во-первых, появилась возможность смотреть что происходит в прихожей. Там теперь стоит Тошиба АйСи-100, смартбук, на котором сейчас Лубунту — он забирает из интернета команды управления и отправляет каждую минуту обратно скриншот со своей камеры следующей командой:

streamer -c /dev/video0 -b 2 -o /dev/stdout -f jpeg 2>&- | curl -F p=@- http://example.org/home/send-picture.php >&- 2>&-

Во-вторых, появилась возможность настраивать температуру на кондиционере, команды складываются в файл на сервере, а упомянутый смартбук время от времени забирает их оттуда по «крону» несложным скриптом:

for line in $(curl -q http://example.org/home/getcommands.php 2>&-); do
    if [[ "$line" =~ ^[a-z0-9-]+$ ]]; then
        cmd=$(awk "/$line/ {print \$2; exit}" air-hall.txt)
    else
        cmd=
    fi

    if [ -n "$cmd" ]; then
       { echo "$cmd"; sleep 1; } | /usr/bin/telnet 10.0.1.13 4998 2>&- >&-
    fi
done

В файле air-hall.txt находятся соответствия команд подаваемых сервером, командам кондиционера. Очень удачно совпало, что на каждую температуру у моего кондиционера есть отдельная команда — я могу точно выставить ту температуру, которую хочу.

На адресе 10.0.1.13 (это статический АйПи) находится небольшая коробочка, преобразующая поданные команды в инфракрасный поток, излучатель коробочки лежит как раз под кондиционером.

На следующий день, в субботу переписал код с тяп-ляп на простенькие модули.

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

 2 комментария    21   2013   неглупый дом

Неглупый дом

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

Если кому интересно, то интерфейс моего самодельного «умного дома» на скриншоте выше. Доступен из любой точки мира (если знать урл и пароль).

Пока ничего толком нет, но скоро появятся: датчики утечек воды в ванной и туалете (плюс датчики температуры там же), датчик вибрации стиральной машины, датчики температуры и влажности в остальных комнатах, управление температурным режимом кондиционера.

 21 комментарий    18   2013   неглупый дом

AR01-220 IP20

Какое-то время назад в туалете начал появляться стойкий запах сигаретного дыма. Жена и кот были сразу вычеркнуты из списка подозреваемых и вскоре выяснилось, что этот тошнотворный запах просачивается из вентиляции. Видимо, какой-то сосед курит у себя в туалете, а прихоти вентиляции доносят этот мусорный ветер до нашего туалета.

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

Датчик (74.76КиБ)

В общем, задумался я об автоматизации процесса заботы о здоровье. Китай, как не странно, меня не выручил — найденная масса датчиков оттуда, либо просто бессильно пищит на дым, либо обладает оптореле на что-нибудь низковольтное, а у меня вертилятор, питающийся от 220В.

Нашёл пару российских фирм, выпускающее то, что мне нужно — датчик сигаретного дыма с регулировкой чувствительности, который умел бы управлять устройствами, питающимися от 220В. Первая фирма не работает с физическими лицами, потому отвалилась, вторая НПП «Эконикс» проблему в этом не увидела и я банковским переводом в 5,5 тысяч оплатил средство сделать жизнь лучше. Доставка в Казань обошлась всего в 250 рублей.

Датчик питается от сети в 220В, что очень хорошо — не нужен отдельный блок питания, крепится на ДИН-рейку (у меня сейчас просто лежит сверху на водонагревателе, поближе к вентиляции) и имеет два управляющих выхода — неинтересное мне оптореле (100В, 0,15А) и «механическая» релюха (220В, 10А), которую я подрядил на управление вентилятором.

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

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

 42 комментария    93   2013   гаджет   неглупый дом