Laravel 操作设备 HHC-N8I8O

Laravel 操作设备 HHC-N8I8O

我已经购买了此设备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"
}

相关内容