Вот мы и подошли с вами к завершающей цикл, записи.
Здравствуйте! Рад вас всех снова видеть!
Ни к чему не призываю, но ваша подписка и палец вверх приносят вам много позитивной кармы, лично от меня:)!
Виски, печеньки? Погнали!
Уровень подготовки – начальный. Для умудренных опытом – быстрый просмотр.
Сегодняшний разговор будет о Промышленных – Профессиональных датчиках и устройствах, которые вы сможете применить у себя в доме, и которых нет в бытовом сегменте «Умных устройств» и беспроводных «Умных устройств». А именно – датчики работающие по принципу преобразования аналогово и цифрового сигналов в «проводной\цифровой» сигнал\интерфейс RS485 и протоколу ModBus.
Затронем не только датчики, но и устройства, это так же будет вам полезно, т.к. по протоколу ModBus можно соединить 2 различных устройства, которые будут обмениваться данными, любыми, даже строками, или массивами данных. Но это, пока затрагивать не будем, начнем с простого!
JetHub D1 и JetHub D1+ имеют на «борту» два интерфейса RS485.
Суть интерфейса для начинающих.
Соединение по 2 проводам различных устройств на расстоянии до 1200 метров без повторителя, с повторителем в два раза дальше, но это только теоретически:)! Устройств по всей этой линии может быть аж 247 штук (Хотя, я немного лукавлю, на самом деле стандарт описывает подключение 32 устройств, всё что больше - требует немного иного решения. Да и длина 1000м может быть только при максимальной скорости 9600 бит/с), но это теоретически:), по факту – всё зависит от устройств. Одно дело – реле, вкл\выкл, другое – датчик температуры с точностью 0.00001. Одно могу сказать, вам точно хватит даже одного канала RS485, на котором, в теории, будет 32 датчика.
Если расстояние до JetHub не очень большое, в пределах 5-10 метров, то, скорее всего, вы сможете подключить все устройства так, как вам будет удобно, например, как у меня, через клеммы. Но в идеале, в промышленных масштабах, все устройства должны быть подключены к двум основным проводам (параллельно с небольшими ответвлениями), которые идут от прибора до последней точки. Опять же, для вас пока эта информация не нужная.
Ради интереса покажу вам те устройства, которые сейчас можно купить по бросовой цене на китайском сайте.
JetHub D1 и промышленные датчики температуры.
В сегодняшней статье мы рассмотрим лишь 2 устройства:
1) Независимый измеритель влажности и температуры, работающий по RS485
2) Аналоговый датчик температуры 4…20мА, подключенный через блок входных аналоговых сигналов ОВЕН МВА8, вместо ОВЕНа может быть любой блок входных и выходных сигналов из Китая за 100 рублей.
Начнем с готового блока\датчика температуры и влажности, выглядит он примерно так:
При заказе данного устройства, были выбраны нужные параметры, а именно:
1. Что датчик должен измерять?
- Измеряем температуру и влажность (датчики бывают разные и могут контролировать Газы, CH4 например)
2. Есть ли у датчика внешние дисплеи?
- Дисплей не нужен.
3. По какому интерфейсу, или в случае именно с этим прибором, какой выходной сигнал данное устройство имеет?
- Выходной сигнал RS485 (бывают датчики с аналоговым выходным сигналом 0-5(10)В и 0(4)-20(24)мА)
Т.к. устройство имеет выход RS485, оно скорее всего работает по протоколу ModBus RTU, обращайте на это внимание!
“ – JetHub D1+ может работать не только по 2 проводам RS485 (ModBus RTU и ModBus ascii), но и через Ethernet (ModBus TCP), но устройства, работающие по Ethernet, обычно, имеют высокую стоимость.”
Подключение прибора.
С каждым прибором, обычно, идет в комплекте и инструкция. Правда в моём случае её не было, пришлось запросить у продавца.
В инструкции указаны все нужные нам параметры.
“ – Обратите внимание, сегодня будет вводная запись, и я буду рассказывать в основном про то, как подключить различные устройства к JetHub D1. О том как сменить адрес приобретенного устройства, настроить его скорость и прочие вещи, писать не буду. Если у вас будут вопросы – обращайтесь в комментариях.”
Из инструкции понятно: черный и коричневый кабель – питание, а желтый и синий RS485, А и В – ЭТО ВАЖНО!
Подключаем прибор, напряжение питания 10-30 вольт, большинство промышленного оборудования работает от 24 Вольт, и вы старайтесь строить свою сеть с источниками питания 24 Вольта.
Подключаем А и В (не путаем, А к А, В к В) к JetHub D1.
Файл инструкции можно скачать тут.
Что мы видим, и что нам в первую очередь нужно? Параметры подключения - адрес устройства и скорость, остальное, обычно, всё одинаковое.
И вот наконец, мы подошли с вами к самому интересному!
Настройка файла конфигурации.
Помните, в части 2 говорилось об установке File Editor в дополнениях Home Assistant? Вот, его час настал! Заходим в File Editor, открываем файл configuration.yaml
“ - После внесения данных в конфигурационный файл, не забудьте сохранить!”
И начинаем главные настройки, пишем туда, с нужными отступами (пробелами), это важно! Нужную информацию. Кстати, вся информация по ModBus в Home Assistant есть тут. https://www.home-assistant.io/integrations/modbus/
Из скриншота ниже, будет понятно то, что настройки самого прибора я уже изменил, т.к. скорость 4800 не типична, да и адрес, мною уже поменян. В вашем случае, укажите скорость и адрес из инструкции, кстати говоря, с регистрами тоже будут вопросы, но об этом ниже.
Адрес моего устройства 200, вашего – тот, что написан в инструкции, и скорость так же из инструкции!
Стартовые настройки, Home Assistant всегда Master, пока просто запомните это:), когда-то вам потребуется это знать, но не скоро.
Прописываем в файле конфигурации (соблюдаем пробелы!):
“ # — это комментарий, вы можете оставлять любые комментарии в файле конфигурации, после того как поставите этот знак, иногда, оставлять комментарии – полезно.”
modbus:
- - name: hub1 #Имя вашего JetHub, может быть любым
- type: serial #Тип подключения, в нашем случае serial, по Ethernet - tcp
- baudrate: 9600 #Скорость соединения, может быть и 115200, но для нас максимум 9600, больше просто нет никакой необходимости
- bytesize: 8 #Напишите 8, вряд ли у вас будет ситуация отличающаяся
- method: rtu #Метод мы уже обсуждали, будем использовать RTU вряд ли у вас когда-то будет необходимость в ascii
- parity: N #Пишем N
- port: /dev/ttyUSB0 #А вот это важно, USB0 – первый порт RS485 JetHubа, а USB1 - второй
- stopbits: 1 #Повторяем 1
Отлично, теперь давайте определимся с тем, что мы будем получать от устройства по ModBus.
Наше устройство измеряет температуру и влажность, эти данные идут к нам в виде целых чисел, то есть, температура 22.3 приходит к нам в виде целого числа 223, а нам с вами нужно, условно, его поделить на 10, но в Home Assistant это делается немного иначе. Но, прежде чем мы продолжим, давайте определимся, что же это за устройство? Я вижу его в виде сенсора, именно сенсор мы и будем добавлять. Ещё бывают Свичи – выключатели, Фаны – вентиляторы, Климат – климат:), и другие, подробнее в документации по Home Assistant.
sensors: #Обращайте внимание на пробелы, смотрите первый скриншот с настройками выше
- - name: DTchin485 #Имя датчика, Датчик Температуры, Чинский, 485-ый
- # swap: word – это вводить не нужно, данная статья не вмещает этого вопроса
- precision: 1 #сколько точек после запятой
- scale: 0.1 #Деление на, в нашем случае 10, но бывают разные случаи
- scan_interval: 1 #Интервал опроса датчика в секундах, 1 более чем достаточно
- slave: 200 #Адрес устройства, с завода он был 1
- address: 1 #Регистр в устройстве
- unit_of_measurement: °C #Это поле не обязательно, но если вы хотите задать единицу измерения, то в большинстве случаев её надо заключить в кавычки
Поговорим о Регистрах – это, более сложная тема.
В инструкции сказано Register address 0000, 0001 и 07D0, 07D0, для перевода этих данных в человеческий вид, откройте калькулятор, и переключитесь в режим программиста, выберете HEX, введите значение, и в поле DEC будет нужный вам регистр для Home Assistant, но, опять же, это для этого датчика, в другой китайской продукции может быть всё иначе, в любом случае вы сможете, путём нескольких перезагрузок Home Assistant определить нужный вам регистр.
Важная информация!
После того как вы изменили файл конфигурации – обязательно перейдите в раздел «Панель разработчика», нажмите клавишу «Проверить конфигурацию», и, если нет ошибок – «Перезапустить». Изменения в файле конфигурации применяются только после перезагрузки.
В нашем случае 0 и 1 регистры – нужные данные, температура и влажность.
“ - Приобретите китайский USB-RS485 (его я покупал за 100 рублей) и при помощи программы ModBus Poll проверяйте регистры в режиме онлайн, затем переносите в контроллер. Программа для сканирования адресов ModBus и определения регистров находится тут.”
Датчик влажности делаем по аналогии. Как вы успели заметить, ничего сложного нет.
Теперь перейдём к более интересной связке, ОВЕН МВА8 и датчик температуры 4-20мА.
Для осуществления различных задач, вам могут потребоваться промышленные датчики. Например – датчик давления (давление в системе отопления), датчик температуры (температура теплоносителя), и прочите своеобразные датчики, выходной сигнал с которых – аналоговый (0-10В и 4-20мА).
Чтобы подключить такого типа датчики, нужен специальный модуль – модуль входных аналоговых сигналов.
“ – Бывают модули выходных сигналов, дискретных входов и выходов, к JetHub D1 можно подключить модуль из 32 реле (модуль дискретных выходов на 32 канала), и вы сможете управлять 32-мя лампочками из приложения, можете вообще создать алгоритм включения подсветки каждой ступени, на которую вы наступаете, такое на ZigBee не реализовать, а тут – всё в одном приложении, с алгоритмом, который не пропадёт без интернета.”
В моём случае, модуль для примера, будет прибор от ОВЕН, МВА8, 8 входных аналоговых сигналов, сейчас под рукой только он.
“ – В домашнем щите установлен модуль из Китая (исправно работает долгий период без «глюков»), с выходным аналоговым сигналом 4-20мА, который управляет тиристором вентиляции, скорость вентиляции автоматически регулируется в зависимости от разности влажности в комнате и ванной”
Аналоговые сигналы от дискретных отличаются тем, что дискретный вход и выход – это только вкл и выкл, а аналоговый – 25.986 градуса по Цельсию. Аналоговых приборов в сети ModBus, всегда меньше, чем дискретных, прибор просто не сможет получить все данные и обработать их. Но для вас – не нужная информация, пока.
МВА8 – это очень многофункциональный модуль, он может читать параметры огромного количества датчиков с различным выходным сигналом. Но нам с вами нужен входной сигнал 4-20мА, т.к. наш датчик температуры именно этот сигнал и выдает.
Для этого настрою модуль МВА8, покажу это ради обзора функциональных возможностей самого прибора от ОВЕН, но вам это пока навряд ли пригодится.
А также, на скриншоте, посмотрите часть инструкции, на Русском языке, какие регистры за что отвечают, и какой тип данных будем получать с этих регистров. Это вам не китайская инструкция – это Человеческая!
Согласно инструкции, с одного входа мы можем получать 2 разных типа данных, и для температуры от -50 до 150, удобнее всего получать данные типа int16, т.к. данные этого типа расходуют меньше ресурсов сети и процессора.
В нашем же примере, возьмем данные с двух (так-то с 3-ёх, но об этом пока рано:)) регистров, типа int16 и float32. Перейдём к описанию настроек:
#Разбираем настройку одного датчика, но с полученными от модуля МВА8 разных типов данных, с разных регистров
- - name: MVA8in2 #Имя датчика, оно будет отображаться так в Home Assistant
- #swap: word #Вот кстати, этот параметр как раз нужен иногда, в случае с данными типа FLOAT. Дело в том, что FLOAT по сути своей это 2 регистра, и прибор может передавать данные, например 23.92 градуса по Цельсию, не 23 и 92, а 92 и 23, то есть данные могут передаваться от заднего числа, к переднему (инструкция обычно это говорит), и чтобы нам получать данные в правильном виде, нужно эти регистры развернуть, для этого и существует команда СВАП, пришло 92.23 свап развернет как нужно 23.92. В данную минуту вам это вряд ли пригодиться, а вот чуть позже может потребоваться. А ещё, иногда так бывает, прибор присылает 29 и 32, и развернуть надо и так и сяк, но, это не сейчас, просто запомните на будущее
- precision: 2 #точек после запятой, тут как вам удобнее видеть, можно получать и с десятыми, и с сотыми, и с тысячными, как вашей душе будет угодно
- data_type: float32 #тип данных, которые приходят по регистру 10, в инструкции написано – float32
- scan_interval: 1 #частота считывания в секундах
- slave: 16 #Адрес прибора
- address: 10 #Регистр в приборе
unit_of_measurement: °C #Условные единицы того, что мы измеряем, почти всегда эти единицы нужно вписывать в “кавычки”, например влажность “%”
Следующий пример:
- - name: MVA8in2a #Всё тот же датчик, только данные из другого регистра и с другим типом. В данном примере тип не указываем, т.к. он по умолчанию в Home Assistant int16 (от -32768 до +32767 – чего нам, с датчиком от -50.00 до 150.00 (-5000-15000) более чем достаточно)
- scan_interval: 1 #Интервал проверки
- slave: 16 #Адрес прибора, у одного прибора всегда один адрес, который можно изменять
- address: 7 #Адрес регистра
- unit_of_measurement: °C #Не обязательный пункт, его можно вообще удалить
Ну вот и всё, как вы видите, разобраться можно! А какие датчики и приборы, работающие по ModBus продаются! Там вашей фантазии - даже и не снилось!
На этом, цикл ознакомительных статей заканчиваю. Если у вас есть вопросы – не стесняйтесь, задавайте в комментариях, постараюсь на них ответить. Новые записи по теме JetHub и Home Assistant пока не планирую, но, если накопятся интересные вопросы, с радостью разберу их в отдельной записи.
На этом прощаюсь, до новых встреч! Уже совсем скоро будет следующая статья, но уже на любимую всем, строительную тему.
Пока!
P.S. Увидели ошибку или неточность - напишите в комментарии, с радостью внесу коррективы, спасибо!