Китайское реле rs-485

Да, только это реле, больше ничего на rs485 нет.

Доступ пропал, не могу пока зайти туда, как получится все сделаю.

Добрый вечер.
Файл отправил.

Здравствуйте!
Спасибо, получил трассировку. Что я вижу по ней:
Устройство два раза читает состояние первого регистра хранения командой
01 03 00 01 00 01 D5 CA
и два раза получает ответ, что значение регистра – 1:
01 03 02 00 01 79 84
Потом вы щелкаете переключателем и отправляете команду записать 0x0300 в регистр хранения 1:
01 06 00 01 03 00 D8 FA, на это приходит подтверждение, что все успешно.
Дальше вижу три попытки чтения опять командой
01 03 00 01 00 01 D5 CA, на что три раза приходит ответ 0:
01 03 02 00 00 B8 44.

Так что тут все верно, отправляются нужные команды, приходят нужные результаты.

Что происходило в момент ваших действий с реле и web-интерфейсом?
В дебаге, как я вижу, снова должно быть полно записей типа “1482080132122: Wait until 148208…”
Давайте вот еще что уточним – одна и та же команда просто меняет состояние реле, верно?

Добрый день.
С реле не происходит ничего, кнопка в вебинтерфейсе возвращается обратно. Этот лог когда poll interval был 1000.
Если сделать его меньше, то вообще беда.

Есть два варианта
Open / Close - две разных команды
Toggle (Self-locking) - одна, которую и и использовал.

А с Open/Close как все выглядит?

Open Slave ID = 0x00-0x1F, Function = 0x06, Address = 0x0001, Data 0x01 Delay 0x00
Close Slave ID = 0x00-0x1F, Function = 0x06, Address = 0x0001, Data 0x02 Delay 0x00

Понятно, вы пробовали эти команды в web-интерфейсе, и тоже не помогло? Можно такой же strace посмотреть?

только через командную строку. как через веб интерфейс добавить две команды (вкл.выкл)?

Могу сделать, но см.выше.

Стоп. У нас тут holding-регистр, я не уверен, что его вообще можно привязать к switch. Проконсультируюсь с разработчиками.

Поэтому поставил holding.

Добрый день.
Идеи появились?

Добрый день, появились. Смотрите, выключатель “записывает” соответствующее значение в coil-регистр, тут у нас holding-регистр. Есть on_value, которым мы предполагаем включать устройство, если оно включается нестандартно, не единицей. А вот нестандартное выключение (не 0), не предусмотрено. Нет off_value. Так что, к сожалению, не получится вот просто так управлять этим реле.

Там есть команды:
0 - выключить
1 - включить
3 изменить состояние на обртаное
Вот список

Получается надо поставить 0x0100 (01 включить, 00 время на реакцию)

Там все еще хуже, по-моему. Установить состояние – одни значения передаются, прочесть – другие.
на запись: 01 – open, 02 – close, на чтение: 01 возвращается, если open, и 00 – если close. Поэкспериментируйте, конечно, но очень сильно сомневаюсь, что стандартными средствами вы сможете этим устройством управлять из web-интерфейса.

Ну так команды все идентичны, вот к примеру DRM88M, почти аналогичные команды:
Адрес регистра - Hi 0x00 0x00
Адрес регистра – Lo 0x10 0x10

Команды полночтью аналоничны
03 (0x03) Read Holding Registers
06 (0x06) Write Single Register
16 (0x10) Write Multiple registers

так можно же конфиг сделать ручной, правильно?
Вот тут, к стати, битая ссылка на github

Спасибо за найденную ссылку, поправили.
В DRM88M coil-регистры управляют реле по вполне обычной логике 1- вкл, 0 – выкл. А в вашем устройстве все совсем по-другому.

Так просто в конфиге в каком-то нельзя поменять вкл на 1, выкл на 2?[quote=“Kilpio, post:37, topic:703, full:true”]
DRM88M coil-регистры управляют реле по вполне обычной логике 1- вкл, 0 – выкл.
[/quote]
Адрес регистра - Hi 0x00 - это включить, судя по всему, а стоит при этом 0. Это не совсем логично.

Ну как просто в каком-то — есть для этого шаблон устройства, но в нем не получается такое устройство описать. Web-интерфейс рассчитан на устройства со стандартной более-менее логикой, когда состояния реле меняется через предназначенные для этого coil-регистры. А в этом устройстве совсем по-другому управление реализовано. Но это же не приговор: можно создавать виртуальные устройства, которые упростят управление этой штуковиной. Да, шаблон, вероятно, будет совсем другой, скрипты потребуется написать. Ног вот решения из коробки не вижу в упор.

(Там два канала, 0x0001 и 0x0002 для управления реле, это holding-регистры. по адресам этих регистров записываются команды управления, там нет специального регистра для включить и другого — для выключить).
Могу адресовать вас к нашей странице Протокол Modbus, возможно, что-то покажется вам более понятным.

Точно. Дергать регистры через modbus_client? Или как-то по другому?