03/10/2011 12:35:16
Ну а пока мы есть, нужно сделать так, чтобы спасательные круги, жилеты и заранее заготовленный на всякий случай челн с веслом не пригодились. Я признаться однажды уже имел удовольствие помочить ноги в прохладных водах, вытекших из лопнувшего крана, и, поверьте, совсем не горю желанием повторить эту бодрящую душу и тело процедуру.

И. Айвазовский. Всемирный потоп. Больше - никогда!
Протечка - вещь довольно непредсказуемая. Относительно протечки можно сказать совершенно определенно только одно - она гарантированно случиться в самый неподходящий для этого момент. Поэтому ключевым узлом системы защиты является датчик. Именно он должен сгенерировать сигнал SOS.
Вода проводит ток. Не всякая (дистиллированная хуже) и не так хорошо, как металлы, но все-таки проводит. А значит в качестве датчика можно использовать все что угодно, даже просто два оголенных провода. Когда между проводниками пройдет ток, это будет сигналом тревоги. Но все же лучше с эстетической точки зрения выполнить чувствительный элемент в виде контактной площадки. Согласитесь, кусок голого провода на фоне испанской плитки, мрамора или гранита будет смотреться несколько вызывающе.
Сам по себе чувствительный элемент никуда никакой SOS отправить не сможет, поэтому его нужно подключить к чему-то более интеллектуальному. Это может быть специализированный контроллер протечки, который самостоятельно принимает решение о перекрытии подачи воды, или устройство, которое передает этот сигнал по какой-либо шине на пульт или сервер. В первом случае, когда используется специальный контроллер, вся система является независимой. Это плюс, так как надежность такой системы выше, но в то же время и минус - она не может учитывать информацию, поступающую от других элементов Умного Дома. Кроме того, специализированное решение имеет ограниченные возможности в управлении исполнительными механизмами (кранами, которые закрывают воду) и в плане уведомления людей об аварии. Сервер Умного Дома имеет куда больше средств контроля и управления. Во-первых, он сможет отличить протечку от регламентных ремонтных работ (например, обслуживание фильтров), в случае аварии, он сможет не просто закрыть кран, но и отключить некоторые узлы от электроэнергии, отправить SMS или позвонить с помощью Asterisk, написать сообщение по электронной почте и даже завопить на весь дом человеческим языком.

Так как моя система является централизованной, где все информация стекается в единую базу данных, я решил пойти по второму пути и подключить датчик к уже существующей 1-wire сети. Для этого был изготовлен простой модуль на базе элемента DS2406, который усиливает сигнал, поступающий от датчика и в случае фиксации протечки меняет состояние пина 1-wire микросхемы. Элемент DS2406 был выбран не случайно. Шина 1-wire работает по принципу "мастер-слейв", а это значит, что ведомые устройства не могут отправлять сообщения мастеру/серверу. Только мастер может генерировать опрос состояние датчиков. Но в DS2406 заложен механизм так называемого "условного поиска". Мы заранее можем задать в какой ситуации компонент будет откликаться на команду Conditional Search ROM. Таким образом мастер не будет опрашивать все устройства по очереди. Вместо этого мастер один раз в несколько секунд будет посылать команду "ей, есть тут кто больной". Откликнуться только те элементы, у которых произошли важные изменения, сформировались нужные для этого "условия".

Для своего датчика я прописал посредством owfs в своейство set_alarm значение '131'. Это означает, что датчик будет отзываться на команду условного поиска в том случае, когда свойство sensed будет равным 1, а это, в свою очередь, говорит, что датчик зафиксировал наличие протечки.
Далее, необходимо написать простейшую программу для считывания каталога alarm в owfs. Выглядеть она может примерно так.
<?
$dir = opendir("/mnt/1wire/alarm/");
$log = fopen("/var/www/server.log", "a");
$keys = array (
0 => array (
'key_address' => '12.A52D7D000000',
'key_label' => 'leak',
'alarm' => 0, 'key_pio' => 0, 'key_id' => 0
)
);
while ( true )
{
sleep(3);
for ( $i = 0; $i < count($keys); $i++ )
$keys[$i]['alarm'] = 0;
rewinddir($dir);
while (false !== ($file = readdir($dir)))
{
for ( $i = 0; $i < count($keys); $i++ )
{
if ( $file == $keys[$i]['key_address'] )
$keys[$i]['alarm'] = 1;
}
}
for ( $i = 0; $i < count($keys); $i++ )
{
# Обработка событий для датчика протечки
if ( $keys[$i]['key_label'] == "leak" )
{
if ( $keys[$i]['alarm'] == 1 && $keys[$i]['key_pio'] == 0 )
{
$keys[$i]['key_pio'] = 1;
$log_txt = date('H:i:s')." ".$keys[$i]['key_label']." ON";
fwrite($log, $log_txt);
// AHTUNG! Здесь должен быть код, который выполняется в случае выявления протечки!
}
elseif ( $keys[$i]['alarm'] == 0 && $keys[$i]['key_pio'] == 1 )
{
$keys[$i]['key_pio'] = 0;
$temp_time = 0;
$log_txt = date('H:i:s')." ".$keys[$i]['key_label']." OFF";
fwrite($log, $log_txt);
}
}
}
}
fclose($log);
?>
Несколько размашистый код связан с тем, что в программе может содержаться обработка для других подсистем, подключенных к шине 1-wire. Так, у меня этот же программный сервер отслеживает работу насоса для включения/выключения водоочистки и состояние GSM-сигнализации.
Итак, программа зафиксировала протечку. Первое, что необходимо сделать - послать SMS с текстом "Шеф, все пропало!". Особенно приятно читать такие послания где-нибудь в отпуске за пределами российской импе... федерации. Второе, что нужно предпринять - это попытаться своими, так сказать, программными силами решить проблему. Ведь спасение утопающего сервера дело рук самого сервера.
Для этого нужно тщательно проанализировать устройство водопроводной системы, чтобы выявить те места, которые нужно перекрыть в первую очередь, дабы не потопить наше трехпалубное или двухпалубное с трюмом или у кого как жилище. Наиболее очевидное место - ввод воды в дом. Перекрыв полностью ввод, мы отсекаем весь дом от поступления магистральной воды. Для этого нам понадобится кран с электроприводом. Именно так - механизированный кран. Всякого рода нормально открытые или нормально закрытые клапаны с соленоидами в частном доме мне кажутся не совсем удачным решением. Они потребляют ток и греются (когда нормально закрыты) или могут перестать работать от короткого замыкания (когда нормально открыты). В этом смысле обычный шаровый кран с моторчиком (электроприводом) мне видится наиболее приемлемым вариантом. В продаже имеется краны от разных производителей. У нас имеются в продаже краны НС220В от фирмы Нептун. Под брендом Нептун выпускаются и целые наборы для устранения протечек (кран, датчик, контроллер), но меня интересовал только кран. Стоит он 3500 руб. Работает от 220В (хотя есть модификация и для 12В). Чтобы кран закрылся, необходимо подать на него 220В. В течение 5-7 секунд кран перекроет подачу воды. Забавно, но в местном отделении Русклимата работают менеджеры, которые понятия не имеют о вобщем-то простом принципе работы крана и с серьезным видом больших знатоков рассказывали про него такие вещи, что смешно даже вспоминать. Как говорится, не умеешь ничего делать, иди что-нибудь продавай... К сожалению с невежеством менеджеров, продающих что-то чуть сложнее гаечного ключа приходится сталкиваться почти ежедневно. А ведь многие из них, наверное, имеют высшее образование.
Управлять таким краном можно также по шине 1-wire, используя, например, модуль на базе DS2413 или с помощью других исполнительных устройств, работающих по Ethernet, X10, ZigBee и т.д.
В программу выше нужно после оптимистичного слова "AHTUNG!" добавить нужную команду. Для 1-wire ключа что-то вроде этого:
require "/opt/owfs/bin/ownet.php";
$ow=new OWNet("tcp://localhost:3000");
$ow->set('Адрес ключа', 1);
Можно еще на всякий случай сказать что-нибудь этакое с помощью синтеза речи.
Однако, проанализировав свою водопроводную систему, я понял, что закрыть кран будет недостаточно. Все дело в том, что у меня имеется накопительная емкость на 950 литров. Сначала вода из магистрального водопровода попадает в безнапорную емкость, а потом с помощью повышающего насоса Grundfos MQ 3-45 давление уже во внутренней сети поднимается до 4,5 атмосфер. Это означает, что в случае протечки, даже если будет закрыт аварийный кран на подаче, насос будет качать воду до тех пор, пока все 950 литров не окажутся разлитыми по дому...
Можно было бы поставить еще один кран на выход из емкости, так как Grundfos MQ имеет встроенную защиту от сухого хода и просто бы ушел в аварийный режим, но я пока придумал решение лучше и главное дешевле. Я подключил насос к работающему уже модулю IP Power 9212, в котором имеются нормально-замкнутные реле. Такое решение позволит обесточить насос в случае протечки и сохранить воду в баке. Таким образом, существует возможность отключать насос не только в экстренном режиме, но и профилактически, когда никого нет дома или в других случаях - ремонтные работы, переключение подачи воды напрямую из магистрали при питании от генератора и т.д.
Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
2011-10-09 22:34:52 | bdxprns
Андрей, можно ли купить готовый датчик протечки через Ваш сайт?
2011-10-09 14:46:38 | Andrey_B
Гарик, вот схема с дружественного сайта. В качестве усилителя используется транзистор КТ972. Чувствительность очень высокая. Как только датчик попадает во влажную среду, сразу же срабатывает DS2406.
2011-10-09 10:27:17 | Гарик
Андрей, не могли бы Вы описать конструкцию собственно датчика протечки? Достаточно ли для DS2406 в режиме датчика сухого контакта, когда подсоединенная к нему пластина из фольгированного текстолита, изображенная на Вашей фотографии, попадает в мокрую среду (какова вероятность, что DS2406 интерпретирует эту мокрость как замыкание контакта)? Мне приходилось читать про датчики протечки, и они выглядели более сложно: имели бОльшую площадь и длину границы между электродами. Если Вы использовали усилители, можно ли глянуть принципиальную схему?
2011-10-07 16:52:32 | Konstantin
Думаю да, Вы правы. В моем случае имел место вариант когда бак+гидроаккумулятор находились на одном уровне, а потребление было уровнем ниже. Хотя...(поэкспериментировать негде просто) если даже представить что все элементы находятся на одном уровне, то вполне возможно что резиновая камера в середине гидроаккума будет качать воду, не до бесконечности конечно, но все же несколько качков пожалуй сделает...
2011-10-07 16:19:27 | Andrey_B
Константин, если я правильно понимаю, то вы говорите о напорном баке. Такой гидроаккумулятор обычно ставится для того, чтобы насос не включался слишком часто. Если случилась протечка и система выключила насос, то течь остановится не сразу, а по мере падения давления в гидроаккумуляторе (но вода в накопительной емкости останется). Насосы серии Grundfos MQ разработаны специально для работы без гидроаккумуляторов. И выльется там максимум стакан воды.
Единственный случай, когда остановка насоса не решит проблему - это когда течь образуется ниже уровня бака. Тогда вода по закону сообщающихся сосудов выльется до того уровня высоты, на котором произошла протечка.
2011-10-07 15:59:11 | Konstantin
В первую очередь, спасибо за сайт ! А во вторую, хотелось бы заметить из личного опыта, если будет стоять кроме насоса еще и гидроаккумулятор, то есть вероятность что простое отключение насоса не остановит протекание воды в трубе