使用 Laravel 调度程序和 Laravel 重定向打开 PDU 设备

Turn PDU device on with Laravel Scheduler and Laravel Redirect

我有一个电力传输单元设备连接到我的本地网络,它由一个简单的网页控制,我正在尝试使用 Laravel 计划在特定时间打开和关闭设备那天。因此,我使用以下方法创建了一个 PDUController:(两种方法都可以正常工作)

public function on()
{
    return redirect()->away(
        "http://192.168.0.100/control_outlet.htm?outlet6=1&outlet7=1&op=0&submit=Apply"
    );
}

public function off()
{
    return Redirect::to(
        "http://192.168.0.100/control_outlet.htm?outlet6=1&outlet7=1&op=1&submit=Apply"
    );
}

如果您访问的路线:

Route::get('/pdu/on', [PDUController::class, 'on'])->name('pdu.on');
Route::get('/pdu/off', [PDUController::class, 'off'])->name('pdu.off');

一切正常,您可以相应地打开或关闭设备。现在,当我在 Kernel.php 上使用调度程序时,例如:

protected function schedule(Schedule $schedule)
{
    $schedule->call('App\Http\Controllers\PDUController@on')->everyMinute();
}

它不起作用。 我知道流程是正确的,因为我可以 Log::debug() 正确地执行过程的每一步,但设备没有接收到信号,因此没有打开。 你能帮忙吗?谢谢!

重定向功能 return 对浏览器的重定向响应。由于调度程序通过 Artisan 运行,因此没有浏览器可以重定向,因此不会建立连接。相反,使用 HTTP Client 创建到页面的连接。