1 2 3 4 5 6 7 8 9 10 9.5/10 9,74оценок: 35

Автоматизация инженерных систем в доме или как я обучал Дом уму-разуму

Тема в разделе "Умный дом", создана пользователем Smith2007, 09.01.15.

  1. set1265
    Регистрация:
    16.08.11
    Сообщения:
    1.310
    Благодарности:
    701

    set1265

    Живу здесь

    set1265

    Живу здесь

    Регистрация:
    16.08.11
    Сообщения:
    1.310
    Благодарности:
    701
    Адрес:
    Тамбов
    Должна была уйти, но не ушла. Соединение по любому параллельное, и нулевых сопротивлений не бывает. Все зависит от начальной энергии заряда, мелкие проскочат, крупные спалят.

    ОПНы и им подобные ставятся между силовыми линиями и землей и является лишь последней ступенькой в многоступенчатой защите которая должна начинаться еще на подстанции, и должны срезать последние остатки импульсов гуляющих в питающей сети, не пуская их в дом.

    Вы всерьез думаете что силу способную влегкую швырнуть на несколько метров ТВ весом под 20 кг, и при этом выбить 2 окна из 4х (от слова совсем) наружу, и все это не в туалете метр на метр а в помещении площадью боле 50 кв м., способен остановить какой то мелкий девайс размером с автоматик, да при прямом попадании от него и потрахов не останется.

    Это напрасно. Только у нас в регионе за эти 2 лета несколько официально зарегистрированных смертельных случаев, некоторые разговаривали по телефону, одна из погибших знакомая моего приятеля.
    Речь же не про выгорит не выгорит, а про потенциальную опасность для людей проходящих в непосредственной близости от этого заземления, забитого в твоем дворе, и выведенного на крышу.
     
    Последнее редактирование: 07.07.17
  2. mentew
    Регистрация:
    06.01.14
    Сообщения:
    2.703
    Благодарности:
    19.491

    mentew

    Живу здесь

    mentew

    Живу здесь

    Регистрация:
    06.01.14
    Сообщения:
    2.703
    Благодарности:
    19.491
    Адрес:
    Россия
    @asakharov, а что скажете о вызывных панелях 2N Helios? Приходилось сталкиваться?
     
  3. asakharov
    Регистрация:
    03.10.13
    Сообщения:
    2.250
    Благодарности:
    939

    asakharov

    Живу здесь

    asakharov

    Живу здесь

    Регистрация:
    03.10.13
    Сообщения:
    2.250
    Благодарности:
    939
    Адрес:
    Москва
    Да, приходилось.
    Только обратите внимание, что 2N Helios - это целое семейство вызывных панелей. Я имел дело с Helios Verso. Их еще по OEM соглашению Control4 использует.
     
  4. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    ip 54. Как ее на улице ставить?
    Beward тоже ip 54.
    Это только для внутренних помещений сгодится.
     
  5. mentew
    Регистрация:
    06.01.14
    Сообщения:
    2.703
    Благодарности:
    19.491

    mentew

    Живу здесь

    mentew

    Живу здесь

    Регистрация:
    06.01.14
    Сообщения:
    2.703
    Благодарности:
    19.491
    Адрес:
    Россия
    Да уж, тоже расстроило это, у них была подходящая компактная модель.

    У Mobotix'a мне подходит одиночный модуль CamCore (размер 100х100мм, просто "крошка" рядом с остальными вызывными SIP панелями), но у него нет выходов для считывателя/замка/кнопки выхода. Однако, как я понимаю, можно приобрести IO модуль, на котором эти контакты есть. Но цена крайне некрасивая, да. Еще смущает внутренний монитор, непривычной квадратной формы и тоже с некрасивой ценой в 65к рублей, а мне их надо 2. За эту цену проще купить 2 айпада мини четвертого поколения и поставить официальное приложение.
     
    Последнее редактирование: 09.07.17
  6. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Нашёо вот такую панель - SIP-домофон ExtLink Video
    extlink-bottom.jpg extlink-front.jpg

    По описанию характеристик очень интересна.
    И производитель Россия.
    Написал запрос. Жду ответа.

    Еще нашел антивандальную, влагозащищенную панель производства России - SIP/IP домофон Комендантъ VoIP-DP1.
    Минимум функций но цена совсем бюджетная. 7 тыр.
    Отсутствует видео камера и считыватель
    DSC00004-600x450.gif
     
  7. asakharov
    Регистрация:
    03.10.13
    Сообщения:
    2.250
    Благодарности:
    939

    asakharov

    Живу здесь

    asakharov

    Живу здесь

    Регистрация:
    03.10.13
    Сообщения:
    2.250
    Благодарности:
    939
    Адрес:
    Москва
    Не знаю, какое у Helios Verso класс защиты, но прокладки резиновые в нем стоят.
    Если хочется полной неубиваемости, у них есть Helios Force. Брутальная такая. Ее коллеги из шланга поливали, все работает.
     
  8. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Собрался с духом и перешел на версию OpenHAB2.
    Имеются некоторые отличия, но не значительные. Практически все настроечные файлы перезалил в новую систему и заработало!
    Из плюсов:
    Работа с modbus стала удобнее. Появилась возможность считывать float переменные без танцев с бубном, просто указав тип значений. И очень важно - появилась возможность перестановки слов в float.
    Теперь два типа представления: float32 и float32_swap
    Особенность представления float разными контроллерами.

    Еще добавилась интерактивная консоль, через которую можно посмотреть/изменить любую переменную. У консоли более 300 команд. Отладка стала проще.

    Попутно причесал скрипты и исправил мелкие ошибки.
    Добавил синхронизацию ПЛК от OH2. Последний получает время от NTP Binding
    Теперь только время покажет на сколько стабильна система.
    2017-09-03_20-38-18.png 2017-09-03_20-36-42.png
     
  9. lingvo
    Регистрация:
    25.11.15
    Сообщения:
    1.416
    Благодарности:
    458

    lingvo

    Живу здесь

    lingvo

    Живу здесь

    Регистрация:
    25.11.15
    Сообщения:
    1.416
    Благодарности:
    458
    Кста, для Codesys в ихнем магазине сейчас появился MQTT клиент за 60$. Можно было бы использовать для связки с ОН вместо Modbus. Тогда отменяется поллинг и настройка попроще. Планирую попробовать как нибудь.
     
  10. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Это хорошо, что добавляют протоколы обмена. Но я пока не вижу необходимости уходить от модбас.
    Какие явные преимущества даст mqtt перед modbus-tcp?
     
  11. opyzhov
    Регистрация:
    03.10.11
    Сообщения:
    542
    Благодарности:
    140

    opyzhov

    Живу здесь

    opyzhov

    Живу здесь

    Регистрация:
    03.10.11
    Сообщения:
    542
    Благодарности:
    140
    Адрес:
    Санкт-Петербург
    @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, но в ней только публикация, нет подписки и самое плохое что в каком то банальном сценарии (вроде когда недоступен брокер) она вешает контроллер наглухо.
     
    Последнее редактирование: 07.09.17
  12. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Не вижу в этом особой проблемы, если конечно датчиков и переменных за 1К не перевалит
    И тут не вижу проблемы. Отдельный vlan решает эту задачу.
    С подобным пока не сталкивался.
    С этим соглашусь. В то же время Вы сами ответили на этот вопрос.
    Но я бы добавил еще момент... а нужно ли выносить управление за пределы локалки? Это в любом случае понижает отказоустойчивость системы.
    Со стороны инета достаточно что-то показать и может пару значений изменить. И это гораздо удобнее и безопаснее решается посредством смс команд, которые можно подавать контроллеру подключив к нему модем. Замечу, что при этом даже доступа в инет не нужно. (Ну мало ли чего у Вас дома произошло или на линии провайдера)

    Я одно время вынес за пределы локалки интерфейс OH, но затем понял, что я им пользуюсь только для: посмотреть несколько датчиков и поставить систему на охрану (если забыл когда уезжал). Доступ из вне отключил.

    зы. По поводу mqtt я только "за", если добавится еще один протокол. Но пока, на сегодня modbus по прежнему широко используется в промышленности, а значит довольно надежен. И это подтверждает мой опыт использования его в доме.

    Не в качестве рекламы, но как бы не обсуждали продукцию компании Овен - все оборудование работает исправно с 2013 года.
    Косяки в своем ПО не в счет :)
     
    Последнее редактирование: 07.09.17
  13. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Сегодня случайyо набрел на сайт 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]" }

    Оказалось все так просто :)
    2017-09-10_02-29-44.png

    зы. В принципе для работы этого сервиса не требуется создание переменной в разделе Item (String narodmon).
    Это я делал для отладки, что бы в консоле видеть, что за строку формирует код.
     
    Последнее редактирование: 10.09.17
  14. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    В течении почти 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()
    
    Если использовать иной метод оповещения - скрипт можно сильно упростить.
     
  15. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Пользуясь простотой реализации и наличием часа свободного времени, реализовал ежедневное звуковое оповещение о температуре за окном.

    голосовые сообщения
    Ежедневно в 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
    
    Следующим этапом все же хочется прикрутить распознавание голосовых команд.