Опрос


Что для Вас Умный Дом?


Результаты

Управление освещением. Исполнительный модуль на базе ключа DS2405P

24/11/2008 16:24:04

Создавая систему домашней автоматизации, я задался вопросом: можно ли с помощью 1-wire чем-то управлять? Можно! Компания Maxim/Dallas выпускает большое количество компонентов, применимых для решения задач управления. Но нас, прежде всего, интересуют так называемые адресуемые ключи, на которых можно строить устройства коммутации и исполнительные механизмы. В номенклатуре Dallas есть такие элементы как DS2405, DS2406P, DS2408P.

DS2405 - 1-канальный ключ (в текущий момент снят с производства, а в качестве замены рекомендуется использовать 2-канальный DS2413)
DS2406P - 2-канальный ключ
DS2408S - 8-канальный ключ

Практически все задачи, связанные с исполнительными устройствами и дискретными датчиками возможно реализовать с помощью адресуемых ключей. Включение-выключение света в любых комбинациях, управление отоплением, вентиляцией, опрос любых датчиков, в том числе охранных, включение электроподогрева крыльца для стаивания льда или снега, аварийное отключение воды, в случае протечки в котельной, эмитация присутствия, когда никого нет дома. Короче говоря, практически все, кроме таких специфических вещей, как управление по 0-10В или регулятор мощности нагрузки (диммер). Это тоже доступно через компоненты 1-wire, но с помощью других элементов.
Первый исполнительный механизм, который был реализован на технологии 1-wire был механизм включения/выключения уличного освещения на самом дешевом и примитивном элементе DS2405 (Подробнее о уличном освещении). Потребляемая мощность лампы порядка 250Вт, а в выходные, сами понимаете, не всегда удается выключить лампу вовремя.

Как видно на фотографии схемотехника устройства предельно проста. Плата смонтирована в стандартную телефонную розетку. RJ-11 разъемы используются для входа и выхода 1-wire интерфейса и питания (необходимое для работы ключа). Питание (+12В) я взял с того же компьютера. Собрать модуль самостоятельно нетрудно для людей, умеющих работать паяльником, знающих закон Ома и обладающими некоторыми навыками изготовления печатных плат. А что делать остальным? К счатью, выход есть.

По многочисленным просьбам народа в настоящий момент на сайте можно купить готовые 2-канальные 1-wire модули на более совершенном компоненте DS2413. Все модули проверены и полностью готовы к работе для управления любым оборудованием, работающим при напряжении 220В. Каждый модуль имеет 2 канала, а значит одним модулем можно управлять двумя различными приборами.

Управление ключом с использованием сервера owfs, о котором я писал, весьма простое.

Посредством командной строки:
Включение
# echo 1 > /mnt/1wire/05.D78B2C000000/PIO
Выключение
# echo 0 > /mnt/1wire/05.D78B2C000000/PIO

В данном примере 05.D78B2C000000 - постоянный и уникальный адрес устройства. Префикс 05 имеют все ключи на базе DS2405

Также можно управлять компонентом через стандартный web-интерфейс сервера owfs, но я для себя написал программу на PHP с помощью которой можно управлять компонентом не только из командной строки, но и через домашний Web-сайт.
Например так:
http://my_host/key.php?key_label=ext_light&key_pio=1
или так:

В своей системе управления каждому ключу я присвоил собственное имя. В указанном выше примере ext_light - уличное освещение. key_pio=1 - включить. Исходник очень простой и использует стандартную библиотеку OWNet, которая входит в состав пакета owfs.

<?

if(!function_exists('bcadd'))
{
	if (file_exists("/opt/owfs/bin/bcadd.php"))
	require "/opt/owfs/bin/bcadd.php";
	elseif (file_exists("bcadd.php"))
	require "bcadd.php";
	else
	die("File 'bcadd.php' is not found.");
}
                    
//check to make sure the file exists
if(file_exists("/opt/owfs/bin/ownet.php"))
require "/opt/owfs/bin/ownet.php";
elseif (file_exists("ownet.php"))
require "ownet.php";
else
die("File 'ownet.php' is not found.");

$ow=new OWNet("tcp://localhost:3000");

function key_sw($key_label = "", $key_pio = 0, $key_ch = "")
{
	global $ow;

	$keys_id = get_id_cl("keys", 1);
	// Функция выводит реальный адрес устройства в зависимости от псевдо-имени (из моей БД)
	$key_addr = show_list($keys_id, "#key_addr#", "", 1, "key_label='$key_label'", 1);
	$key_tmpID = show_list($keys_id, "#tmpID#", "", 1, "key_label='$key_label'", 1);

	if ( empty($key_ch) )
	$key_ch = "PIO";
	else
	$key_ch = "PIO.".$key_ch;

	$cpio = $ow->get("$key_addr/$key_ch");
	if ( $cpio != $key_pio )
	{
		$ow->set("$key_addr/$key_ch", $key_pio);
		// Запись состояния устройства в БД (для вывода информации на домашнем сайте)
		write_list($keys_id, "key_pio='$key_pio'", "key_label='$key_label'");
		// Запись события в журнал
		write_list(get_id_cl("keys_journal", 1), "SYSDATE(), $key_tmpID, '$key_pio'");
	}

}

if ( !empty($_REQUEST['key_label']) )
key_sw($_REQUEST['key_label'], $_REQUEST['key_pio'], $_REQUEST['key_ch']);

?>

Конечно, у читателя может возникнуть вопрос - зачем такие сложности, если проще использовать фотореле. Отвечу на это просто. А что если никого нет дома? Зачем включать освещение? Достаточно дать компьютеру знать состояние сигнализации, чтобы он принял решение включать, когда это нужно и не включать, когда это не нужно. Это только простейший пример, ведь алгоритмы могут быть разные. Фотореле, увы, не обладает интеллектом. Экономия и комфорт - две вещи, которые должны ставиться во главу угла, когда речь идет об автоматизации дома.

Подобным образом на базе 1-wire можно реализовать простейшее управлением освещением или любой другой нагрузкой. В данном примере освещение включается посредством команды. А как быть, если нужно включать лампочку или любое другое устройство не только по команде с компьютера, но и с помощью обычного выключателя (кнопки) ?  Ничего сложного! Только вместо компонента DS2405 лучше применить двухканальный DS2406P. Один канал используется для управления нагрузкой, а другой для определения состояния выключателя (кнопки). Работает такой элемент достаточно надежно, а главное быстро, несмотря на специфическую программную обработку. Подробнее об использовании подобного 1-wire элемента можно прочитать в статье "Управление водоочисткой на базе DS2406P"

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:



Сортировка комментариев: Последние сверху | Первые сверху

2015-12-04 11:43:05 | Andrey_B
Владимир, а вы лампочку не пробовали менять?
3кВт - приличная нагрузка. При включении мощных потребителей могут происходить подобные явления. Но КЛЛ обычно не моргают за счет своей схемотехники.


2015-12-04 11:42:28 | Владимир
Пошел я на форум, вопросы появились


2015-12-04 11:32:20 | Владимир
нагрузки разнесены, тоесть лампа через модуль напрямую, а 3квт идет через контактор который срабатывает от модуля, тоесть модуль не пропускает 3 квт он лиш запитывает контактор который уже от автомата(другого) передает нагрузку. И такие лампочки почему то мерцают иногда, не менял, но думаю результат будет тот же


2015-12-04 04:09:42 | Владимир
Андрей, нет, с электрикой все нормально, 240 вольт, лампочка 15 ватная на нее сечение в 1.5 квадрата, на котел в 2.5 квадрата. А почему это нормально?


2015-12-03 16:58:52 | Andrey_B
Владимир, учитывая мощность нагрузки, это нормально. И автоматика или контактор тут никакой роли не играют. Больше играют роль напряжение в сети (оно не пониженное?) и сечение проводов к потребителям.


2015-12-03 09:55:03 | Владимир
Здравствуйте. запитал от этого модуля через контактор 3квт котел на машине и освещение (на прямую от модуля), на автомате от которого подана фаза на модуль висит ещё станция для подачи воды. при включении или отключении котла/станции моргает свет, подскажите как бороться. Дело скорей всего в том что лампа стоит энергосберегающая


2013-12-04 11:54:24 | Andrey_B
Ник, это "уши" CMS, которую я использовал раньше. Сейчас я использую собственную CMS, которая входит в состав демо-интерфейса.


2013-12-02 13:44:23 | Ник
Поясните пожалуйста, что выполняется вот здесь:
$keys_id = get_id_cl("keys", 1);
$key_addr = show_list($keys_id, "key_addr", "", 1, "key_label='$key_label'", 1);
$key_tmpID = show_list($keys_id, "tmpID", "", 1, "key_label='$key_label'", 1);
Что такое get_id_cl и show_list? Это функции? Тогда где они находятся?


2012-10-19 23:03:35 | Andrey_B
Роман, отвечу по пунктам.
1. Соединять DS9490R и модуль можно любым _прямым_ кабелем. Дело в том, что стандартный телефонный патч-корд "перевертыш". Им подключать модуль нельзя. Нужен именно прямой патч-корд. Такой можно изготовить самостоятельно или спросить в магазине.
2. Нагрузка = лампочка. Модуль выполняет роль управляемого выключателя. Представьте себе электрическую цепь с обыкновенным выключателем. А затем вместо выключателя представьте модуль. Вот таким образом и подключаются к нему лампочки.
3. DS18B20 питается в диапазоне напряжений 3.3-5.5В. 12В подавать на DS18B20 нельзя. На шине должна быть либо отдельная линия питания 12В, либо DS18B20 должны оснащаться "обвязкой" (преобразователем питания 12В->5В)
4. Размещать модуль можно в любом месте. Я для 1-wire использую кабель UTP/FTP. В нем достаточно проводов, чтобы подать любое питание.


2012-10-18 18:48:25 | Роман
Андрей, вечер добрый!
Спасибо вам за ресурс, за проделанную работу и выложенный материал. Это впечатляет!
У меня есть вопрос( я честно несколько раз прочитал /www.ab-log.ru/smart-house/1-wire-modules/2ch-module) но так и не понял нескольких вещей:
с помощью DS9490 подключаем по тел.кабель 1W-2CH-MOD13 к компьютеру - это понятно.
Конкретная нагрузка подключается к колодке - ясно (как вы писали - либо через питание с компа, либо через блок питания). А как связать 1W-2CH-MOD13 с , например, лампочкой? Вопрос может глупый, но правда не понимаю.. и ещё Допустим я все это дело реализую на люстре кухни.. 1W-2CH-MOD13 ещё можно разместить в месте крепление люстры, но как к нему подать питание там.. Либо 1W-2CH-MOD13 надо размещать где то возле автомата откуда разводиться вся электрика и там коммутировать его.
Либо (по схеме) - 12В подается прям на шину данных 1-wire, а кокого будет от этого другим устройствам, например DS18B20?
Разъясните пожалуйста.


2012-02-18 15:47:57 | Andrey_B
youtoo, вы, вероятно, добавили описанные команды после строчки
exit 0
Так вот эту строчку нужно либо убрать, либо закомментировать.


2012-02-17 21:32:41 | youtoo
А куда это прописать, чтобы запускалось автозапуском:
/opt/owfs/bin/owserver -uall -p 3000
/opt/owfs/bin/owhttpd -s 3000 -p 3001
/opt/owfs/bin/owfs -s 3000 /var/1-wire/
Руками запуская эти команды в терминале и все работает до перезагрузки, а если прописываю в /etc/rc.local то не запускается. Приходится опять ручками толкать. Хотя добавленная строчка туда же /opt/owfs/bin/owfs --allow_other -uall /var/1-wire & успешно монтирует устройства при старте системы.


2012-02-15 00:40:16 | Andrey_B
Павел, попробуйте задать этот вопрос на нашем форуме. Там обитает много народа, который в курсе где что взять, если таковое существует.


2012-02-14 22:46:53 | Павел_А
Andrey_B, спасибо за ответ. Я не могу найти такую железку в виде готового устройства. С паяльником я к сожалению не дружу и сам его собрать не могу. Не могли бы вы дать ссылку, где можно посмотреть?


2012-02-13 16:30:03 | Andrey_B
Павел, любое управляемое устройство можно разделить как бы на две части - интерфейсную и силовую. Интерфейсная часть - это 1-wire, Ethernet, CAN, RS232 и другие стандарты, шины и технологии передачи данных. А вот силовая часть у них одинаковая - это, если мы говорим об управлении нагрузками, механическое или твердотельное/электронное реле (симистор+оптрон). Мощность управляемой нагрузки зависит от того, как выполнена силовая часть. Можно использовать мощные реле или мощные симисторы с большими радиаторами. То есть нет никакой сложности сделать такую силовую часть. Отвечая на ваш вопрос, подобные устройства конечно есть.


2012-02-13 15:39:39 | Павел_А
Здравствуйте! Подскажите, есть ли подобные устройства, но с возможностью управления нагрузкой до 1.5-2.5 КВт?


2011-11-27 11:19:57 | Andrey_B
Сергей, причин может быть много от неправильной схемы устройства, до устаревшей версии owfs.
Проверьте схемотехнику и установите последнюю версию owfs.


2011-11-27 02:32:33 | Сергей
Andrey_B, здравствуйте. Возникла очень странная проблема. Пытаюсь переключить датчик в положение "on" echo 1 > /mnt/1wire/12.4A8A80000000/PIO.A, но ничего не происходит. При считывании cat /mnt/1wire/12.4A8A80000000/PIO.A выводит "0" (т.е.) выключено. Как включить?:)


2011-11-19 00:49:43 | Andrey_B
Сергей, большая черная деталь - это симистор BT138 ;)


2011-11-19 00:38:23 | Сергей
Andrey_B, а вы бы не могли выложить схему и номенклатуру компонентов (из наменклотуры хотя бы для силового ключа? (самая большая черная деталь на плате))


2011-11-12 04:19:25 | bycter
Andrey_B, да, спасибо. правда удобнее было бы сразу в тексте


2011-11-11 17:37:17 | Andrey_B
bycter, принципиальную схему можно найти в Интернете, например на дружественном сайте benuks.ru


2011-11-11 12:11:28 | bycter
возможно ли увидеть принципиальную схему устройства? а то у вас получается подробно рассказать, но без подробностей.


2011-05-29 22:37:54 | Andrey_B
Oleg, при использовании DS18B20 с паразитным питанием, VDD должна соединяться в Ground. Об этом написано и в Datasheet к датчику. Иначе 85C обеспечен. Это нормально.


2011-05-29 10:59:08 | Oleg
А не возникало ни у кого проблемы, что несколько раз в сутки датчик отдает температуру 85гр? Вернее я так понял не сам датчик, а owfs так считывает...
Кстати, может это из-за того что они работают от паразитного питания? И... если их питать от паразитного питания, то вывод VDD-Pin должен быть соединен с GND или нет?


2011-02-17 16:25:34 | Richie
"Да, у меня гуманитарное образование... " :)


2011-01-22 18:41:07 | Александр
Да, я тоже оплачивал напрямую картой. Вводишь данные карты - они списывают нужную сумму.


2011-01-21 23:46:13 | Али
Датчик скорости ветра - обычный анемометр. У них на сайте есть в продаже, но там дорого (95 долларов за два датчика - скорости ветра и направления ветра). Я же купил набор в Китае за 45 USD, так как частенько туда мотаюсь, заранее найдя на Alibaba. Там в точности такие жа датчики + датчик дождя + радиопередатчик + панелька в дом + USB в комп. Можно его использовать как есть, но к системе тяжело его интегрировать.. Кстати я брал два на случай поломки. Один лежит без дела - могу поделиться.
На HobbyBoard по-моему платил напрямую картой. Заказал самую дешовую доставку. Пришло через 2 недели без проблем. На таможне не придрались...


2011-01-21 17:48:20 | Andrey_B
Али, расскажите что вы используете в качестве датчика скорости ветра.
Как оплачивали товар от HobbyBoard? Paypal?


2011-01-21 17:39:45 | Али
Счетчик на базе DS2423 от HobbyBoard работает у меня без проблем. Он у меня работает на метеостанции (подключен к датчику скорости ветра). Также я его подключал к различным герконовым осточникам импульсов - и к импульсному выходу счетчика воды и к импульсному выходу счетчика газа. Считает импульсы без проблем. Также наличие батарейки на нем позволяет не беспокоится об отключении эл-ва. Главное не забыть ее менять.


2011-01-21 13:11:08 | Александр
Я нашел вот такое готовое изделие www.hobby-boards.com/catalog/product_info.php?cPath=24&products_id=42 на DS2423. Заказал 2 штуки. Жду когда пришлют. По результатам отпишусь.


2011-01-14 11:50:51 | Andrey_B
Совсем забыл сказать. Я обещал отчитаться за эксперимент по поводу пустых значений при считывании показаний температурных датчиков через ownet.php
Так вот. Сразу же, как только ownet.php вернула null, я считываю показания датчика повторно, а время считывания фиксирую. Каков результат?
Во всех случаях повторное считывание возвращало реальное значение. Во всех случаях считывание занимало порядка 0.002 секунды.
А вывод простой.
В тех случаях, когда ownet.php возвращает null, срабатывают сетевые (tcp) таймауты. Сеть (1-wire) в случае большой нагрузки не успевает дать ответ, за 1,5 секунды, тогда как непосредственно считывание 12-битного значения температуры занимает около секунды. Как результат null на уровне связки ownet.php - owserver. То есть, ownet уже отвалился по таймауту, а спустя какое-то время информация от датчика пришла в кеш owserver и повторный запрос занимает мизерное количество времени.
Кажется, что выход из этой ситуации простой, но это не так. Мы можем увеличить значение таймаута и это поможет, но с ростом нагрузки на сеть его придется увеличивать все больше и больше, а это неправильно.
Предлагаю следующую модель:
1. Использовать для температурных датчиков отдельную ветки сети и опрашивать их циклически последовательно или иным образом, но так, чтобы в единицу времени было не более одного запроса.
2. Определиться с требуемой точностью показаний. Далеко не всегда требуется медленное 12-битное показание. В большинстве случаев 9-бит вполне достаточно, а это намного быстрее.
3. В программе предусмотреть обработчик такого события. То есть при получении null, повторной запрос, если и он выдал null - сообщение об ошибке.
4. Увеличение таймаута в коде owserver, но не более, чем на 0,5 секунды.


2011-01-14 11:36:15 | Andrey_B
Относительно версии 2.8p5
В моей конфигурации с мастерами DS9490R, эта версия работает неустойчиво. Из сети просто пропадает мастер со всеми ведомыми. Эта проблема была с первых релизов ветки 2.8, но тогда мастера "отваливались" практически сразу, а с 2.8p5 работает 1-3 суток. Пока снова откатился на 2.7p33, которая без проблем работает месяцами. В списке рассылки разработчиков есть упоминания этой проблемы, но в США, похоже, более популярны мастера типа HA* от компании Embedded Data Systems и Link* от компании iButtonLink, поэтому "пожара" у них нет.
А что касается прибора учета, то, конечно, можно сварганить на DS2423 (у меня в закромах есть один) или на МК, но вдруг есть какой-нибудь недорогой готовый девайс. Увы, беглым взглядом сходу не нашел. Значит придется выдумывать что-то свое.


2011-01-10 21:30:31 | Александр
Мне видится возможным использовать модуль аналоговых сигналов на основе DS2438 (такой есть, например, на сайте бенукса). Или же строить свой на АЦП. Например, на DS2450. Буду пробовать.


2011-01-10 16:29:57 | stpavel
Андрей , а почему вас не устраивает использовать для этих целей DS2423 ? Лично, использовал для считывания импульсов с электрического счетчика arduino , воткнутый в USB порт ( то что было под рукой в тот момент) , хотя красивее ( учитывая что 1-wire сеть у меня есть ) было бы использовать счетчик, построенный на DS2423.


2011-01-10 11:09:09 | Andrey_B
Александр, счетчики воды к системе не подключал, но эта тема для меня актуальна. Был бы рад, если кто-нибудь подсказал название недорогого прибора для преобразования импульсного входа в RS232 или USB (точнее считывания и сохранения импульсов с возможностью передать данные по запросу на ПК). То, что мне попадалось, жутко дорогие решения. Можно было бы сделать такой прибор на МК, но не хочется лишний раз изобретать велосипед.


2011-01-10 00:58:47 | Александр
Да, может и так. Андрей, а Вы не реализовывали задачу считывания показаний со водосчетчиков и похожих приборов с гребенчатым колесом и импульсным выходом? Например у меня в системе очистки воды как-раз применен водосчетчик с импульсным выходом. По этому выходу контроллер системы судит насколько активно идет водоразбор и, соответственно, дозирует реагент. Размышляю как можно его задействовать для учета расхода воды.


2011-01-09 21:38:17 | Andrey_B
Александр, да, owfs иногда выдает вместо значения null (не ноль, а пустое значение). С чем это связано сказать не могу, но замечено, что с увеличением нагрузки на сеть, а точнее с увеличением количества запросов на считывание температуры, количество подобных ошибок возрастает.
Я у себя в программе сделал обработку такого рода
$my_value = $ow->get("адрес_датчика");
if ( !is_null($my_value) )
далее по вкусу, пробуем считать заново или просто игнорируем значение.
Я считываю значения датчиков достаточно часто, поэтому выпадение 1-2 значений в день нестрашны.
Подобная ситуация наблюдается и с 2.8p5
Точно могу сказать, что это не связано с помехами, создаваемыми электроприборами, грозами и т.д. У меня ведется лог этих ошибок и я не нашел никакой закономерности в их появлении. В owfs можно включит debug режим, а также трейсить все команды в сети, но пока проблема недостаточно сильно выражена, чтобы ей так активно заниматься. Интересно, существует ли она на датчиках с питанием.
А, может быть, это продолжение темы с timeout'ами. Проведу эксперимент.


2011-01-09 20:53:58 | Александр
Очень интересно! А я кстати откатился на 2.7-33 по Вашему совету в предыдущем сообщении. Все заработало! Но, должен отметить, за целый день наблюдений 3-4 раза датчик выдает в базу 0 значение. Не очень понятно пока почему. Соответственно, и на графике 3-4 провала. Стоит ли переходить на 2.8-5?


2011-01-07 22:33:57 | Andrey_B
А я нашел проблему. Как изначально я и предполагал, дело было в таймаутах, а точнее в недостаточно большом значении таймаута.
Для версии 2.7p5 можете взять файл loop.c по ссылке ниже
http://www.ab-log.ru/files/File/loop.zip
и положите его сюда
owfs-2.8p5/module/owserver/src/c/
потом заново скомпилируйте owfs
make clean; make; make install
==
Надо будет только написать автору в owfs-developers mailing list.


2011-01-07 18:45:01 | Andrey_B
Александр, сегодня вышла новая версия 2.8p5
Стабильность работы с USB-адаптером DS9490R и температурными датчиками DS18B20 на паразитном питании хорошая. Теперь owfs "не падает".
Что касается ownet.php, то проблема эта впервые мною замечена начиная с версии 2.7p35 и далее присутствует всегда. Проявляется она таким образом.
При чтении значения температуры с помощью ownet.php, программа выдает всегда null, если значения нет в кеше. Если мы сразу же запустим программу снова, то мы получим значение температуры, которое присутствует в кеше. Если мы читаем значения из папки uncached, то мы всегда будем получать null. Сначала я думал, что проблема связана с кешем, но, по всей видимости, это не так. Попробуйте получить значение свойства temperature9 или temperature10 и вы увидите, что они нормально читаются как из сети, так и из кеша. Я сегодня немного поэкспериментировал с ownet.php.
Оказалось, что это owserver (а для работы ownet нужен ТОЛЬКО он) вместо реального значения выдает какой-то мусор. Ошибки в ownet.php быть не может. Используется стандартная функция socket_read(). Здесь вроде бы негде ошибиться, значит проблема в самом owfs.
Как выход - попробуйте версии owfs 2.7p32 или 2.7p33, с которыми все работает прекрасно. Их можно скачать со странички проекта на Sourceforge.
Я попробую поразбираться с самим owfs, но результат гарантировать не могу.


2011-01-07 10:13:01 | Александр
Спасибо! А что за проблемы у 2.8? Я в принципе методом тыка пришел к запуску owfs через owserver и, вроде, считывается t с датчика с паразитным питанием. Но! Первое значение всегда 0! И только если запускаю php-скрипт с интервалом в пару секунд (например F5 В браузере) то тогда начинают идти значения. Стоит подождать секунд 10-20 и снова обновить страницу - снова первый 0. Случайно не в этом проблема версии 2.8?


2011-01-07 00:01:35 | Andrey_B
Здравствуйте, Александр!
Вот как запущен owfs у меня:
==
/opt/owfs/bin/owserver -uall -p 3000
/opt/owfs/bin/owhttpd -s 3000 -p 3001
/opt/owfs/bin/owfs -s 3000 /mnt/1wire/
==
далее простейшая программа на PHP:
require "/opt/owfs/bin/ownet.php";
$ow=new OWNet("tcp://localhost:3000");
$temp = $ow->read("28.90225A020000/temperature");
echo $temp;
unset($ow);
?>
==
Пути, адреса, порты, естественно, укажите свои.
Да, в текущий момент я использую версию 2.7p33, так как с более новыми версиями owfs в Debian и с моей конфигурацией есть проблемы (во-первых, с USB-функциями, во-вторых с температурными датчиками на паразитном питании). Я несколько раз писал автору, были и другие сообщения с аналогичной проблемой, но пока в 2.8p4 проблема остается. А с 2.7p33 все работает прекрасно.


2011-01-06 17:19:38 | Александр
Очень интересные статьи. Вот тоже мучаюсь с библиотекой ownet.php. Никак не пойму в каком варианте надо запускать owfs: owfs -u -m /media/1wire или же в виде http-сервера ofhttpd -u -p 4304. В первом случае вообще при попытке выполнить $ow=new OWNet("tcp:/127.0.0.1:4304"); echo $ow->get("28.7EA68D020000/temperature"); вообще говорит что не может создать сокет. Если запускаю owhttpd то вроде с сокетом все нормально но ругается Notice: Error unpacking data get1 [0] in /usr/share/homesite/ownet.php on line 434. В общем всю голову сломал. :) Все что нашел в интернете - практически все на английском, кроме Вашего сайта, и особо мне не помогло.


2010-11-24 14:05:40 | sergMinsk
ВАМ пора форум организовывать.
news.sec.ru/dailypblshow.cfm?rid=7&pid=18853&pos=2&stp=25
тут тоже поле для деятельности.


2010-08-27 18:37:16 | Andrey_B
Сергей, в природе существуют решения на базе DS2890P + ATiny15L, где адресацию и управление (256 градаций) обеспечивает компонент 1-wire, а непосредственное регулирования сети обеспечивается с помощью ATiny15L. Думаю, это далеко не единственная возможная схема.


2010-08-27 14:46:26 | Sergei
"Короче говоря, практически все, кроме таких специфических вещей, как управление по 0-10В или регулятор мощности нагрузки (диммер). Это тоже доступно через компоненты 1-wire, но с помощью других элементов."

Вопрос: через какие именно компоненты можно достичь с дигитального аналоговый выход (0-10В)

С уважением, Сергей..


2009-10-06 21:06:10 | Andrey_B
Ростислав, все зависит от задачи. Например, для снятия показаний с датчиков температуры достаточно запускать скрипт планировщиком (cron в Linux) каждые 5 минут. Но для других задач (отслеживания нажатия выключателя для управления освещением или включения/выключения насоса и других приборов) требуется относительно быстрая реакция управляющей программы. В таких случаях используются постоянно работающие скрипты, которые отрабатывают свой код в цикле. В моей системе постоянно запущены скрипты для управления отоплением, водоочисткой и освещением.
Вообще непонятен вопрос. Какая разница на чем написана программа, на PHP, C, или, на Perl'е.


2009-10-06 18:37:59 | Ростислав
Очень интересная информация для размышлений. Но все-таки стоит ли использовать PHP для достижения результата? Ведь PHP сначала обрабатывает скрипт, а потом уже выводит готовый результат, то есть не работает в реальном времени.

Например, после запуска скрипта PHP-интерпретатор снимает показания датчиков, записывает значения и/или принимает решение о том, включить свет или нет, и завершает работу. Или Вы используете какой-нибудь планировщик, который с некоторой периодичностью запускает скрипт?


2009-09-25 11:28:59 | Andrey_B
Александр, как Вы правильно заметили, ток, коммутируемый DS2405 слишком мал для непосредственного управления реальными нагрузками, поэтому необходимо применять какой-нибудь элемент, способный коммутировать мощную нагрузку - тиристор, транзистор, реле. Кроме того, DS2405 коммутирует только постоянный ток. И наконец, обязательно необходима гальваническая развязка модуля с сетью 220В (обычно для этих целей применяется оптрон или реле).


2009-09-24 20:40:12 | Александр
Здравствуйте!

DS2405 - это, прямо совсем то, что я искал. Кажется.
Дело только в том, что тут: /www.elin.ru/1-Wire/?topic=components5
пишут, что коммутировать можно линию с потреблением до 4 мА.

Правильно ли я понимаю, что в цепи обычной потолочной 100-ваттной электролампочки 100/220=0,454 А ?
То есть 454 мА. То есть, получается, прямо в DS2405 лампочку втыкать нельзя?

Подозреваю, тут речь идёт о какой-то всем известной хитрости управления большими токами с помощью маленьких :) Развейте, пожалуйста, (или укрепите) мои опасения :) Как у вас происходит подключение DS-элементов к приборам?

Спасибо за сайт, я тут нашел уже уйму решений давно назревших у меня задач :)


2009-07-13 18:17:30 | Andrey_B
Насчет собаки хорошо сказано. ;)
А насчет остального - все в общем правильно. У каждого свои задачи, свое видение решения и своя реализация. Лично мне не нравится моргающий свет, поэтому я использую "ночники". Мне это комфортнее. Если обеспечить широкую видимость датчиков движения, дабы покрыть все необходимые зоны и подъездные пути, мы получим включающийся 500 Ваттный прожектор ночью от случайного прохожего или проезжающей машины. Допускаю, что есть люди, которых и такой вариант устроит. А можно сузить область видимости, но тогда придется попадать ключом в двери забора на ощупь. Но преимущества центрального управления прежде всего в том, что имеется возможность учитывать несколько факторов и параметров. Например, можно не включать свет, когда никого нет дома. Можно эмитировать эффект присутствия. Может быть несколько групп уличного освещения и тогда включать одну группу только тогда, когда выключена другая. Меня, прежде всего, подкупает гибкость в подходах. У меня, кстати, используется датчик движения, но и он заведен на 1-wire модуль. Таким образом показания датчика движения могут использоваться как сигнал проникновения (охранная функция системы) или как сигнал для включения света или как сигнал присутствия в комнате человека (для автоматического управления кондиционированием/вентиляцией/отоплением).


2009-07-13 16:00:17 | Олег
Ну датчик движения тоже для экономии - что бы не светить, когда не нужно. Можно посчитать что выгоднее - 15 минут 500 ваттного прожектора за ночь или 12 часов ДРЛ. Малый радиус действия - поставьте два датчика в разных местах.
Наблюдение - если на картинке с камеры видим квадрат Малевича - там никого нет. От софта и прочей автоматизации не зависим - только датчики движения.
Безопасность - у собаки по соотношению цена/качество конкурентов пока нет :)

Но в общем да - оба варианта имеют свои плюсы и минусы.


2009-07-11 00:36:06 | Andrey_B
Олег, в данной статье "уличное освещение" понимается в традиционном значении этого слова - освещение улицы в темное время суток. Это то освещение, которое включается с наступлением темноты и выключается утром на рассвете. Такое освещение в частном доме необходимо с разных точек зрения, но главная причина - безопасность. Кроме того, камеры видеонаблюдения (если не брать специальные модели) практически слепы без света. Датчик движения имеет довольно ограниченную зону действия. К тому же для экономичного уличного освещения применяются лампы ДРЛ и ДНаТ, которые просто немыслимо использовать с датчиками движения.
Далее, я, например, могу удаленно в отсутствии кого бы то ни было дома наблюдать через Интернет что происходит вокруг дома. О каком датчике движения вы говорите?
Помимо этого, автоматизация уличного освещения (с помощью реле, датчика освещенности или 1-wire ключа) позволяет в значительной степени сэкономить на электроэнергии.


2009-07-10 17:38:38 | Олег
По-моему с уличным освещением самый простой вариант - использование датчика движения. Ходим - светит, ушли - не светит.


2009-06-24 00:02:00 | Andrey_B
Mike, для работы 1-wire сети нужно только два провода, DATA (данные) и GROUND (земля). Так, температурные датчики у меня работают без всякого внешнего питания, используя так называемое паразитное питание от шины данных (DATA). Но исполнительным ключам требуется внешнее питание. Говоря простым языком, схемотехника их такова, что он просто не в состоянии сработать, включить нагрузку (лампу, привод, клапан), если ему не дать какое-нибудь внешнее питание. Сам по себе 1-wire ключ может работать и на паразитном питании, НО питание требуется элементу, который непосредственно осуществляет коммутацию (оптрон, симистор, реле).
Вовсе не обязательно, чтобы все устройства сети получали питание. Например в моей сети часть устройств работают на паразитном питании, а часть на +12.
Что касается физического подключения, то тут все просто. Конкретному устройству нужно 12 Вольт. Это напряжение можно взять из любого китайского блока питания, а можно прямо с сервера. У любого компьютерного блока питания есть разъемы для подключения жестких дисков. Этот разъем состоит из 4-х проводов: два черных, красный и желтый. Так вот желтый провод и есть +12. Черный земля. Припаяв провод к желтому и черному проводу разъема я получил питание для своей 1-wire сети. В связи с тем, что модули, требующие питания находятся рядом с сервером - такое решение более чем достаточное.
Сам я планирую в следующем году сделать систему полива на 1-wire. А пока доделывая управление отоплением. Дело в том, что для управления отоплением нужно много ключей, так как моя система отопления довольно сложная (несколько контуров, 3-х ходовые, у каждого контура свой насос, требуется формирование "запроса тепла" для современного умного котла). Как только все будет готово, допишу статью на эту тему.


2009-06-23 18:55:17 | Mike
Здравствуйте, мне очень понравились Ваши статьи все так доступно и понят, я пытался связаться с Вами по почте относительно указанного адреса в регистрации данного домена, но это было безуспешно.
Меня интересует следующие, каким образом Вы «Питание (+12В) я взял с того же компьютера.»? Мне очень интересно как Вы все организовали.
Я планирую сделать что то подобное для бабушки в село чтоб летом ей не приходилось заниматься поливом огорода ну и тому подобное что в полне можно автоматизировать. А также обезопасить что на чуток пребывание в дома в зимний период.
Перечитал я кучу статей относительно технологии 1-wire но так и не нашел конкретных примеров управляющих устройств или сети с внешним питание.
В схематехнике я к сожалению не селен, вот и прошу Вас помочь мне рекомендациями или собственным примером.
Если Вам не трудно прошу Вас связаться со мной по почте, буду очень благодарен.
Спасибо.