РЕКЛАМА НА ФОРУМХАУС Должна была уйти, но не ушла. Соединение по любому параллельное, и нулевых сопротивлений не бывает. Все зависит от начальной энергии заряда, мелкие проскочат, крупные спалят. ОПНы и им подобные ставятся между силовыми линиями и землей и является лишь последней ступенькой в многоступенчатой защите которая должна начинаться еще на подстанции, и должны срезать последние остатки импульсов гуляющих в питающей сети, не пуская их в дом. Вы всерьез думаете что силу способную влегкую швырнуть на несколько метров ТВ весом под 20 кг, и при этом выбить 2 окна из 4х (от слова совсем) наружу, и все это не в туалете метр на метр а в помещении площадью боле 50 кв м., способен остановить какой то мелкий девайс размером с автоматик, да при прямом попадании от него и потрахов не останется. Это напрасно. Только у нас в регионе за эти 2 лета несколько официально зарегистрированных смертельных случаев, некоторые разговаривали по телефону, одна из погибших знакомая моего приятеля. Речь же не про выгорит не выгорит, а про потенциальную опасность для людей проходящих в непосредственной близости от этого заземления, забитого в твоем дворе, и выведенного на крышу.
Да, приходилось. Только обратите внимание, что 2N Helios - это целое семейство вызывных панелей. Я имел дело с Helios Verso. Их еще по OEM соглашению Control4 использует.
Да уж, тоже расстроило это, у них была подходящая компактная модель. У Mobotix'a мне подходит одиночный модуль CamCore (размер 100х100мм, просто "крошка" рядом с остальными вызывными SIP панелями), но у него нет выходов для считывателя/замка/кнопки выхода. Однако, как я понимаю, можно приобрести IO модуль, на котором эти контакты есть. Но цена крайне некрасивая, да. Еще смущает внутренний монитор, непривычной квадратной формы и тоже с некрасивой ценой в 65к рублей, а мне их надо 2. За эту цену проще купить 2 айпада мини четвертого поколения и поставить официальное приложение.
Нашёо вот такую панель - SIP-домофон ExtLink Video По описанию характеристик очень интересна. И производитель Россия. Написал запрос. Жду ответа. Еще нашел антивандальную, влагозащищенную панель производства России - SIP/IP домофон Комендантъ VoIP-DP1. Минимум функций но цена совсем бюджетная. 7 тыр. Отсутствует видео камера и считыватель
Не знаю, какое у Helios Verso класс защиты, но прокладки резиновые в нем стоят. Если хочется полной неубиваемости, у них есть Helios Force. Брутальная такая. Ее коллеги из шланга поливали, все работает.
Собрался с духом и перешел на версию OpenHAB2. Имеются некоторые отличия, но не значительные. Практически все настроечные файлы перезалил в новую систему и заработало! Из плюсов: Работа с modbus стала удобнее. Появилась возможность считывать float переменные без танцев с бубном, просто указав тип значений. И очень важно - появилась возможность перестановки слов в float. Теперь два типа представления: float32 и float32_swap Особенность представления float разными контроллерами. Еще добавилась интерактивная консоль, через которую можно посмотреть/изменить любую переменную. У консоли более 300 команд. Отладка стала проще. Попутно причесал скрипты и исправил мелкие ошибки. Добавил синхронизацию ПЛК от OH2. Последний получает время от NTP Binding Теперь только время покажет на сколько стабильна система.
Кста, для Codesys в ихнем магазине сейчас появился MQTT клиент за 60$. Можно было бы использовать для связки с ОН вместо Modbus. Тогда отменяется поллинг и настройка попроще. Планирую попробовать как нибудь.
Это хорошо, что добавляют протоколы обмена. Но я пока не вижу необходимости уходить от модбас. Какие явные преимущества даст mqtt перед modbus-tcp?
@lingvo, > для Codesys в ихнем магазине сейчас появился MQTT клиент за 60$ это тот, который стоил > 200? - Topic wildcards are not supported (+/#) - Channel encryption via SSL/TLS is not supported - MQTT QoS level QoS2 is not supported - CODESYS Development System V3.5.8.10 интересно что делать, если у меня codesys2.3 с библиотеками от wago. @Smith2007, >Какие явные преимущества даст mqtt перед modbus-tcp? Преимущество в реализации. modbus master должен периодически опрашивать все slave. И сами понимаете для комфортного управления это опрос должен быть довольно частым. Нет качества обслуживания QoS. Практический пример: ПЛК Wago 750-881 управляет всем в умном доме. Дополнительно управление осуществляется с планшетов (4 штуки), на которых установлена Myscada (modbus/tcp), а также Node-Red для сложных сценариев. ПЛК соответственно в роли slave. Все планшеты и node-red одновременно шлют запросы по modbus/tcp (работая даже в фоне) и в какой то момент у меня посыпались ошибки .. оказалось исчерпан лимит обращений к ПЛК. пришлось уменьшить количество выводимый на планшет информации и группировать запросы. Вторая проблема удаленный доступ через интернет. у modbus нет ни авторизации ни шифрования. Это конечно решается через VPN но нужен внешний IP, через GSM вообще проблема. на MQTT это решалось бы в разы проще. ПЛК один раз публикуют, остальные слушают. Ну сам ПЛК слушает брокера, на который публикуют планшеты. Я пробовал открытую библиотеку Codesys-Mqtt-lib, но в ней только публикация, нет подписки и самое плохое что в каком то банальном сценарии (вроде когда недоступен брокер) она вешает контроллер наглухо.
Не вижу в этом особой проблемы, если конечно датчиков и переменных за 1К не перевалит И тут не вижу проблемы. Отдельный vlan решает эту задачу. С подобным пока не сталкивался. С этим соглашусь. В то же время Вы сами ответили на этот вопрос. Но я бы добавил еще момент... а нужно ли выносить управление за пределы локалки? Это в любом случае понижает отказоустойчивость системы. Со стороны инета достаточно что-то показать и может пару значений изменить. И это гораздо удобнее и безопаснее решается посредством смс команд, которые можно подавать контроллеру подключив к нему модем. Замечу, что при этом даже доступа в инет не нужно. (Ну мало ли чего у Вас дома произошло или на линии провайдера) Я одно время вынес за пределы локалки интерфейс OH, но затем понял, что я им пользуюсь только для: посмотреть несколько датчиков и поставить систему на охрану (если забыл когда уезжал). Доступ из вне отключил. зы. По поводу mqtt я только "за", если добавится еще один протокол. Но пока, на сегодня modbus по прежнему широко используется в промышленности, а значит довольно надежен. И это подтверждает мой опыт использования его в доме. Не в качестве рекламы, но как бы не обсуждали продукцию компании Овен - все оборудование работает исправно с 2013 года. Косяки в своем ПО не в счет
Сегодня случайyо набрел на сайт narodmon.ru Спойлер: narodmon.ru Геоинформационный SaaS сервис по отображению на карте мира и контролю (на ПК, смартфонах и других гаджетах) показаний датчиков своих участников (температуры, влажности, атм. давления, скорости и направления ветра, радиации, энергопотребления и многих других), а также частных и городских веб-камер для публичного или частного (приватного) просмотра и подумал, а почему бы мне не поделиться метеоинформацией? Посмотрел, что для этого требуется... оказалось есть множество способов передать инфу. От простейшего GET до MQTT. Дописал несколько строк в rules и на карте увидел опубликованную температуру. Код: // // Подключение к проекту Народный мониторинг // Передача показаний уличной температуры Tout // rule "narodmon.ru" when Time cron "0 0/6 * 1/1 * ? *" then // mac адрес сетевой карты (любого своего компа, что бы перехлестов не было) val String mac="0514D1E1C0456" var Number t1=Tout.state.format("%.2f") var String url="https://narodmon.ru/get?ID=" + mac + "&T1=" + t1 narodmon.sendCommand( url ) sendHttpGetRequest(url) end В items добавил String narodmon "URL [%s]" Tout - это переменная modbus в которой содержится температура на улице Number Tout "Т: улица [%.1f °C]" <heating> (Group_Chart) { modbus="<[slave2:1]" } Оказалось все так просто зы. В принципе для работы этого сервиса не требуется создание переменной в разделе Item (String narodmon). Это я делал для отладки, что бы в консоле видеть, что за строку формирует код.
В течении почти 2-ух лет успешно работает голосовые сообщения, которые генерирует система. В плане добавить различные сообщения по домофону с опознаванием входящего и многое другое. Для синтеза речи использовал Yandex. speech Простой и удобный сервис. Для начала работы с ним требуется создать в личном кабинете Яндекс ключ для сервиса. Я сделал php- скрипт, который вызывается из OH2 (Get ...) Строка текста формируется динамически, затем передается в php скрипт, который преобразует текст в голосовое сообщение. Результирующий файл можно воспроизводить как угодно. Я же воспроизвожу его при помощи FreePBX (Asterisk) на все подключенные телефоны подачей вызова на номер Paging. Если кому интересно вот сам скрипт Код: <?php ################################################### # Ubuntu 16.04/ PHP7 # # Скрипт получает на входе текстовую строку, # синтезирует из нее речевой аудиофайл, # копирует полученный файл на сервер asterisk # подключается к asterisk ami и воспроизводит файл/ # # Для работы скрипта требуется установить php-ssh2 # # sudo apt-get update # sudo apt-get install php-ssh2 # Сервер на котором запускается php и сервер # asterisk - на разных ip ################################################### # --- Входные переменные --- $speaker=$_REQUEST['speaker']; // Голоса: Женские - jane, oksana, alyss omazh, Мужские - zahar, ermil $emotion=$_REQUEST['emotion']; // Эмоциональная окраска голоса. Возможные значения: // good — радостный, доброжелательный // evil — раздраженный // neutral — нейтральный (используется по умолчанию) $speech=$_REQUEST['speech']; // имя файла синтезированного текста (file.mp3) $beep=$_REQUEST['beep']; // имя файла сигнала начала сообщения (file.mp3) $text=$_REQUEST['text']; // Синтезируемый текст # --- настройка Asterisk --- $strhost = "192.168.1.11"; // Адрес сервера FreePBX $strport = "5038"; // Порт AMI $timeout = "100"; $ami_user = "openhab\r\n"; // Пользователь AMI интерфейса FreePBX $ami_password = "password\r\n";// Пароль AMI $ssh_user = "root"; $ssh_password = "password_root"; $errno=0 ; $errstr=0 ; # ------ Настройки Yandex.Speech --------------- $KeyCode="2a434534e-5665-487867-b7835-83546665ee9c11a"; // API Key Eandex.Speech if (empty($speaker)) { $speaker = "omazh"; }; // значения по умолчанию if (empty($emotion)) { $emotion = "evil"; }; // значения по умолчанию if (empty($speech)) { $speech = "speech.mp3"; }; // значения по умолчанию if (empty($text)) { $text = "Внимание! Текст сообщения не определен!"; }; // значения по умолчанию $SpeechFile="/tmp/$speech"; // Путь/Имя файла в который будет записана синтезируемая речь echo "$SpeechFile \r\n"; $qs = http_build_query(array("format" => "mp3","lang" => "ru-RU","speaker" => $speaker,"key" =>$KeyCode,"emotion" => $emotion, "text" => $text)); $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: \r\n"))); $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); $i=file_put_contents($SpeechFile, $soundfile); echo("i=$i \r\n"); // Если синтезировали речь - копируем полученный файл на FreePBX if ( $i > 0 ) { // Подключаемся к серверу по ssh if ($connection = ssh2_connect($strhost, 22)) { echo "Connection Successful!\r\n"; } else { die("Connection Failed...\r\n"); }; // авторизуемся на сервере if (ssh2_auth_password($connection, $ssh_user, $ssh_password)) { echo "Authentication Successful!\r\n"; } else { die("Authentication Failed...\r\n"); } // Копируем файл на FreePBX ssh2_scp_send($connection, $SpeechFile, "/tmp/$speech", 0644); // /tmp/$speech - каталог должен совпадать с каталогом из контекста // /etc.asterisk/extention_custom.conf -> pa-custom -> Playback(/tmp/${var1}) if (!$connection) die('Send failed'); }; #-------------- вызываем asterisk AMI и воспроизводим синтезированный аудиофайл--------------------- $var1 = basename($speech, '.mp3'); $beep = basename($beep, '.mp3'); $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: $ami_user"); fputs ($sconn, "Secret: $ami_password"); 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"); fputs ($sconn, "Async: yes\r\n"); fputs ($sconn, "Variable: beep=$beep\r\n"); fputs ($sconn, "Variable: var1=$var1\r\n"); fputs ($sconn, "Action: Logoff\r\n\r\n"); usleep (500); fclose ($sconn); } ?> Вызов скрипта из rules Код: SpeechTxt = SpeechTxt.encode('UTF-8') var String url="http://192.168.1.5/intercom.php?speech=speech.mp3&beep=alert8675.mp3&text=" + SpeechTxt logInfo("Protect", "url=" + url) sendHttpGetRequest(url) Для asterisk необходимо создать пользователя и создать paging и добавить extention_custom.conf Код: [pa-custom] exten => s,1 (start),Wait(2) exten => s,n,NoOp(${beep}) exten => s,n,NoOp(${var1}) exten => s,n,Set(CHANNEL(language)=ru) ;exten => s,n,Playback(/var/lib/asterisk/sounds/${var1}) ;exten => s,n,Playback(/var/lib/asterisk/sounds/speech) exten => s,n,Playback(/var/lib/asterisk/sounds/custom/${beep}) exten => s,n,Playback(/tmp/${var1}) ;exten => s,n,Wait(5) ;exten => s,n,WaitExten(10) ;exten => s,n,Playback(vm-goodbye) exten => s,n,Hangup() Если использовать иной метод оповещения - скрипт можно сильно упростить.
Пользуясь простотой реализации и наличием часа свободного времени, реализовал ежедневное звуковое оповещение о температуре за окном. голосовые сообщения Ежедневно в 10:00 сообщение о температуре за окном Код: rule "Voice info" when Time cron "0 0 10 1/1 * ? *" then var String Message="Температура за окном " var Number t1=Tout.state.format("%.1f") Message= Message + t1 + " градусов" logInfo("Voice info", "Message=" + Message) Message = Message.encode('UTF-8') var String url="http://192.168.1.5/intercom.php?speech=speech.mp3&beep=Bell_Airport.mp3&emotion=good&speed=0.8&speaker=jane&text=" + Message logInfo("Voice info", "url=" + url) sendHttpGetRequest(url) end Следующим этапом все же хочется прикрутить распознавание голосовых команд.