directman

<<< Назад

Конвертируем rs-485 в TCP-IP

Коротко о том, как подключить rs-485 в MajorDoMo.

Общие сведения
Для считывания показаний счетчиков электричества, управляения устройствами, поддерживающими протокол modbus, для подключения к MajorDoMo необходимо преобразовать RS-485 в последовательный порт, или сетевой стэк TCP-IP, эмулирующий данный протокол.

Для локального подключения можно использовать конвертер USB-RS485 https://connect.smartliving.ru/profile/1502/compon...

Также такой конвертер можно пробросить по сети с помощью роутера с USB портом и приложения ser2net.

Настройка конвертера USB-RS485 на роутере Asus RT-N66u
На роутере установлена прошивка asuswrt-merilin и пакет entware.
Установка entware на asuswrt-merilin выполяется комлектным скриптом https://github.com/RMerl/asuswrt-merlin/wiki/Entwa...
entware-setup.sh

Полагаю, подойдет любой роутер с портом USB, на который можно установить optware.

Нам требуется установить coreutils, ser2net:

opkg install coreutils
opkg install ser2net
opkg install coreutils-stty

По умолчанию конвертер на роутере определялся некорректно, и вместо полезной информации в появившийся com порт прилетал шум. Установка модуля ядра решила эту проблему

insmod /jffs/scripts/ch341.ko

Ссылка на архив драйвера https://yadi.sk/d/wwdJCkmA3PbRsc
Ссылка на модуль ядра для роутера https://yadi.sk/d/Hv4FDzD33PbRxu

Для работы с будущим сетевым портом несколькими приложениями одновременно, можно запустить ser2net несколько раз.

Готовый скрипт автозапуск ser2net с нужными параметрами:
cat /jffs/scripts/mydevice-start.sh

#!/bin/sh
DEVICE="/dev/ttyUSB0"
SPEED=9600
PRODUCT="1a86:7523"  # u-blox GPS receiver

# wait for device to become ready
modprobe cdc-acm
insmod /jffs/scripts/ch341.ko
ser2net -C "3000:raw:60:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
ser2net -C "3001:raw:60:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
ser2net -C "3002:raw:60:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
ser2net -C "3003:raw:60:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
ser2net -C "3004:raw:60:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
ser2net -C "3005:raw:60:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
ser2net -C "3006:raw:60:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
ser2net -C "3007:raw:60:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"

while : ; do
  lsusb | grep -qi "$PRODUCT"
  if [ $? -eq 0 ]; then
    break
  else
    sleep 5
  fi
done

stty -F $DEVICE $SPEED raw -clocal -echo icrnl

для его запуска необходимо создать скрипт /jffs/scripts/init-start

#!/bin/sh
deny_access() {
  local FILEPATH="$1"
  local FILENAME="$(/usr/bin/basename $FILEPATH)"
  local FILEEXT="${FILENAME##*.}"
  if [ "$FILEEXT" == "ko" ]; then
    local MODULENAME="${FILENAME%.*}"
    local FILEPATH="/lib/modules/$(/bin/uname -r)/$(/sbin/modprobe -l $MODULENAME)"
    if [ -f "$FILEPATH" ] && [ ! -h "$FILEPATH" ]; then
      /sbin/lsmod | /bin/grep -qF $MODULENAME && /sbin/modprobe -r $MODULENAME && /bin/usleep 250000
      /bin/mount -o bind /dev/null "$FILEPATH"
    fi
  else
    if [ -f "$FILEPATH" ] && [ ! -h "$FILEPATH" ]; then
      [ -n "$(/bin/pidof $FILENAME)" ] && /usr/bin/killall $FILENAME && /bin/usleep 250000
      /bin/mount -o bind /dev/null "$FILEPATH"
    fi
  fi
}

# disable automatic loading of GSM modem drivers and programs
deny_access option.ko
deny_access usb_wwan.ko
deny_access drxvi314.ko
deny_access /usr/sbin/find_modem_node.sh
deny_access /usr/sbin/find_modem_type.sh
deny_access /usr/sbin/gobi_update.sh
deny_access /usr/sbin/modem_at.sh
deny_access /usr/sbin/modem_autoapn.sh
deny_access /usr/sbin/modem_enable.sh
deny_access /usr/sbin/modem_status.sh
deny_access /usr/sbin/modem_stop.sh
deny_access /usr/sbin/chat
sleep 20 && /bin/sh /jffs/scripts/mydevice-start.sh

Полезные ссылки, если не работает ch341:
https://www.snbforums.com/threads/problems-reading...

DIY конвертер RS-485 на базе ESP8266
Также устройство с поддержкой RS-485 можно подключить через всеми любимый модуль ESP8266 https://connect.smartliving.ru/profile/1502/compon...
Простейший пример реализации конвертера http://www.bizkit.ru/2019/02/12/12284/
Еще один пример реализации управления http://learniotwithzain.com/2018/11/read-data-from...
DIY конвертер от Jager https://modkam.ru/?p=884

Готовые преобразователи интерфейсов
Можно приобрести готовые преобразователи интерфейса rs-485 в TCP-IP:
https://connect.smartliving.ru/profile/1502/compon...
https://connect.smartliving.ru/profile/1502/compon...

Полезные ссылки
Считывание показаний счетчиков Милур: https://mjdm.ru/forum/viewtopic.php?f=5&t=5668&p=8...

Считывание показаний счетчиков Меркурий: https://mjdm.ru/forum/viewtopic.php?f=5&t=5708&p=9...

Считывание показаний счетчиков Энергомера: https://mjdm.ru/forum/viewtopic.php?f=5&t=3173&p=1...

Считывание регистров и управление устройствами по протоколу modbus: https://mjdm.ru/forum/viewtopic.php?f=5&t=1675&hil...

Обсуждение (0) (3)

Смотрите так же:
16.09.2019 Примеры разметки Markdown
14.09.2019 Краткий обзор выключателей, в том числе Sonoff T4EU1C
13.09.2019 Сценарий для канала @MajorDoMo_feed
09.09.2019 Делаем majordroid лаунчером андройд по-умолчанию.
04.09.2019 Реализация сценария "кто-то пришел"
02.09.2019 Отправляем график hightcharts свойства любого объекта в телеграмм
27.08.2019 Управление громкостью терминалов через телеграмм
26.08.2019 Полноценная консоль в браузере (wetty)
16.08.2019 Точечное регулирование радиаторов отопления
18.08.2019 Собираем голосовой помощник на базе WM8960 Audio HAT и raspberry pi zero w
13.08.2019 Общедоступная ссылка с закатом, рассветом и текущей погодой
24.07.2019 Самый дешевый вариант видеонаблюдения
22.07.2019 Запуск MajorDroid на одноплатниках, старых планшетах, телефонах.
22.07.2019 Запуск Majordroid на старом железе
15.07.2019 Устанавливаем opencv и необходимые библиотеки на ubuntu 18.04 без использования python
05.07.2019 Решение проблемы Incorrect integer value: '' for column 'ID' at row 1
04.07.2019 О приборах учета и удаленном снятии показаний (вода и газ)
04.07.2019 О приборах учета и удаленном снятии показаний (электричество)
24.06.2019 Наблюдение за радиационной обстановкой в регионе
06.06.2019 Меню пылесоса Xiaomi в телеграмм
06.06.2019 Удобный просмотр данных сенсоров через телеграмм
06.06.2019 Просмотр камер через телеграмм
06.06.2019 Управление светом через телеграмм
06.06.2019 Колор-пикер для телеграм
06.05.2019 Список символов emoji
17.04.2019 Установка z-way на Ubuntu
16.04.2019 Решение проблемы ERROR 1040 (HY000): Too many connections
09.09.2018 Список домофонов с IP интерфейсом
29.08.2018 Список кондиционеров с wifi
29.08.2018 Список доступных к покупке IP колонок
15.07.2018 Интеграция датчика Mi flora plant к системе УД MAJORDOMO
13.06.2018 Полезные команды для работы с git
27.05.2018 преобразование html страниц в картинку и отправка в телеграмм
24.05.2018 Полезные sql запросы
23.05.2018 Создание образа nand памяти orange pi plus2
16.05.2018 Команды для работы с базой данных напрямую
13.04.2018 Индикаторы о заряде батареек без использования картинок
06.04.2018 Установка и настройка python на windows для работы систем распознавания
05.04.2018 Распознавание лиц подходящих к двери людей с помощью ip камеры и открытие двери, если нейросеть признала своего
04.04.2018 Управление таймерами выключения света
04.04.2018 Управление RGB контроллером на базе ESP8266
03.04.2018 Увеличение разрешения китайских камер на чипе hi3516c H264
13.03.2018 Использование колонки google home в качестве терминала Majordomo
13.03.2018 Установка и подключение rtl usb донгла для чтения датчиков температуры и кнопок 433 мгц
13.03.2018 Настройка брокера MQTT
17.02.2018 Проект "умная входная дверь"
11.02.2018 Отправка всех значений свойства объекта в телеграм
21.12.2017 получение адреса по GPS координатам
21.12.2017 получение / передача GPS координат сервису livegps.com
21.12.2017 чтение мгновенных данных U,P, I электросчетчика милур 104
21.12.2017 Получение координат с маяков и gsm сигнализаций starline-online.ru

Екатеринбург, Россия

На форуме: directman66