Коротко о том, как подключить 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...
Полезные программы конвертеры портор https://usriot.ru/serial-to-ethernet/serial-device...
Екатеринбург, Россия
На форуме: directman66