使用 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 创建到页面的连接。
我有一个电力传输单元设备连接到我的本地网络,它由一个简单的网页控制,我正在尝试使用 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 创建到页面的连接。