Страница 1 из 2

Network relay switch

Добавлено: Ср сен 14, 2016 12:10 am
Shemmy
Доброго времени суток!

Подскажите, может есть у кого опыт прикручивания сетевого контроллера с 8-мью входами/выходами?
Вот ссылка

У этого контроллера есть простенькая вебморда, позволяющая управлять входами и выходами, и отрисовывающая текущее состояние каждой релюшки.
Нашел в инете информацию как им управлять с помощью curl:
curl --request POST "http://admin:12345678@192.168.1.166/control.cgi" --data "saida1on=1"
curl --request POST "http://admin:12345678@192.168.1.166/control.cgi" --data "saida1off=1"

Вдруг есть у кого наработки аналогичного девайса?

У самого программирование было 15 лет назад и порядком подзабылось :(

Re: Network relay switch

Добавлено: Ср сен 14, 2016 10:01 am
nick7zmail
Shemmy писал(а):Доброго времени суток!

Подскажите, может есть у кого опыт прикручивания сетевого контроллера с 8-мью входами/выходами?
Вот ссылка
Чем то он мне напоминает Laurent...мне кажется управление схожее http://majordomo.smartliving.ru/forum/v ... p?f=8&t=31

Re: Network relay switch

Добавлено: Пн сен 19, 2016 7:30 pm
Shemmy
Покопавшись, нашел документацию.
Оказывается, он элементарно управляется телнетом, и также отдает информацию о статусе выходов и состоянии выключателей.
Закину эту информацию сюда на хранение, и с надеждой, что кто-то сможет облачить это в код =)

Код: Выделить всё

1. Parameters of controller
Default IP:192.168.1.166
Default TCP port :1234
2. Operation of relays
(1) Open the relay
L(n) n=1:8,Such as the need to open the relay 1, then send the string “L1”. The board will return “Relayon 1” after the relay in operation.
(2) Close the relay
D(n) n=1:8,Such as the need to close the relay 3, then send the string “D3”. The board will return “Relayoff 3” after the relay in operation.
(3) 800ms pluse,Open relay for 800ms,then close.
P(n) n=1:8,Such as the need to pluse the relay 1, then send the string “P1”. The board will return “Press 1” after the relay in operation.
(4) Read status of relays
R(n) n=1:8,Such as the need to read the status of relay 1, then send the string “R1”. The board will return “Relayon 1” or “Relayoff 1”.
(5) Read input status
I(n) n=1:8, Such as the need to read the status of input 1, then send the string “I1”. The board will return “IL 1” or “IH 1”.
(6) Burst mode read status
Send strings ”DUMP” or “dump”,the board will return all status of relays and inputs by end of “OK”.
(7) Examples
1. Connect to TCP port;
2. Send command, all commad by ends of “\r\n”;
3. If the PC within 30s no data is sent to the controller, the controller will disconnect to PC.
PC Board
L1 Relayon 1
DUMP Relayon 1
Relayoff 2
Relayoff 3
Relayoff 4
Relayoff 5
Relayoff 6
Relayoff 7
Relayoff 8
IL 1
IL 2
IL 3
IL 4
IL 5
IL 6
IL 7
IL 8
OK

Re: Network relay switch

Добавлено: Сб ноя 12, 2016 12:05 am
Rad81
Relays-> turnOff * exec('curl --request POST "http://admin:12345678@192.168.1.166/control.cgi" --data "saida1off=1"');

Relays-> turnOn * exec('curl --request POST "http://admin:12345678@192.168.1.166/control.cgi" --data "saida1on=1"');

Re: Network relay switch

Добавлено: Чт окт 12, 2017 5:57 pm
Rad81
update

Re: Network relay switch

Добавлено: Вс окт 15, 2017 9:31 am
andrusha7778
У меня такая железка в хозяйстве есть. Вижу очень большой минус в ней - при управлении через веб морду в режиме импульс (или curl) реле управляются по заранее заложенному алгоритму, а именно - смыкается ровно на одну секунду.
Так же у меня не получилось через импульс управлять одновременно несколькими релешками, то есть пока одна импульс исполняет, то остальное ничего не работает. Возможно надо поэксперементировать просто со вкл выкл, может будет по другому.
PS - поэксперементировал. Действительно если отдельно вкл выкл управлять то всё работает достаточно быстро, то есть команда выполняется моментально и интервал меньше одной секунды.
Кстати по curl всё работает но при этом 404 ошибку выдает в HTTP запросе.
Всё ж таки наверное правильно будет ее через modbus подключать, чтобы использовать еще и для чтения регистров (состояния реле и входов)

Re: Network relay switch

Добавлено: Пн ноя 06, 2017 5:20 pm
andrusha7778
Всем добрый день. Попробовал в TCP режиме - действительно реле отвечает. Теперь вопрос - есть ли какой-то способ подружить с MD по TCP?
Понятно, что наверное можно попробовать работать напрямую через TCP сокеты в Linux, но все же может есть что-то более удобное?

Re: Network relay switch

Добавлено: Пн ноя 06, 2017 6:13 pm
nick7zmail
Есть протокол MODBUS TCP. Случайно не по нему работает? Недавно кому-то настраивал подобную релюшку.

Re: Network relay switch

Добавлено: Пн ноя 06, 2017 8:01 pm
andrusha7778
TCP Modbus эта железка тоже умеет, но там другой порт и другой протокол.
А тут всё просто, я putty в RAW режиме коннекчусь на порт 1234 и отправляю команды, оно отвечает. Если за 30 сек ничего не отправлю TCP сессия закрывается.
Немного поразвлекался в PHP

Код: Выделить всё

dump_state.php
<?php
$client = stream_socket_client("tcp://XXX.XXX.XXX.XXX:1234", $errno, $errorMessage);

if($client === false){
                throw new UnexpectedValueException("Failed to connect: $errorMessage");
        }
        
        fwrite($client, "DUMP\r\n");
       
$variable = stream_get_contents($client);
echo $variable;

fclose($client);
?>
отдает нормально свое состояние. Проблема в том что TCP сессия не закрывается пока девайс ее не закроет, это автоматически через 30 секунд происходит.
По всей видимости надо другой алгоритм работы использовать
ЗЫ - попробовал ограничивать буфер чтения количеством байт, stream_get_contents($client, 140) например так, - тогда скрипт не ждет разрыва сессии и отдает данные сразу, но в зависимости от состояния релешек могут разной длины ответы приходить
к примеру relayoff 1 и relayon 1 на 1 байт же отличаются :-(

Re: Network relay switch

Добавлено: Пн ноя 06, 2017 8:08 pm
nick7zmail
Может таки через modbus попробовать? Модуль есть в маркете.