РЕКЛАМА НА ФОРУМХАУС Печально. На сколько я помню, прошивка OpenWRT имеет наработки в части бесшовного роуминга но только для ограниченных чипсетов. Учитывая, что сама идея очень даже хороша то странно, что фирма решила отказаться от этого.
В целом все логично. Производитель предполагает, что его продукцию будут использовать в нижнем, дешевом сегменте. Для этого сегмента устройства должны быть простыми и легкими в установки, потому как устанавливать их скорее всего будут специалисты низкой квалификации. Задача роуминга достаточно сложна как в реализации со стороны производителя, так и со стороны проектировщика системы беспроводного доступа. То есть потенциальных проблем больше, чем удовольствия. И практика показывает, что производитель прав. Дистрибьютор не успевает завозить на склад точки доступа из новой линейки, их раскупают как горячие пирожки. Мы свой заказ месяц ждали.
Несколько часов свободного времени нашлось, решил почитать чего новенького в OpenHAB произошло с момента внедрения его в системы дома. Обнаружил одну интересную деталь. Появилась возможность отправлять емейл с приаттаченными файлами. Mail Actions This add-on provides SMTP services. Please check openhab_default.cfg for required configuration settings. The to paremeter can contain a semicolon separated list of email addresses. sendMail (String to, String subject, String message): Sends an email via SMTP. sendMail (String to, String subject, String message, String attachmentUrl): Sends an email with attachment via SMTP. sendMail (String to, String subject, String message, List<String> attachmentUrlList): Sends an email with one or more attachments via SMTP (available as of openHAB 1.8). sendMail("you@email.net", "Test", "This is the message.", attachmentUrlList) Я ранее использовал внешний скрипт и внешнюю программу для присоединения файлов к электронному сообщению. Сейчас же все оказалось куда проще и красивее. Ниже привожу пример программы, которая при срабатывании сигнализации формирует снапшоты со всех камер видеонаблюдения (используется внешний скрипт в котором формируется запрос на снапшоты к AVREG), отправляет полученные снапшоты на указанный емейл. Кроме того посредством php запроса инициируется голосовое оповещение о событии на все внутренние SIP телефоны (запрос на обслуживание к серверу FreePBX/Asterisk) Голосовое сообщение синтезируется сервисом Яндекс. Код: rule "Protect" when Item PCode_0 changed from CLOSED to OPEN or Item PCode_1 changed from CLOSED to OPEN or Item PCode_2 changed from CLOSED to OPEN or Item PCode_3 changed from CLOSED to OPEN or Item PCode_4 changed from CLOSED to OPEN or Item PCode_5 changed from CLOSED to OPEN or Item PCode_6 changed from CLOSED to OPEN or Item PCode_7 changed from CLOSED to OPEN or Item PCode_8 changed from CLOSED to OPEN or Item PCode_9 changed from CLOSED to OPEN or Item PCode_10 changed from CLOSED to OPEN or Item PCode_11 changed from CLOSED to OPEN or Item PCode_12 changed from CLOSED to OPEN or Item PCode_13 changed from CLOSED to OPEN or Item Test_Protect changed from OFF to ON then Test_Protect.sendCommand(OFF) Test_Protect.postUpdate(OFF) var String SpeechTxt = "Вним%2bание! Обнар%2bужено наруш%2bение пер%2bиметра безоп%2bасности!" var String Subject = "SH2: Protect!" var String Message = "" var int year = now.getYear var int month = now.getMonthOfYear var int day = now.getDayOfMonth var int hour = now.getHourOfDay var int minute = now.getMinuteOfHour logInfo("Protect", "year=" + year + " month=" + month + " day=" + day + " hour=" + hour + " minute=" + minute) val String mask = "img_" + year + "-" + month + "-" + day + "_" + hour + "." + minute logInfo("Protect", "mask=" + mask) val List<String> attachmentUrlList = newArrayList( "file:///tmp/snapshot/"+mask+"_cam1.jpg", "file:///tmp/snapshot/"+mask+"_cam2.jpg", "file:///tmp/snapshot/"+mask+"_cam3.jpg", "file:///tmp/snapshot/"+mask+"_cam4.jpg") logInfo("Protect", "List=" + attachmentUrlList) if (PCode_0.state == OPEN) {Message = Message + "Обнаружено движение в гараже! " } if (PCode_1.state == OPEN) {Message = Message + "Обнаружено движение в Мастерской! " } if (PCode_2.state == OPEN) {Message = Message + "Обнаружено движение в котельной! " } if (PCode_3.state == OPEN) {Message = Message + "Обнаружено движение в ванной 0 этажа! " } if (PCode_4.state == OPEN) {Message = Message + "Обнаружено движение в фойе 2 этажа! " } if (PCode_5.state == OPEN) {Message = Message + "Обнаружено движение в прихожей! " } if (PCode_6.state == OPEN) {Message = Message + "Обнаружено движение в ванной 1 этажа! " } if (PCode_7.state == OPEN) {Message = Message + "Разбито стекло в гараже! " } if (PCode_8.state == OPEN) {Message = Message + "Разбито стекло в мастерской! " } if (PCode_9.state == OPEN) {Message = Message + "Разбито стекло в котельной! " } if (PCode_10.state == OPEN) {Message = Message + "Разбито стекло в ванной 0 этажа! " } if (PCode_11.state == OPEN) {Message = Message + "Разбито стекло в ванной 1 этажа! " } if (PCode_12.state == OPEN) {Message = Message + "Секционные ворота открыты! " } if (PCode_13.state == OPEN) {Message = Message + "Калитка секционных ворот открыта! " } if (Test_Protect.state == ON) {Message = "Тестирование системы безопасности " } // Голосовое оповещение события sendHttpGetRequest("http://192.168.1.5/intercom.php") // Формируем снапшоты с камер видеонаблюдения AVREG var String snapshot = "/etc/openhab/cmd/snapshot_dvr.sh@@" + mask executeCommandLine(snapshot) Thread::sleep(3000) // logInfo("Protect", "mask= " mask ) // формируем сообщение sendMail(EMail, Subject, Message, attachmentUrlList ) end Прежний скрипт на bash, что формировал голосовое сообщение на FreePBX заменен на php скрипт. openhab. php Код: <?php # --- define globals --- $strhost = "192.168.1.11"; $strport = "5038"; $timeout = "10"; $num=$_REQUEST['num']; $cid=$_REQUEST['cid']; $c=$_REQUEST['c']; $p=$_REQUEST['p']; $errno=0 ; $errstr=0 ; $sconn = fsockopen ($strhost, $strport, $$errno, $$errstr, $timeout) or die("Connection to $strhost:$strport failed"); if (!$sconn) { echo "$errstr ($errno)<br>\n"; } else { fputs ($sconn, "Action: login\r\n"); fputs ($sconn, "Username: user_ami\r\n"); fputs ($sconn, "Secret: password_ami\r\n"); fputs ($sconn, "Events: off\r\n\r\n"); usleep(500); fputs ($sconn, "Action: Originate\r\n"); fputs ($sconn, "Channel: Local/590@from-internal\r\n"); fputs ($sconn, "Callerid: OpenHAB\r\n"); fputs ($sconn, "Timeout: 15000\r\n"); fputs ($sconn, "Context: pa-custom\r\n"); fputs ($sconn, "Exten: 577\r\n"); fputs ($sconn, "Priority: 1\r\n\r\n"); fputs ($sconn, "Async: yes\r\n\r\n" ); fputs ($sconn, "Variable: var1=speech\r\n\r\n" ); fputs ($sconn, "Action: Logoff\r\n\r\n"); usleep (500); fclose ($sconn); } ?>
Когда монтировали электрическую проводку в доме я не предусмотрел внешнее управление освещением. Т. е. осветительная проводка сделана традиционным образом. Теперь появилась необходимость внешнего управления. Для чего... При обнаружении несанкционированного проникновения в дом, включить освещение, мигалки, пищалки и подать сигнал на пульт ОВО. Но как обеспечить внешнее управление освещением пока не пойму. Что требуется: 1. Сохранение ручным управлением освещения. При отказе автоматики должно быть просто перевести освещение к традиционной схеме. 2. Минимум вмешательства в проводку (штробить стены и укладывать новые провода не буду) 3. Отказоустойчивость системы 4. Бюджет до 5 т. р. за один канал. Подскажите в какую сторону копать?
Если не извращаться, то это значит беспроводка, а из беспроводки - Z-Wave. Там как раз в релюшках для встроенной установки есть входы для локального управления, что можно и локально и удаленно управлять. Но дополнительно надо будет контроллер - OpenHAB подойдет, плюс Z-Wave стик - это еще 100$.
3 этажа, между которыми железобетонные плиты перекрытия. Боюсь в такой схеме не один стик понадобиться. Существуют же передатчики ethernet по силовой сети. Может на этой технологии есть какие-то релюшки в подрозетник? В принципе я могу блоки управления разместить под фальшпотолком. Там места достаточно.
Релюшек не видел, но у меня стоят такие штуки на домашнюю сеть. Через три этажа? Не думаю, что пробьют, особенно если электрика на разных автоматах или фазах висит. По Z-Wave все не так уж плохо, как все говорят - я ихний момент с MESH топологией только пару недель назад раскусил и наконец распробовал. Т. е там каждая релюшка дейсвительно ретранслирует сигнал и таких ретрансляторов может быть до 4шт между контроллером и конечным узлом. Если учитывать что расстояние прямой передачи в доме может быть до 10-15м, то получается приличная дальность и покрытие. Так что сами считайте и продумайте про логичное размещение - перекрытия не обязательно пробивать, если их просто можно обойти, например, по лестнице.
433 МГц сильно перегруженный диапазон. Смущает это. Зато в доме хорошее покрытие WiFi. Думаю это будет удобнее. Главное найти выключатели, которые будут смонтированы на место обычных.
Если есть питание рядом с выключателем, то посмотрите в сторону esp8266. Не являюсь специалистом в распределении частот и загруженности каналов, и при этом сомневаюсь, что 433 более загружен чем wifi. Noolite вроде гарантируют бесперебойную работу до 50 устройств. Для дома этого более чем достаточно. С wifi мороки много. А тут коробочное решение. Ценник очень гуманный. Раньше думал, что дорого. А сейчас сделал несколько контроллеров на esp8266 и понял, что реле в связке с выключателем за 2500р очень даже приемлемая цена! Почти халява.
Нет конечно питания. Есть обычный выключатель. К нему 2 или 3 провода в зависимости от комнаты (в некоторых 2 группы освещения). Нужно научить девайс снимать питание с имеющегося канала. Если 3-5 В упадет, на светильнике это не сильно отразиться, а для блока управления должно хватить. wifi имеет хорошую пропускную способность. Да и можно в отдельную подсеть вывести с гарантированным каналом. Мне такой вариант кажется довольно гибким.
"Загруженность" - весьма размытое понятие. В реальной жизни диапазон можно назвать "загруженным", если связь неустойчивая, то работает - то нет. А это зависит не только и не столько от диапазона, сколько от расстояния между устройствами. Причем, надо смотреть как на расстояние между вашими собственными устройствами, так и на расстояние до ближайших источников помех. Какая вам разница, насколко загружен тот или иной диапазон в ста километрах от вас? Никакой. Самый плохой вариант - когда в выбранном диапазоне неподалеку от вас работает много устройстств, причем их пердатчики мощнее, чем ваш. Например, это случается при использовании дешевых приемопередатчиков nRF24L01 на 2.4 ГГц. Их выxодная мощность ограничена, а рядом в этом же диапазоне работают популярные и намого более мощные WiFi и Bluetooth. Для 433 МГц невелика вероятность, что рядом будет мощный источник в том же диапазоне. Невелика, но есть: промышленные каналы телеметрии работают в этом диапазоне, им разрешается выдавать довольно мощные сигналы. Плохо, если приемники имеют плохую избирательность, тогда им будут мешать сигналы соседних диапазонов. Недалеко от 433 МГц находится диапазон для "воки-токи", а передатчики там в сотни раз мощнее, чем разрешается для Ноолайта. Однако беда даже не в том, что рядом есть мощный источник. Беда когда он неожиданно появился, и ранее работавшая связь вдруг загнулась. Чтобы как-то обезопаситься от этого, при планировании радиолинка в доме лучше заложиться на расстояния между устройствами в несколько раз меньше, чем написано в рекламных проспектах. Если сигнал от своего устройства сильный, то чужому устройству будет трудно его перебить.
@_AK_, я согласен с Вами, что не все так однозначно. Я же исхожу из того, что покрытие WiFi у меня уже имеется. Т. е. зачем мне еще один элемент вносить если можно использовать существующий ресурс. При чем этот ресурс в доме как раз не особо нагружен. А если выделить для подсети жестко полосу пропускания (скажем 128 кбод) то вопрос о доступности ресурса будет практически решен. В диапазоне 433 у меня уже работают какие-то бесконтактные датчики и радипульты от ворот и кнопки тревожки. Просто с учетом довольно большого кол-ва предполагаемых управляемых выключателей - меня это немного смущает. В данном случае при адресной идентификации (WiFi) прощще организовать устойчивую работу.