• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Управление устройствами через протокол rs485 modbus из linux и из Home Assitant на примере Реле.

6 февраля, 2024

Реле RS485 modbus: https://alii.pub/6vyzcg?erid=2SDnjeu8agG

Usb to RS485: https://alii.pub/6vyzel?erid=2SDnjcLt9yi

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

 

В этой статье расскажу как управлять блоком реле Modbus RTU RS485 с Linux и с Home Assitant.

Естественно для работы можно использовать Usb to rs485 свисток. Но я это все дело проверял на уже встроенном rs485 контроллере в JetHub D1+.

Итак, для работы из под линукс нам нужен будет modbus_cli. Это программа работающая на питоне. Для установки ее нужно сделать следующее:

Сначала установить pip.

sudo apt install python3-pip

Далее можно попробовать установить через pip саму программу modbus_cli (но у меня без танцев с бубном не получилось).

Если Вы пытаетесь установить из под учетки root modbus_cli, то надо создать файл с определенным содержимым.

Создаем папку.

mkdir /root/.config/pip

Далее создаем файл pip.conf с содержимым.

nano /root/.config/pip/pip.conf

и вставляем содержимое:

[global]
break-system-packages = true

 

После этого устанавливаем modbus_cli

sudo pip3 install modbus_cli

Если не получилось, то есть второй вариант установки modbus_cli

Сначала скачиваем modbus_cli с github:

git clone https://github.com/favalex/modbus-cli.git

далее переходим в папке и запускаем файл установки.

cd modbus-cli

python3 setup.py install

Утилиту для работы с modbus мы установили. Теперь можно поиграться с реле.

Со страницы самого блока реле, есть табличка в которой описаны регистры для работы с ним. Для новичка это просто набор каракуль. Но постараюсь немного рассказать. Хотя я сам новичок.

Из этой таблички мы можем подчеркнуть, что по умолчанию реле работают на скорости 9600.

Чтоб управлять реле нужно в 112 регистр отправить 0x0001 для включения одного реле, а 0x0000 выключить.

И тут надо чуть поподробнее. Дело в том, что эти реле включаются и выключаются по последним битам. Грубо говоря 1 это реле включится, а 0 реле выключится.

Следовательно у нас есть числа в 10тичном формате 0,1,2,3. Если эти числа перевести в двоичную  систему то получим следующее

00 – это 0 и следовательно все реле выключены

10 – это 1 и включено первое реле, но второе выключено

01 – это 2 и включено второе реле, но первое выключено

11 – это 3 и включены оба реле.

Собственно отправляя в регистр 112 эти числа в десятичном формате, мы будем управлять нагрузкой реле.

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

sudo modbus -b 9600 -s 1 -v /dev/ttyUSB1 112=1

где /dev/ttyUSB1 это адрес usb/rs485 переходника.

Ну и следовательно чтоб включить второе реле, но выключить первое отправить нужно цифру 2

sudo modbus -b 9600 -s 1 -v /dev/ttyUSB1 112=2

Включить оба реле:

sudo modbus -b 9600 -s 1 -v /dev/ttyUSB1 112=3

выключить все реле:

sudo modbus -b 9600 -s 1 -v /dev/ttyUSB1 112=4

 

Так-же это реле может управлять двигателем (да и наверное много еще фишек всяких умеет, на которые у меня не хватило терпения разбираться).

Управление двигателем так-же описано на странице релюшек:

 

Расшифровав этот 16ричный код получаем команду для запуска двигателя (включение одного реле и выключение другого):

modbus -b 9600 -s 1 -v /dev/ttyUSB0 0=1024

Ну и следовательно в обратную сторону, чтоб выключить первое реле и включить другое реле (вращение двигателя в обратную сторону)

modbus -b 9600 -s 1 -v /dev/ttyUSB0 1=1024

Эти числа взяты из выделенного на картинке квадрата. Первый блок 00 и 01 это следовательно 0  и  1, а числа 0400 – это 1024 в десятичной(если считать из 16тиричной).

Ну и получается мы либо к 0 приравниваем 1024 для движения forward. Либо к 1 приравниваем 1024 для движения в обратную сторону.

Ну а чтоб остановиться к 0 нужно приравнять 2048

modbus -b 9600 -s 1 -v /dev/ttyUSB0 0=2048

 

Про работу из пол Linux в modbus заканчиваем. Теперь давайте разберемся как этими же реле можно управлять из Home Assitant.

Home Assitant ModBus.

Modbus в Home Assitant реализован только в Configuration.yaml

И вот для того, чтоб управлять двумя релюшками зная регистры которые мы выше рассмотрели. Код будет вышлядеть следующим образом:


#В этом блоке описываем работу самого usb-rs485
modbus:
  - name: modbus_hub
    type: serial
    port: /dev/ttyUSB1
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: N
    stopbits: 2
    switches:
#Описываем управление первым реле
       - name: "Switch1"
         scan_interval: 5
         slave: 1 # это адрес устройства
         address: 112 # это регистр устройства
         command_on: 1 # Цифра в 10тичном формате для включения реле
         command_off: 0 # Цифра в 10тичном формате для выключения реле(точнее обоих сразу)
#Описываем управление второго реле
       - name: "Switch2"
         scan_interval: 5
         slave: 1 # это адрес устройства
         address: 112 # это регистр устройства
         command_on: 2 # Цифра в 10тичном формате для включения второго реле
         command_off: 0 # Цифра в 10тичном формате для выключения второго реле (точнее обоих сразу)


       

Ну и следовательно после применения этой конфигурации у Вас появится два реле под названием Switch1 и Switch2 в Home Assitant.

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·