Интеграция AimyLogic с SIP АТС Asterisk

для приема звонков с офисной АТС Asterisk на сайте AimyLogic есть инструкция, но по ней настроить не удалось. Вот пример настроек авторизации из статьи:

1. Перейдите в Aimylogic.
2. Откройте Профиль → Настройка телефонии → Создать подключение.
3. В поле Логин укажите match_trusted_ip_port, поле Пароль оставьте пустым.
4. В поле Хост/IP укажите внешний IP адрес вашей SIP ATC, а в поле Порт — соответствующий вашим настройкам порт.
5. Активируйте переключатель Принимать входящие звонки.
6. В разделе Расширенные настройки отключите параметр Требуется регистрация.

В таком варианте не работает. Отработало так:

  1. Перейдите в Aimylogic.
  2. Откройте Профиль → Настройка телефонии → Создать подключение.
  3. В поле Логин укажите внутренний номер абонента на Asterisk ,
  4. В поле Пароль прописать авторизацию для указанного SIP номера.
  5. В поле Хост/IP указать внешний IP адрес Asterisk. Мы указывали именно IP, но доменное имя наверняка тоже сработает.
  6. В поле Порт — проброшенный порт на Asterisk.
  7. Активировать переключатель Принимать входящие звонки.
  8. Визуально В разделе Расширенные настройки ВКЛЮЧИТЬ параметр Требуется регистрация.
  9. Прописать на firewall разрешение на звонки с IP адреса: 82.202.218.130.
  10. На Asteriske ограничить исходящие звонки для этого SIP номера только внутренними.
  11. После того как создано соединение в настройках Aimylogic на SIP аккаунт Asterisk, в логах данные о коннекте отображаются не сразу, а спустя порядка 45 сек. Об этом не написано в доке Aimylogic, но при отладке важно.

Перевод звонка из AimyLogic на оператора Asterisk

В сценариях AimyLogic есть блок «Перевод звонка на оператора». В нем указывается просто внутренний номер абонента или группы абонентов на Asterisk. Звонок нормально отрабатывает переход.

Для этого блока есть два варианта ветвления:

  • Перевод состоялся — отрабатывает сразу после того как после успешного соединения завершен разговор (положили трубку). Т.е. в сценарии после общения с оператором можно продолжить логику отработки сценария.
  • Перевод не состоялся — отрабатывает, если не сработал перевод на оператора и можно реализовать какую-то бизнес-логику, вроде фиксации номера звонка в качестве лида в Битриксе.
Рубрика: IT рецепты | Метки: | Оставить комментарий

Озвучивание номера телефона голосовым ботом AimyLogic

После того как голосовой ассистент определил номер телефона позвонившего, либо спросил у клиента, нужно верифицировать распознанные цифры. Если в блок синтез речи поставить фразу:

client_phone = $rawRequest.caller;

то при озвучке робот прочитает 9 миллионов и т.д., что неудобно для восприятия человеком.

Номер нужно разбить на блоки и между каждым блоком поставить символ -, который скажет боту сделать небольшую паузу при произношении. Чтобы это сделать, вставим в синтез речи блок </> код с таким блоком кода на JavaScript:

$client_phone = $rawRequest.caller;
if ($client_phone) {
    $text_client_phone = $client_phone.toString();
    $text_client_phone = $text_client_phone.replace(/(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})/, '$1-$2-$3-$4-$5');
}

Если не проверять $client_phone на null, то при тестировании бота чатом переменная с номером $rawRequest.caller будет неопределена и приложение вывалится по ошибке.

Отмечу, что блок «</> код» можно перетащить мышкой и поставить до блока «Синтез речи» или после. Это важно, поскольку в предыдущем блоке, с которого идет переход, может выполнятся некоторое действие после которого нужно выполнить JavaScript код, чтобы в «Синтезе речи» бот читал уже адаптированную для произнесения голосом переменную.

Регулярное выражение удобно проверять на сайте https://regex101.com/.

Проверка регулярного выражения на сайте https://regex101.com/.

После обработки регулярным выражением номер телефона разбит на блоки цифр, удобные для восприятия на слух. Если АОН некорректно определил номер, либо клиент хочет, чтобы ему перезвонили на другой — нужно узнать у клиента удобный ему телефон. Сначала используем блок из раздела: «Ещё блоки» -> «Продвинутые инструменты» -> «PHONE TO $VAR». Помещаем фразу сказанную клиентом в переменную $client_phone.

Обратите внимание на то, что в сообщения об ошибке лучше добавлять несколько фраз, чтобы озвучка робота не была слишком механической.

После блока «PHONE TO $VAR» добавляем «Синтез речи» с фразой о проверке, но в ней будем использовать переменную $text_client_phone.

Давайте проверим. Ваш номер: $text_client_phone.

Перед озвучиванием фразы добавим блок «</> код» в который вставим следующий код:

if ($client_phone) {
    $text_client_phone = $client_phone.toString();
    $text_client_phone = $text_client_phone.replace(/(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})/, '$1-$2-$3-$4-$5');
}

После того как робот Aimylogic произнес адаптированный для озвучивания номер телефона, проверяем, корректно ли бот распознал фразу с номером и по «Интентам» переходим на дальнейшую обработку.

Рубрика: IT рецепты | Метки: | Оставить комментарий

Передача данных из Aimylogic в лид Bitrix

После того как чат-бот или умный IVR собрал данные клиента их нужно передать в CRM для дальнейшей обработки. Для передачи информации в Битрикс необходимо сделать ряд шагов:

  1. Создать в Битриксе webhook.
  2. Сформировать и протестировать в Postman запрос к Битриксу.
  3. Вставить запрос в блок HTTP-запрос Aimylogic.
  4. Запустить сценарий, чтобы убедится, что скрипт отрабатывает корректно.

В целом ничего сложного, но есть нюансы.

Создание лида в Битрикс через метод GET

Используя примеры из документации к Битрикс создали входящий webhook. Входящий вебхук запускается при обращении к порталу Битрикс по определенному URL. Можно открыть в браузере специально созданный URL и Битрикс выполнит соответствующее действие. Это будет простой HTTP запрос по определенному адресу.

В итоге мы получаем URL адрес вида: https://yourportal.bitrix24.ru/rest/23/ydgtxxxxxxxxxx/crm.lead.get.json?id=1

URL имеет определенную структуру:

  • https://yourportal.bitrix24.ru — адрес портала Битрикс
  • /rest — указание, что идет обращение к REST API
  • /23 — ID пользователя, создавшего доступ
  • /ydgt3vidxxxxxxx — строка ключа доступа
  • /crm.lead.get — метод, который будет использоваться
  • .json — формат ответа, т.н. «транспорт» — json или xml (по-умолчанию json)
  • ?id=1 — наименование и значение параметра, который мы передаем в Битрикс

Как видно из структуры ссылки, все значения, необходимые для работы метода, передаются в параметрах URL адреса.

Для каждого метода существует свой набор необходимых параметров, которые описаны в документации Битрикс по работе с REST API.

Посмотрим на примере создания лида, как работает передача данных в Bitrix с помощью метода GET. В документации Битрикса для создания лида используется метод crm.lead.add. Параметры метода описаны в crm.lead.fields. Например, для создания лида можно создать строку с наиболее часто используемыми параметрами:

  • fields[TITLE] — Название лида. Если не указать, то имя лида будет «Лид #[номер лида]».
  • fields[COMPANY_TITLE] — Название компании.
  • fields[SOURCE_ID] — ID источника.
  • fields[NAME] — имя.
  • fields[LAST_NAME ] — фамилия.
  • fields[SECOND_NAME] — отчество.
  • fields[POST] — должность.
  • fields[ADDRESS] — адрес.
  • fields[ADDRESS_CITY] — город. Например, Нижний Новгород.
  • fields[PHONE][0][VALUE] — Телефон.
  • fields[PHONE][0][VALUE_TYPE] — Тип телефонного номера (Например: WORK, MOBILE, HOME).
  • fields[EMAIL][0][VALUE] — Email.
  • fields[EMAIL][0][VALUE_TYPE] — Тип email (Например: WORK, HOME).
  • fields[COMMENTS] — Комментарий.
  • fields[ASSIGNED_BY_ID] — ID ответственного.
  • fields[SOURCE_DESCRIPTION] — дополнительно об источнике.
  • fields[STATUS_DESCRIPTION] — сведения о статусе.
  • fields[OPPORTUNITY]
  • fields[CURRENCY_ID] — валюта.
  • fields[EXCH_RATE] — курс валюты.
  • fields[SOURCE_ID] — Статус из справочника. Список возможных идентификаторов можно получить методом crm.status.list с фильтром filter[ENTITY_ID]=SOURCE.
  • fields[UF_CRM_1456385609] — Так указываются пользовательские поля. Код для каждого поля надо смотреть в Битрикс24.

Например, ссылка будет такой: https://yourportal.bitrix24.ru/rest/23/ydgt3vxxxxxxxxx/crm.lead.get/?fields[TITLE]=ИП Титов&fields[NAME]=Андрей&fields[PHONE][0][VALUE]=+7960XXXXX&fields[PHONE][0][VALUE_TYPE]=MOBILE

Название лида передавать без кавычек, иначе кавычки останутся в названии!

После запуска в браузере создастся лид с указанными параметрами. В Postman-е ссылка будет выглядеть следующим образом:

После нажатия на кнопку «Send» Битрикс вернет JSON скрипт с результатами.

Передача параметров лида из Aimylogic в Bitrix через метод GET

Взаимодействие Aimylogic с Битрикс описано в нескольких статьях на сайте:

К сожалению, при использовании блока HTTP-запроса примеры из статей не отрабатывают. При использовании POST запроса лиды создаются, однако параметры передаваемые в BODY в лиде отсутствуют. Возможно, есть какие-то тонкости с настройкой или передачей параметров, которые опущены в указанных выше статьях.

У меня нормально отрабатывает только вариант передачи GET в блоке HTTP-запрос. Не очень удобно, поскольку длинная строка не видна в блоке, но других вариантов, пока что, найти не удалось.

Пример блока HTTP-запрос для передачи параметров в Битрикс.

URL для метода GET с передачей параметров следующий:

https://xxx.xxxxxx.ru/rest/177/4vxxxxxxxxxxx/crm.lead.add/?fields[TITLE]=ТЕСТ&fields[NAME]=${myNAME}&fields[PHONE][0][VALUE]=${myPHONE}&fields[PHONE][0][VALUE_TYPE]=MOBILE&fields[COMMENTS]=${myTEXT}

Название лида передавать без кавычек, иначе кавычки останутся в названии!

Пемеремнные в URL запроса добавляются в следующем виде:

${varname}, где varname — имя переменной.

В методе POST в BODY переменные передаются $varname.

Передача параметров лида из AimyLogic в Bitrix через метод POST

Несколько дней бесполезного общение с техподдержкой AimyLogic и Битрикса не привели к результату. JSON из body POST запроса отправляемого из AimyLogic упорно не желал «ложится» в Битрикс. Лид создавался, но без параметров из JSON. Техподдержка порекомендовала в Postman поменять TEXT на JSON, однако это не выправило ситуацию.

Наконец, я случайно добавил в заголовок (Headers) Content-Type:

Content-Type: application/json

и после этого JSON из POST запроса «лег» в лид Битрикса корректно. Создался лид с переданными в JSON параметрами.

Очень странно, что об этом моменте не знают в техподдержке обеих платформ. В статьях на сайте Aimylogic, видимо, специально опустили этот момент, чтобы за помощью обращались внедренцам за деньги. 🙂 Собственно, когда обратился в компанию «Умные решения» за разъяснением их статьи, мне так и сказали: «Давайте мы поучаствуем в вашем проекте и решим проблему с передачей данных». Я негодую… Если бы помогли, то подумал бы о привлечении их на каких-то этапах проекта, а при таком подходе — «нет уж, увольте».

Соответственно, при отправке через Postman нужно ОБЯЗАТЕЛЬНО включить Headers:

Из URL, соответственно, убираются все параметры и остается только строка вида:

https://yourportal.bitrix24.ru/rest/23/ydgt3vxxxxxxxxx/crm.lead.get/

или

https://yourportal.bitrix24.ru/rest/23/ydgt3vxxxxxxxxx/crm.lead.get.json

И аналогичным образом при отправке POST запроса из Aimylogic обязательно должен быть указан заголовок Content-Type. Без этого JSON из body при отправке в Битрикс через метод POST не отрабатывает, хотя в логах REST API в Битриксе он отображается.

Upd: в очередной раз изучая документацию AimyLogic я наткнулся на статью, где указано про этот момент с Content-Type. Странно, что техподдержка Aimylogic не знает этого.

При передаче параметров переменная в JSON должна ОБЯЗАТЕЛЬНО стоять в кавычках, иначе параметры JSON не «ложатся» в Битрикс:

{
"fields":
    { 
        "TITLE": "AimyLogic", 
        "NAME": "Глеб", 
        "COMMENTS": "$myTEXT",
        "SECOND_NAME": "Егорович"
    }
} 

Логи REST API в Битриксе можно посмотреть здесь https://xxxxxx.ru/bitrix/admin/perfmon_table.php?lang=ru&table_name=b_rest_log. Включить логирование можно в настройках модуля REST API (Административный раздел -> Настройки -> Настройки продукта -> Настройки модулей -> REST API  -> Логирование).
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=41&LESSON_ID=20212&LESSON_PATH=3911.20208.20212

Получение имени пользовательского поля Битрикс

Чтобы узнать ID созданного пользовательского поля для лидов, необходимо:

  • перейти в раздел CRM → Настройки → Настройки форм и отчетов → Пользовательские поля → Лид (Список поле);
  • в списке найти созданное пользовательское поле и кликнуть на нем;
  • в поисковой строке браузера, в конце url, отобразится имя поля в виде: UF_CRM_XXXXXXXXXX
  • Полная строка выглядит примерно так: https://your_bitrix_domain.ru/crm/configs/fields/CRM_LEAD/edit/UF_CRM_XXXXXXXXXX/, где UF_CRM_XXXXXXXXXX — это и есть ID.

Передача источника (SOURCE_ID) в лид Битрикс

Для лида важен источник — SOURCE_ID. В справочниках я добавил источник с именем: AimyLogic Smart IVR.

Нужно получить его SOURCE_ID. Получм список всех SOURCE и на среди них нужный из справочника «Источник».

https://yourportal.bitrix24.ru/rest/23/ydgt3vixxxxxxxx/crm.status.list?filter[ENTITY_ID]=SOURCE

После запуска строки в браузере или postman получаем JSON, одной из строк которого:

{"ID":"180","ENTITY_ID":"SOURCE","STATUS_ID":"14","NAME":"AimyLogic Smart IVR","NAME_INIT":"","SORT":"210","SYSTEM":"N","CATEGORY_ID":"0","COLOR":"#D3EEF9","SEMANTICS":""}

Искомый «SOURCE_ID»:»14″.

Другой вариант найти значение SOURCE_ID в браузуре по F12 зайти в режим разработчика и поиском найти источник добавленный в справочник «Источники»:

Это значение подставляется в &fields[SOURCE_ID] = 14.

Рубрика: IT рецепты | Метки: | Оставить комментарий

Расстояния работы датчиков DS18B20 с различными типами кабеля

Расстояние стабильной работы датчика DS18B20 зависит не только от производителя (Maxim Integrated, Texas Instruments, Dallas Semiconductor, UMW, Youtai и пр.), но также от напряжения питания датчика и типа кабеля.

Ниже приведены результаты теста для DS18B20 подключенного по трехпроводной схеме питания на UTP (FTP) кабеле с монолитной жилой и различными материалами жилы: Cu (медь) и CCA («Copper Coated Aluminum» или омедненный алюмииний).

Для электрического кабеля, например, 3 * 0,75 — расстояние стабильной работы будет меньше, чем в случае UTP кабеля. Даже для датчиков DS18B20 подключенных по 5В при расстояниях больше 12 м, в ряде случаев, может наблюдаться нестабильная работа.

Наилучшую стабильность обеспечивают токовые датчики 4..20 мА. Они стабильно работают и на обычных электрических проводах.

Тип кабеляДлина кабеля, мНаличие связи
ДТВ-01-12В (токовый)DS18B20 (3.3V)DS18B20 (5 V)
CSS-FTP-4CU30+++
50++
70++
100++
Омедненный алюминий20+++
25+++
30++-+
50++
70не тестировали
ПВС 3×1,5 (электрический кабель)5++
10++
15++-
20+
25+
30+
35+
  • «+» — датчик работает стабильно.
  • «+-» — датчик работает нестабильно.
  • «-» — датчик не работает.
Рубрика: IT рецепты | Оставить комментарий

Ethernet конвертер Modbus RTU в Modbus TCP EletechSup ET69C02 (RS485)

Электрический котел Эван (EVAN) NEXT PLUS оснащен RS485 интерфейсом с поддержкой Modbus RTU. Мне понадобилось подключить его к сети Ethernet. Для этого я использовал недорогой китайский конвертер Modbus RTU в Modbus TCP: EletechSup ET69C02. Описание устройства дано на китайском на станице http://gkwiki.cn/doku.php?id=gt1001.

Питание платы от 12В. Я использовал БП на DIN рейку Faraday 12W/12-24V/DIN.

  • Клеммы питания подключаем к контактам БП (GND и VIN), как показано на рисунке.
  • RS485 A+/B- подключаем к соответствующему разъему на плате контроллера электрокотла EVAN NEXT PLUS.
  • Ethernet кабель подключаем к RJ45 разъему на плате GT1001 и к коммутатору Wi-Fi роутера на котором поднят DHCP сервер.
Подключение Modbus RTU to Modbus TCP конвертера к Modbus RTU плате.

Описание подключения к устройству подробно рассмотрено в видео. Основные шаги:

  • По-умолчанию устройство имеет статический IP адрес 192.168.0.10.
  • Чтобы подключится к веб интерфейсу для начальной установки, необходимо на ПК, с которого будет производится настройка, установить IP адрес из подсети 192.168.0.х. Я задал IP: 192.168.0.1.
  • Зайти в браузере на IP: 192.168.0.10.
  • Откроется страница на китайском языке, где в единственном поле нужно ввести пароль: admin. Нажать кнопку «Login», справа.
  • После авторизации в правом верхнем углу переключаемся на English.
Подключение EletechSup ET69C02 к Ethernet.

После получения доступа к веб администрированию конвертера нужно настроить Serial Port и LAN.

Настройки LAN

Выбираем:

  • Mode: Modbus Slave.
  • IP Type: DHCP. Мне удобнее привязывать статический IP адрес по MAC адресу на роутере, нежели задавать статикой.
  • Local Port: 8899. Стандартный порт для Modbus — 502. Изменил для проверки, что все отрабатывает.

Сохраним MAC адрес. Он пригодится для поиска устройства в сети.

Нажимаем Save. После чего нужно либо перегрузить преобразователь по питанию, либо зайти в System -> Reset.

Настройка Serial Port

В настройках Serial Port для работы по Modbus RTU с котлом EVAN NEXT PLUS проставляем следующие параметры:

  • BaudRate: 115200,
  • DataBits: 8,
  • StopBits: 1,
  • Parity: None,
  • Flow Control: FC, т.е. включаем.
  • Flow Control для котла NEXT PLUS должен быть ОТКЛЮЧЕН, но, видимо, из-за ошибки разработчиков конвертера ET69C02 его нужно включать, чтобы все работало (последняя прошивка на 02.2023). В конвертере Elfin EE-11 все отрабатывает корректно при выключенном Flow Control, как и должно быть.

Нажимаем Save. После чего нужно либо перегрузить преобразователь по питанию, либо зайти в System -> Reset.

После перезагрузки проверяем настройку параметров.

Подключение к котлу NEXT PLUS по Modbus RTU

Вычитаем по Modbus TCP настройки котла. В настройках котла нужно разрешить внешнее управление по Modbus. Для доступа к котлу по Modbus воспользуемся программой QModMaster: https://sourceforge.net/projects/qmodmaster/.

Function Code — 0х03 ( Read Holding Registers ), начальный адрес — 40001.

смещениепараметр
0Режим работы: 0 — Комнатный, 1 — Отопление.
1Заданная температура теплоносителя от 8 до 85
2Заданная температура воздуха от 0 до 35
3Максимальное количество ступеней мощности
4Максимальная температура теплоносителя
5Заданная температура ГВС от 40 до 75
6Состояние ГВС 1 — включено, 0 — выключено.

Function Code — 0х04 ( Read Input Registers ), начальный адрес — 30001.

смещениепараметр
0Измеренная температура теплоносителя
1Измеренная температура воздуха
2Количество включенных ступеней мощности
3Измеренная температура ГВС от 40 до 75
4Состояние клапана ГВС: 1 — ГВС, 0 — Отопление.
5Количество ступеней мощности в котле: 3, 6.
6Флаги ошибок.

Обрабатываются ошибки:

  • — неверный код,
  • — неверный адрес регистра,
  • — недопустимые данные,
  • — ведомый занят и не может обработать запрос.

Определяем IP адрес EletechSup ET69C02:

  • Ноутбук, с которого осуществляется управление, должен быть подключен по Wi-Fi к тому-же роутеру, что и сетевой кабель от EletechSup ET69C02.
  • Запускаем программу Advanced IP Scanner (https://www.advanced-ip-scanner.com/) для сканирования сетевых устройств по всему пулу IP адресов, заданных в DHCP сервере Wi-Fi роутера.
  • В списке полученных сетевых устройств находим то, у которого производитель определяется как «Jiangsu Qinheng Co., Ltd.», либо по ранее сохраненному MAC адресу.

В настройках Modbus TCP Settings введем IP адрес конвертера EletechSup ET69C02, полученный после сканирования сети утилитой Advanced IP Scanner и порт указанный в настройках EletechSup ET69C02.

Нажимаем на Commands -> Connect. Если соединение с Modbus TCP конвертером установилось нормально, то в статус-строке отобразится зеленая точка.

В настройках (Settings) уберем смещение адреса, задав Base Addr = 0 (по умолчанию стоит 1).

  • Modbus Mode: TCP.
  • Unit ID для котла EVAN NEXT PLUS: 77 (0х4D).
  • Function Code: Read Holding Registers (0x03).
  • Start Address: 40001 [Dec].
  • Number of Registers: 7.
  • Data Format: Dec.

В Commands выберем Read /Write для считывания данных. Получим значение регистров Modbus RTU. Можно проверить какие количество байт было отправлено и получено конвертером. Если RX по 0, значит надо подбирать параметры Serial Port.

Если в Commands выбрать команду Scan, то данные по Modbus будут опрашиваться с интервалом заданным в параметре Scan Rate (ms): 1000.

Изменение настроек котла EVAN NEXT PLUS по Modbus TCP/RTU

Можно не только считывать значения настроек котла NEXT PLUS, но и менять их по сети.

Function Code: 0х06 (Запись одного регистра), 0х10 ( Запись нескольких регистров ). Начальный адрес — 40001.

смещениепараметр
0Режим работы: 0 — Комнатный, 1 — Отопление.
1Заданная температура теплоносителя от 8 до 85
2Заданная температура воздуха от 5 до 35
3Максимальное количество ступеней мощности
4Максимальная температура теплоносителя
5Заданная температура ГВС от 40 до 75
6Состояние ГВС 1 — включено, 0 — выключено.

Для изменения настроек котла NEXT PLUS для начала изменим целевую температуру теплоносителя. Адрес 40001 + смещение 1 = 40002. Изменим значение в таблице с 40 на 50 и нажмем кнопку команды Read /Write. Значение на котле изменилось с 40 на 50.

Функция Write Multiple Registers (0x10) на котле NEXT PLUS по соображениям безопасности не поддерживается.

Рубрика: IT рецепты | Метки: , , | Оставить комментарий

Ethernet конвертер Modbus RTU в Modbus TCP Elfin EE-11 (RS485)

Электрический котел Эван (EVAN) NEXT PLUS оснащен RS485 интерфейсом с поддержкой Modbus RTU. Для подключения его к сети Ethernet воспользуемся недорогим китайским конвертером Modbus RTU в Modbus TCP: Elfin EE-11. У этого производителя есть варианты этого конвертера с интерфейсами Wi-Fi и GPRS.

Конвертер приобрел на Aliexpress в магазине от производителя вместе с переходником на Ethernet. Описание устройства на странице: http://www.hi-flying.com/elfin-ee10-elfin-ee11. Конвертер брал вместе с кронштейном для крепления на DIN рейку.

При подключении к Ethernet использовал штатный «EE11 Interface Conversion Cable» кабель.

Для питания использовал блок питания (БП) на DIN рейку Faraday 12W/12-24V/DIN.

  • Клеммы питания подключаем к двум средним контактам БП, как показано на рисунке.
  • Ethernet кабель подключаем к разъему кабеля «EE11 Interface Conversion Cable» и к коммутатору Wi-Fi роутера на котором поднят DHCP сервер.
  • Ноутбук, с которого осуществляется управление, подключен по Wi-Fi к тому-же роутеру.
  • Запускаем программу Advanced IP Scanner (https://www.advanced-ip-scanner.com/) для сканирования сетевых устройств по всему пулу IP адресов, заданных в DHCP сервере Wi-Fi роутера.
  • В списке полученных сетевых устройств находим то, у которого MAC адрес совадает с написанным на корпусе Elfin-EE11.
  • Вводим в браузер IP адрес назначенный Elfin-EE11. Откроется диалоговое окно авторизации.
  • Вводим логин и пароль по-умолчанию для Elfin-EE11: admin/admin. Его нужно не забыть сменить.
  • Заходим в веб страницу администрирования.
  • В настройках Serial Port Settings для котла EVAN NEXT PLUS проставляем следующие параметры:
    • Скорость: 115200,
    • DataBits: 8,
    • Stop Bits: 1,
    • Parity: None,
    • Flow Control: Disable,
    • Protocol: Modbus.

В настройках Communication Settings:

  • Protocol: Tcp Server.
  • Local Port: 8899 — это порт к которому будет идти подключение по протоколу Modbus TCP.
  • Route: UART — запросы приходящие по TCP маршрутизируются на UART.

Чтение данных с котла EVAN NEXT PLUS по Modbus TCP/RTU

Вычитаем по Modbus TCP настройки котла. В настройках котла нужно указать, что внешнее управление по Modbus. Для доступа к котлу по Modbus воспользуемся программой QModMaster: https://sourceforge.net/projects/qmodmaster/.

Function Code — 0х03 ( Read Holding Registers ), начальный адрес — 40001.

смещениепараметр
0Режим работы: 0 — Комнатный, 1 — Отопление.
1Заданная температура теплоносителя от 8 до 85
2Заданная температура воздуха от 0 до 35
3Максимальное количество ступеней мощности
4Максимальная температура теплоносителя
5Заданная температура ГВС от 40 до 75
6Состояние ГВС 1 — включено, 0 — выключено.

Function Code — 0х04 ( Read Input Registers ), начальный адрес — 30001.

смещениепараметр
0Измеренная температура теплоносителя
1Измеренная температура воздуха
2Количество включенных ступеней мощности
3Измеренная температура ГВС от 40 до 75
4Состояние клапана ГВС: 1 — ГВС, 0 — Отопление.
5Количество ступеней мощности в котле: 3, 6.
6Флаги ошибок.

Обрабатываются ошибки:

  • — неверный код,
  • — неверный адрес регистра,
  • — недопустимые данные,
  • — ведомый занят и не может обработать запрос.

В настройках Modbus TCP Settings введем IP адрес конвертера Elfin EE-11, полученный после сканирования сети утилитой Advanced IP Scanner и порт указанный в настройках Elfin EE-11: 8899.

Нажимаем на Commands -> Connect. Если соединение с Modbus TCP конвертером установилось нормально, то в статус-строке отобразится зеленая точка.

В настройках (Settings) уберем смещение адреса, задав Base Addr = 0 (по умолчанию стоит 1).

  • Modbus Mode: TCP.
  • Unit ID для котла EVAN NEXT PLUS: 77 (0х4D).
  • Function Code: Read Holding Registers (0x03).
  • Start Address: 40001 [Dec].
  • Number of Registers: 7.
  • Data Format: Dec.

В Commands выберем Read /Write для считывания данных. Получим значение регистров Modbus RTU.

Если в Commands выбрать команду Scan, то данные по Modbus будут опрашиваться с интервалом заданным в параметре Scan Rate (ms): 1000.

Изменение настроек котла EVAN NEXT PLUS по Modbus TCP/RTU

Можно не только считывать значения настроек котла NEXT PLUS, но и менять их по сети.

Function Code: 0х06 (Запись одного регистра), 0х10 ( Запись нескольких регистров ). Начальный адрес — 40001.

смещениепараметр
0Режим работы: 0 — Комнатный, 1 — Отопление.
1Заданная температура теплоносителя от 8 до 85
2Заданная температура воздуха от 5 до 35
3Максимальное количество ступеней мощности
4Максимальная температура теплоносителя
5Заданная температура ГВС от 40 до 75
6Состояние ГВС 1 — включено, 0 — выключено.

Для изменения настроек котла NEXT PLUS для начала изменим целевую температуру теплоносителя. Адрес 40001 + смещение 1 = 40002. Изменим значение в таблице с 40 на 50 и нажмем кнопку команды Read /Write. Значение на котле изменилось с 40 на 50.

Функция Write Multiple Registers (0x10) на котле NEXT PLUS по соображениям безопасности не поддерживается.

Рубрика: IT рецепты | Метки: , , | Оставить комментарий

Яндекс диск в OnlyOffice

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

Один недостаток слегка портил идиллию: нет встроенной поддержки Yandex Disk (Яндекс Диск) на который смигрировал с Microsoft Onedrive. Судя по статьям в Интернет ранее она была, но, по каким-то причинам её оттуда «выпилили». Пришлось потратить десяток минут на возвращение поддержки Яндекс Диск в OnlyOffice.

Собственно, нужно в папке C:\Program Files\ONLYOFFICE\providers\ скопировать любой из доступных дисков, например kDrive в ту-же папку, дав название новой подпапке «Yandex». Затем поправить в подпапке Yandex файл config.json следующим образом:

{
    "provider": "yandex",
    "name": "yandex disk",
    "entryPage": "https://disk.yandex.ru/client/disk",
    "extraLogout": "https://disk.yandex.ru/",
    "editorPage": "/app/office/",
    "cryptoSupport": "true",
    "icons": {
        "themeLight": {
            "connectionsList": "./assets/listicon.svg",
            "buttonLogo": "./assets/Yandex_logo_2021_Russian.svg"
        },
        "themeDark": {
            "connectionsList": "./assets/listicon_dark.svg",
            "buttonLogo": "./assets/buttonlogo_dark.svg"
        }
    }
}

Логотип Яндекс в SVG формате можно взять отсюда: https://logotip.online/blog/skachat-novyj-logotip-yandeks-2021-vektor-png-jpeg-svg/

Или отсюда: https://upload.wikimedia.org/wikipedia/commons/f/f1/Yandex_logo_2021_Russian.svg

  • Сохранить в подпапку Yandex\assets.
  • Поправить в JSON имя файла в разделе themeLight: «buttonLogo»: «./assets/Yandex_logo_2021_Russian.svg»
  • Запускаем OnlyOffice.
  • Наблюдаем, что появилась поддержка нового облачного диска «Яндекс» (см. скриншот).
  • Жмем на кнопку «Яндекс», выбираем «Подключить».
  • Авторизуемся в Яндексе (предпочитаю авторизацию по QR коду).
  • Яндекс диск появляется на отдельной закладке в OnlyOffice.
  • Можно открывать файлы с Yandex disk прямо из OnlyOffice.
Рубрика: IT рецепты | Оставить комментарий