Страница 7 из 7

Re: Модуль управления Laurent (Лоран)

Добавлено: Пт янв 19, 2018 11:24 am
DiminatorDK
Нет, кнопки которые физические работают идеально. И уже много лет. Кнопки надо притягивать к питанию и желательно иметь опторазвязку.
Я про тумблер в MajorDoMo. Или я настолько туп что не смог сделать тумблер или хз. Поэтому сделал кнопки, но и с ними какой-то трэш в плане реакции. Пробую прямой линк (тест) может включить, или просто тишина, пару раз обращусь - включается. Полная анархия.

Re: Модуль управления Laurent (Лоран)

Добавлено: Пт янв 19, 2018 2:54 pm
DiminatorDK
Я нашел модуль laurent.class.php

<?php

/**
* Summary of laurent_command
* @param mixed $host Host address
* @param mixed $command Command
* @param mixed $password Password (default = 'Laurent')
* @return int|string
*/
function laurent_command($host, $command, $password = 'Jerome')
{
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if ($socket === false)
{
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
return 0;
}

$result = socket_connect($socket, $host, 2424);

if ($result === false)
{
$errorMessage = "socket_connect( $socket , $host , 2424) failed.\nReason: ($result) ";
$errorMessage .= socket_strerror(socket_last_error($socket)) . "\n";
echo $errorMessage;
return 0;
}

$in = '$KE' . "\r\n";
socket_write($socket, $in, strlen($in));

$res = '';
while ($out = socket_read($socket, 2048, PHP_NORMAL_READ))
{
$res .= $out;

if (is_integer(strpos($out, "\n")))
{
break;
}
}

$in = '$KE,PSW,SET,' . $password . "\r\n";
socket_write($socket, $in, strlen($in));

$res = '';
while ($out = socket_read($socket, 2048, PHP_NORMAL_READ))
{
$res .= $out;

if (is_integer(strpos($out, "\n")))
{
break;
}
}

$in = $command . "\r\n";
socket_write($socket, $in, strlen($in));

$res = '';
while ($out = socket_read($socket, 2048, PHP_NORMAL_READ))
{
$res .= $out;
if (is_integer(strpos($out, "\n")))
{
break;
}
}

socket_close($socket);

return trim($res);
}

как я понимаю обращение происходит именно к этому классу. А как можно увидеть ход выполнения? Я в PHP слаб, но меня смущает строчка
$res = '';
while ($out = socket_read($socket, 2048, PHP_NORMAL_READ))

если я правильно понимаю происходит обращение к модулю по порту 2048? Или я ошибаюсь?

Re: Модуль управления Laurent (Лоран)

Добавлено: Пт янв 19, 2018 2:59 pm
skysilver
DiminatorDK писал(а):если я правильно понимаю происходит обращение к модулю по порту 2048? Или я ошибаюсь?
Ошибаешься. Это размер читаемых данных в байтах. Порт указан выше в строке $result = socket_connect($socket, $host, 2424);

Re: Модуль управления Laurent (Лоран)

Добавлено: Пт янв 19, 2018 3:44 pm
DiminatorDK
А можно как-то посмотреть прогресс выполнение класса? А то как-то в тишине все выполняется, непонятно что и как.

Re: Модуль управления Laurent (Лоран)

Добавлено: Пт янв 19, 2018 4:42 pm
Duran
Программно у меня все идеально выполнялось

пример выключения реле

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

$ipl1=gg('Laurent1.ip');
$result=laurent_command($ipl1, '$KE,REL,1,0', 'Laurent');
setGlobal("Laurent1.rele1_status", "0");
или вот (этот код может можно оптимизировать но нет времени :) ):

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

// реле 3 и 4 для закрытия
//отключаем все
$ipl1=gg('Laurent1.ip');
$result=laurent_command($ipl1, '$KE,REL,1,0', 'Laurent');
$result=laurent_command($ipl1, '$KE,REL,2,0', 'Laurent');
$result=laurent_command($ipl1, '$KE,REL,3,0', 'Laurent');
$result=laurent_command($ipl1, '$KE,REL,4,0', 'Laurent');
setGlobal("Laurent1.rele1_status", "0");
setGlobal("Laurent1.rele2_status", "0");
setGlobal("Laurent1.rele3_status", "0");
setGlobal("Laurent1.rele4_status", "0");
//включаем 3 и 4
$a=40;
$result=laurent_command($ipl1, '$KE,REL,3,1,'.$a, 'Laurent');
$result=laurent_command($ipl1, '$KE,REL,4,1,'.$a, 'Laurent');
//$result=laurent_command($ipl1, '$KE,REL,3,1', 'Laurent');
//$result=laurent_command($ipl1, '$KE,REL,4,1', 'Laurent');
setGlobal("Laurent1.rele3_status", "1");
setGlobal("Laurent1.rele4_status", "1");
setGlobal("Laurent1.shtory_status", "1");

Re: Модуль управления Laurent (Лоран)

Добавлено: Пт янв 19, 2018 5:04 pm
DiminatorDK
У меня немного другой модуль - Jerome. И у меня такое ощущение что что-то идет не так и сессия остается открытой какое-то время. А модуль поддерживается только одно открытое соединение.