我已经购买了此设备HHC-N8I8O。
我想知道我们是否可以从 laravel 直接发出命令来打开或关闭继电器?
我有手册和一些软件,它可以从 IP 为 192.168.0.105 且端口为 5000 的软件运行
但我想通过我自己的软件来控制它,不知道如何向该设备发送命令?
下面是包含一些信息的手册,但我不明白如何使用它?
Command description:
Commands are sent in character.
Control one relay
Open the first relay.
Send: on1
Return: on1
Turn off the first relay.
Send: off1
Return: off1
The 2-8 way control is the same as the above instructions.
Read relay status
Send: read
Return: relay 00000001 (state of 8-way relay, 1 relay suction, 0 relay unlock, 1 relay suction, 2-8 relay unlock)
Control all relays
Send: all00000011
Return: relay00000011
All是控制所有继电器的指令,后面8个控制,1表示吸合,0表示松开上面的指令表示第一路吸合用第二路,3-8路松开。此指令执行完后会返回继电器的状态,继电器的状态返回信息和读指令一样。
延时控制比如要求2秒后继电器吸合,可以发出下面的指令。
发送:on1:02
返回:on1
以上指令中,继电器吸合2秒后释放,on1:要控制的继电器,后面跟着延时时间,最长可达99秒,例如on2:12表示第二路继电器吸合12秒后释放。其它2-8路控制同上。
读取开关输入
发送:输入
返回:输入00000001
输入后面跟着00000001,1代表开关输入,0代表无开关输入,8路开关输入状态,以上说明表示第1路有开关输入,2-8路无开关输入。
测试说明。
该设备工作在TCP服务器上。
它如何通过 TCP 工作?
读取命令用于读取继电器状态,输入命令用于读取离散输入。继电器控制:on1 或 off1、On2 或 Off2 等等
答案1
基于此信息您需要on1
向主板的IP和端口5000(UDP包)发送字符串(例如)。
在 Linux 中这将是这样的:
printf "on1" | nc -q 1 -un 192.168.0.105 5000
PS 这是 Bard 为我生成的代码:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Broadcast;
class UdpController extends Controller
{
public function send(Request $request)
{
$ip = $request->input('ip');
$port = $request->input('port');
$message = $request->input('message');
try {
$socket = socket_create(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
socket_connect($socket, $ip, $port);
socket_send($socket, $message, strlen($message), 0);
socket_close($socket);
Log::info('Message sent successfully:', ['ip' => $ip, 'port' => $port, 'message' => $message]);
} catch (\Exception $e) {
Log::error('Error sending message:', ['exception' => $e]);
}
return response('Message sent successfully', 200);
}
}
要使用此控制器,您首先需要创建一个调用 send 方法的路由。例如,您可以将以下路由添加到您的routes/web.php
文件:PHP
Route::post('/udp/send', 'UdpController@send');
然后生成 post 请求:
POST /udp/send HTTP/1.1
Host: localhost
Content-Type: application/json
{
"ip": "192.168.0.105",
"port": 5000,
"message": "on1"
}