1
0
Fork 0

调整喷雾设备后台自动设置

develop
vine_liutk 2023-07-17 11:58:20 +08:00
parent de53ecbb16
commit 101bb2c632
3 changed files with 51 additions and 13 deletions

View File

@ -2,15 +2,14 @@
namespace App\Admin\Controllers;
use Slowlyo\OwlAdmin\Renderers\{Button, Form, Page, TableColumn, TextControl, Json, Component, CRUDTable, Card, Video, DateRangeControl, Mapping, SelectControl};
use Slowlyo\OwlAdmin\Renderers\{Button, Form, Page, TableColumn, TextControl, Json, Component, CRUDTable, Card, Video, DateRangeControl, Mapping};
use Slowlyo\OwlAdmin\Controllers\AdminController;
use App\Services\Admin\DeviceService;
use App\Admin\Components;
use App\Models\Device;
use App\Models\Keyword;
use App\Models\MeteorologicalDailyReport;
use App\Models\MeteorologicalReport;
use App\Models\MonitorMode;
use App\Models\RegionMonitor;
use App\Models\Region;
use Illuminate\Http\Request;
use App\Services\MqttService;
@ -357,7 +356,8 @@ class DeviceController extends AdminController
$region = Region::find($regionId);
if($region){
$monitorMode = $region->monitorModes()->where('type', MonitorMode::TYPE_ATOMIZING)->first();
$config = $monitorMode?->pivot->config ?? null;
$device = $monitorMode->devices()->first();
$config = $device?->extends ?? null;
if($monitorMode){
//判断设备状态是否离线;
@ -406,7 +406,7 @@ class DeviceController extends AdminController
'config' => '${config}'
]
])
->data($config ? json_decode($config) : [])
->data($config ? $config : [])
->body([
amisMake()->FieldSetControl()->title('当前状态')->body([
amisMake()->TextControl('status', '状态')->value($statusStr),
@ -456,8 +456,9 @@ class DeviceController extends AdminController
if($region){
$monitorMode = $region->monitorModes()->where('type', MonitorMode::TYPE_ATOMIZING)->first();
$config = $request->input() ?? null;
$res = $region->monitorModes()->updateExistingPivot($monitorMode->id, [
'config' => $config,
$res = $monitorMode->devices()->update([
'extends' => $config,
]);
}
}

View File

@ -2,6 +2,10 @@
namespace App\Console\Commands;
use App\Models\Device;
use App\Models\MonitorMode;
use App\Models\RegionMonitor;
use App\Services\MqttService;
use Illuminate\Console\Command;
class MqttPenwuPlan extends Command
@ -18,7 +22,7 @@ class MqttPenwuPlan extends Command
*
* @var string
*/
protected $description = 'MQTT 喷雾控制';//-todo
protected $description = 'MQTT 喷雾控制';
/**
* Execute the console command.
@ -27,11 +31,43 @@ class MqttPenwuPlan extends Command
*/
public function handle()
{
//获取所有喷雾监控点,对应的自动喷雾配置
//获取当前时间(时,分)
//判断该配置是否开启
//判断当前该情况,并判断时间,决定开启,关闭,不作为;
//首先获取当前状态
$service = new MqttService();
$status = $service->getStatus();
//判断是否离线,或者状态异常;
if($status && $status['error'] == 0 && $status['status'] == 1){
//获取所有喷雾监控点,对应的自动喷雾配置
$deviceList = Device::where('type', Device::TYPE_ATOMIZING)->get();
$time = now()->format('H:i');//获取当前时间(时,分)
foreach($deviceList as $device){
$_config = $device->extends ?? [];
if($_config && $_config['is_enable']){//判断该配置是否开启
foreach($_config['config'] as $item){
list($start, $end) = explode(',', $item['time_zone']);
//决定开启,关闭,
if($time == $start){//相等
//如果当前对应位置已开启,则不作为
if(
($item['value'] == 'a' && $status['yv1'] == 0)
||($item['value'] == 'b' && $status['yv2'] == 0)
){
$service->open($item['value'], $item['input']);
}
}elseif($time == $end){
if($status['is_running']){
if(
($item['value'] == 'a' && $status['yv1'] == 1)
||($item['value'] == 'b' && $status['yv2'] == 1)
){
$service->close();
}
}
}
}
}
}
}
return Command::SUCCESS;
}
}

View File

@ -16,6 +16,7 @@ class Kernel extends ConsoleKernel
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
$schedule->command('mqtt:penwu-plan')->everyMinute();//每分钟执行
}
/**