1. Техническая информация (datasheet) DS9490R -
тут
2. Что это такое? Это так называемый мастер ключ. Руки моего умного дома.
Если компьютер - это мозг, то адаптер DS9490R это именно руки, которым отдает приказы мозг и которыё "дергают за ниточки" датчики, котроллеры - отдавая команды и принимая данные.
Сегодня получил адаптер в руки.
Попытка его установить окончилась для моего Windows 7x64 крахом - послетали почти всей драйвера. Система назад не откатывалась. Восстановилась только после удаления установленного USB-драйвера.
Пошел шаманить на Ubuntu.
Начал
отсюда
Единственное, что поменял: качал по такой ссылке:
wget http://downloads.sourceforge.net/project/owfs/owfs/2.8p20/owfs-2.8p20.tar.gz
Вставляем DS9490R (мастер сети) 1-wire в USB разъем и в терминале вводим:
# dmesg
[15.534873] Driver for 1-wire Dallas network protocol.
[15.777030] usbcore: registered new interface driver DS9490R
[1553882.700959] w1_master_driver w1_bus_master1: Family 81 for 81.0000002d0f1d.39 is not registered.
|
Ставим пакеты для компиляции owfs:
# apt-get install automake autoconf autotools-dev gcc g++ libtool libusb-dev fuse-utils libfuse-dev swig python2.7-dev tcl8.4-dev php5-dev
|
Скачиваем и распаковываем owfs. Я брал самую последнюю версию, но у кого то с ней проблемы и советуют ставить 2.8p13:
# cd /usr/src
# wget http://downloads.sourceforge.net/project/owfs/owfs/2.8p20/owfs-2.8p20.tar.gz
# tar zxpf owfs-2.8p14.tar.gz
|
Переходим в директорию и вводим:
# cd owfs-2.8p20/
# ./configure
|
Будет много букв, но в конце должно быть примерно так:
Current configuration:
Deployment location: /opt/owfs
Compile-time options:
Caching is enabled
USB is enabled
I2C is enabled
HA7Net is enabled
W1 is enabled
Multithreading is enabled
Parallel port DS1410E is enabled
TAI8570 barometer is enabled
Thermocouple is enabled
Zeroconf/Bonjour is enabled
Debug-output is enabled
Profiling is DISABLED
Tracing memory allocation is DISABLED
1wire bus traffic reports is DISABLED
Module configuration:
owlib is enabled
owshell is enabled
owfs is enabled
owhttpd is enabled
owftpd is enabled
owserver is enabled
ownet is enabled
ownetlib is enabled
owtap is enabled
owmon is enabled
owcapi is enabled
swig is enabled
owperl is enabled
owphp is enabled
owpython is enabled
owtcl is enabled
|
Компилируем и устанавливаем OWFS:
Финальная стадия.
Создадим директорию для монтирования датчиков:
Проверим наличие нашего 1-Wire адаптера. OWFS поддерживает два типа мастера и с USB, и с COM портом. Будет выведен текущий список устройств USB, что-то вроде:
# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 04fa:2490 Dallas Semiconductor DS1490F 2-in-1 Fob, 1-Wire adapter
Bus 003 Device 002: ID 0458:003a KYE Systems Corp. (Mouse Systems) NetScroll+ Mini Traveler / Genius NetScroll 120
Bus 001 Device 004: ID 04e8:6761 Samsung Electronics Co., Ltd
|
Теперь мы знаем, наши адаптер найден, запускаем OWFS:
# /opt/owfs/bin/owfs --allow_other -u /var/1-wire/
DEFAULT: ow_usb_msg.c:(276) Opened USB DS9490 bus master at 2:3.
DEFAULT: ow_usb_cycle.c:(191) Set DS9490 2:3 unique id to 81 C5 86 30 00 00 00 C1
fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option
|
Программа запущена, теперь нам необходимо взглянуть на примонтированные 1-Wire датчики:
# ls -lah /var/1-wire
итого 4,0K
drwxr-xr-x 1 root root 8 2012-02-20 15:32 .
drwxr-xr-x 17 root root 4,0K 2012-02-17 19:06 ..
drwxrwxrwx 1 root root 8 2012-02-20 17:32 28.A34A8A030000
drwxrwxrwx 1 root root 8 2012-02-20 17:32 28.A7CD09030000
drwxrwxrwx 1 root root 8 2012-02-20 17:32 81.C58630000000
drwxr-xr-x 1 root root 8 2012-02-20 15:32 alarm
drwxr-xr-x 1 root root 8 2012-02-20 15:32 bus.0
drwxr-xr-x 1 root root 8 2012-02-20 15:32 settings
drwxrwxrwx 1 root root 8 2012-02-20 17:32 simultaneous
drwxr-xr-x 1 root root 8 2012-02-20 15:32 statistics
drwxr-xr-x 1 root root 32 2012-02-20 15:32 structure
drwxr-xr-x 1 root root 8 2012-02-20 15:32 system
drwxr-xr-x 1 root root 8 2012-02-20 15:32 uncached
|
Мы видим папки — 28.A34A8A030000 и 28.A7CD09030000. Это и есть температурные датчики DS18B20, а 28.A34A8A030000 и 28.A7CD09030000 уникальные идентификаторы устройств (навроде MAC адреса). Считаем температуру:
# cat /var/1-wire/28.A34A8A030000/temperature
22.4375
# cat /var/1-wire/28.A7CD09030000/temperature
22.3465
|
Чтобы датчика монтировались при старте системы в /etc/rc.local до строчки exit 0 пишем:
modprobe -a ds2490 &
/opt/owfs/bin/owfs --allow_other -u /var/1-wire &
|
OWFS, сам по себе, является Web-сервером. Запустим его:
/opt/owfs/bin/owserver -uall -p 3000
/opt/owfs/bin/owhttpd -s 3000 -p 3001
/opt/owfs/bin/owfs -s 3000 /var/1-wire/
|
Теперь мы можем зайти на него таким образом, наберем в браузере:
Результат:
Интерфейс Web-сервера owfs
|
owfs, помимо всего прочего, поддерживает множество сетей 1-wire. Вы можете использовать два и более управляющих элемента DS9490R, использовав одну сеть, например, для работы достаточно медленных температурных датчиков, а другую — для исполнительных механизмов.
Интерфейс, доступный через Интернет (на скриншоте), которым располагает owfs для считывания показаний устройств вполне пригоден для отладки и администрирования, но выглядит несколько пугающим для домочадцев, ведь в будующем я рассчитываю наращивать сеть (управляющими датчиками освещения, отопления, видеонаблюдения). Поэтому я решил воспользоваться библиотекой ownet из пакета owfs для считывания показаний из PHP-скриптов.
В планах: считывать датчики раз в 5 минут и записывать их в базу mysql. Неплохо было бы отображать какую-нибудь аналитику. Например, среднюю, максимальную и минимальную температуру за день и за сутки, перепад температуры в течение суток. Также неплохо было рисовать температурный график, думаю
RRDtool для этого подойдет. Сделать реагирование на события, например при достижении минимально допустимой температуры в помещении информировать меня по sms и email. Прикрутить датчики движения, тоже с информированием меня о вторжении. Поменять газовый котел в котором есть эл. управлением, например
«Vaillant», и рулить им из веб-интерфейса. И да, видеонаблюдение.
Ну, а пока протестируем ownet, создадим виртуальный хост в Apache и кинем туда простейший скриптик:
<?php
require "/opt/owfs/bin/ownet.php";
$ow=new OWNet("tcp://localhost:3000");
$temp1 = $ow->read("28.A34A8A030000/temperature");
$temp2 = $ow->read("28.A7CD09030000/temperature");
echo "small $temp2<br>";
echo "big $temp1";
unset($ow);
?>
|
Проверим:
Результат:
Результат работы скрипта
|
Наброски сделаны и теперь нужно сваять нормальный, масштабируемый интерфейс.
Спасибо получилось с первого раза, осталось поменять адрес сервера
ОтветитьУдалить