Browse Source

数据点翻译

master
lijunjie 3 years ago
parent
commit
9d4a0631d9
  1. 98
      app/Admin/Controllers/EquipController.php
  2. 39
      app/Admin/Controllers/EquipInfoController.php
  3. 16
      app/Admin/Repositories/Equip.php
  4. 83
      app/Admin/Services/EquipInfoService.php
  5. 1
      app/Admin/routes.php
  6. 11
      app/Models/Equip.php
  7. 43
      database/migrations/2022_08_22_093156_create_equips_table.php
  8. 56
      dcat_admin_ide_helper.php
  9. 23
      lang/en/equip.php

98
app/Admin/Controllers/EquipController.php

@ -0,0 +1,98 @@
<?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\Equip;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class EquipController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Equip(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('title');
$grid->column('desc');
$grid->column('tags');
$grid->column('protocol');
$grid->column('location');
$grid->column('private');
$grid->column('auth_info');
$grid->column('auth');
$grid->column('obsv');
$grid->column('other');
$grid->column('chip');
$grid->column('psk');
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Equip(), function (Show $show) {
$show->field('id');
$show->field('title');
$show->field('desc');
$show->field('tags');
$show->field('protocol');
$show->field('location');
$show->field('private');
$show->field('auth_info');
$show->field('auth');
$show->field('obsv');
$show->field('other');
$show->field('chip');
$show->field('psk');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Equip(), function (Form $form) {
$form->display('id');
$form->text('title');
$form->text('desc');
$form->text('tags');
$form->text('protocol');
$form->text('location');
$form->text('private');
$form->text('auth_info');
$form->text('auth');
$form->text('obsv');
$form->text('other');
$form->text('chip');
$form->text('psk');
$form->display('created_at');
$form->display('updated_at');
});
}
}

39
app/Admin/Controllers/EquipInfoController.php

@ -33,16 +33,49 @@ class EquipInfoController extends Controller
return Grid::make(null, function (Grid $grid) {
$param = request()->all();
$grid->column('at');
$grid->column('value');
$grid->quickSearch()->placeholder('设备id');
$grid->column('valve_status1', '阀开关');
$grid->column('valve_status2', '阀门动作');
$grid->column('valve_status3', '行程开关');
$grid->column('valve_status4', '电位器');
$grid->column('valve_status5', '电池电量');
$grid->column('valve_status6', '回水传感器');
$grid->column('valve_status7', '加速度传感器');
$grid->column('valve_status8', '角度');
$grid->combine('阀门状态', ['valve_status1', 'valve_status2', 'valve_status3', 'valve_status4', 'valve_status5', 'valve_status6', 'valve_status7', 'valve_status8']);
$grid->column('set_opening', '设定开度');
$grid->column('actual_opening', '实际开度');
$grid->column('water_inlet_temperature', '进水温度');
$grid->column('water_return_temperature', '回水温度');
$grid->column('battery_power', '电池电量');
$grid->column('accelerated_x', '加速度X轴');
$grid->column('accelerated_y', '加速度Y轴');
$grid->column('accelerated_z', '加速度Z轴');
$grid->column('signal_strength', '信号强度');
$grid->column('valve_time', '阀门时间');
$grid->column('reporting_interval', '上报间隔');
$grid->column('interval_unit', '间隔单位');
$grid->column('effective_time', '上报有效时长');
$grid->column('total_number_reports', '总上报次数');
$grid->column('other', '其他');
$grid->column('check', '累加校验和');
$grid->column('finish', '结束符');
$grid->column('value', '原始数据');
$grid->column('at', '时间');
if (empty($param['at']['start'])){
$param['at']['start'] = date("Y-m-d H:i:s",strtotime("-1 day"));
}
$grid->model()->setData(EquipInfoService::getDatapoints($param));
$grid->disableCreateButton();
$grid->disableActions();
$grid->disableBatchDelete();
$grid->showPagination();
// $grid->simplePaginate(false);
$grid->disablePagination();
$grid->filter(function (Grid\Filter $filter) {
$filter->between('at', 'At')->datetime();
$filter->between('at', 'At')->default(['start' => date("Y-m-d H:i:s",strtotime("-1 day"))])->datetime();
});
});

16
app/Admin/Repositories/Equip.php

@ -0,0 +1,16 @@
<?php
namespace App\Admin\Repositories;
use App\Models\Equip as Model;
use Dcat\Admin\Repositories\EloquentRepository;
class Equip extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
}

83
app/Admin/Services/EquipInfoService.php

@ -3,16 +3,19 @@
namespace App\Admin\Services;
use GuzzleHttp\Client;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Http;
class EquipInfoService
{
public static function getDatapoints($param)
{
if (empty($param['_search_'])){
return [];
}
$query = [];
if (!empty($param['at']['start'])){
$query['start'] = str_replace(' ', 'T', $param['at']['start']);
}
if (!empty($param['at']['end'])){
$query['end'] = str_replace(' ', 'T', $param['at']['end']);
@ -29,12 +32,86 @@ class EquipInfoService
]);
$response = $client->request('GET', 'devices/984998613/datapoints?' . $query);
$response = $client->request('GET', 'devices/' . $param['_search_'] . '/datapoints?' . $query);
$res = json_decode($response->getBody()->getContents(), true);
$res = !empty($res['data']['datastreams'][0]['datapoints']) ? $res['data']['datastreams'][0]['datapoints'] : [];
return $res;
$data = [];
foreach ($res as $re) {
$equip_data = $re['value'];
// $equip_data = '68C008669710390347698524015101FFFE0A01080000010000000000CFEB1601040400000992014B00010002000324200426151314020101009F017616';
$status_info = substr($equip_data, 62);
//阀门状态
$valve_status = substr($status_info, 0, 2);
$valve_status = base_convert($valve_status, 16, 2);
$valve_status = str_pad($valve_status, 8, '0', STR_PAD_LEFT);
$re['valve_status1'] = (substr($valve_status, -1, 1) == 1) ? '阀开' : '阀关';
$re['valve_status2'] = (substr($valve_status, -2, 1) == 1) ? '阀门堵转' : '阀门动作正常';
$re['valve_status3'] = (substr($valve_status, -3, 1) == 1) ? '行程开关异常' : '行程开关正常';
$re['valve_status4'] = (substr($valve_status, -4, 1) == 1) ? '电位器异常' : '电位器正常';
$re['valve_status5'] = (substr($valve_status, -5, 1) == 1) ? '电池电量低' : '电池电量正常';
$re['valve_status6'] = (substr($valve_status, -6, 1) == 1) ? '回水传感器异常' : '回水传感器正常';
$re['valve_status7'] = (substr($valve_status, -7, 1) == 1) ? '加速度传感器异常' : '加速度传感器正常';
$re['valve_status8'] = (substr($valve_status, -8, 1) == 1) ? '角度存在偏差' : '角度正常';
//设定开度
$re['set_opening'] = base_convert(substr($status_info, 2, 2), 16, 10) . '%';
//实际开度
$re['actual_opening'] = base_convert(substr($status_info, 4, 2), 16, 10) . '%';
//进水温度
$re['water_inlet_temperature'] = base_convert(substr($status_info, 6, 4), 16, 10) / 100 . '度';
//回水温度
$re['water_return_temperature'] = base_convert(substr($status_info, 10, 4), 16, 10) / 100 . '度';
//电池电量
$re['battery_power'] = base_convert(substr($status_info, 14, 4), 16, 10) / 100 . 'V';
//加速度X Y Z轴
$re['accelerated_x'] = substr($status_info, 18, 4);
$re['accelerated_y'] = substr($status_info, 22, 4);
$re['accelerated_z'] = substr($status_info, 26, 4);
//信号强度
$re['signal_strength'] = substr($status_info, 30, 2);
//阀门时间
$valve_time = substr($status_info, 32, 12);
$re['valve_time'] = date('Y-m-d H:i:s', strtotime('20'.$valve_time));
//上报间隔
$re['reporting_interval'] = substr($status_info, 44, 2);
//间隔单位
$interval_unit = substr($status_info, 46, 2);
switch ($interval_unit){
case '01':
$re['interval_unit'] = '分钟';
break;
case '02':
$re['interval_unit'] = '小时';
break;
case '03':
$re['interval_unit'] = '天';
break;
}
//上报有效时长
$re['effective_time'] = substr($status_info, 48, 2);
//总上报次数
$re['total_number_reports'] = base_convert(substr($status_info, 50, 4), 16, 10);
//其他
$re['other'] = substr($status_info, 54, 2);
//累加校验和
$re['check'] = substr($status_info, 56, 2);
//结束符
$re['finish'] = substr($status_info, 58, 2);
array_unshift($data, $re);
}
// $res = new Paginator($res, 20, null, ['path' => url()->current(), 'query' => $param]);
return $data;
}
}

1
app/Admin/routes.php

@ -15,6 +15,7 @@ Route::group([
$router->get('/', 'HomeController@index');
$router->get('/test', 'HomeController@test');
$router->resource('equip_resource', 'EquipResourceRecordController');
$router->resource('equip', 'EquipController');
$router->get('equip_info', 'EquipInfoController@index');
$router->get('/test/platformCacheList', 'TestController@platformCacheList');

11
app/Models/Equip.php

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
class Equip extends Model
{
use HasDateTimeFormatter; }

43
database/migrations/2022_08_22_093156_create_equips_table.php

@ -0,0 +1,43 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateEquipsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('equips', function (Blueprint $table) {
$table->increments('id');
$table->string('title')->default('')->comment('设备名称');
$table->string('desc')->default('')->comment('设备描述');
$table->string('tags')->default('')->comment('设备标签,字符串数组');
$table->string('protocol')->default('LwM2M')->comment('接入协议,这里只能是LwM2M');
$table->json('location')->comment('设备位置(“纬度”,“经度”,“高度”)');
$table->boolean('private')->default('1')->comment('设备私密性(默认true)');
$table->json('auth_info')->comment('NBIOT设备:{“imei码”:“imsi码”},imei、imsi规则见说明');
$table->string('auth')->default('')->comment('Auth_Code,由数字或字母组成,不超过16位');
$table->boolean('obsv')->default('1')->comment('是否订阅设备资源(默认为true)');
$table->json('other')->comment('其他信息(JSON格式,可自定义)');
$table->integer('chip')->comment('测试设备与芯片类型对应关系(取值1-6),详情见说明');
$table->string('psk')->default('')->comment('DTLS加密所使用的PSK,长度8-16个字节,字母或数字组成');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('equips');
}
}

56
dcat_admin_ide_helper.php

@ -36,12 +36,26 @@ namespace Dcat\Admin {
* @property Grid\Column|Collection password
* @property Grid\Column|Collection remember_token
* @property Grid\Column|Collection username
* @property Grid\Column|Collection api-key
* @property Grid\Column|Collection expired_time
* @property Grid\Column|Collection imei
* @property Grid\Column|Collection mode
* @property Grid\Column|Collection obj_id
* @property Grid\Column|Collection obj_inst_id
* @property Grid\Column|Collection res_id
* @property Grid\Column|Collection trigger_msg
* @property Grid\Column|Collection val
* @property Grid\Column|Collection auth
* @property Grid\Column|Collection auth_info
* @property Grid\Column|Collection chip
* @property Grid\Column|Collection desc
* @property Grid\Column|Collection location
* @property Grid\Column|Collection obsv
* @property Grid\Column|Collection other
* @property Grid\Column|Collection private
* @property Grid\Column|Collection protocol
* @property Grid\Column|Collection psk
* @property Grid\Column|Collection tags
* @property Grid\Column|Collection connection
* @property Grid\Column|Collection exception
* @property Grid\Column|Collection failed_at
@ -82,12 +96,26 @@ namespace Dcat\Admin {
* @method Grid\Column|Collection password(string $label = null)
* @method Grid\Column|Collection remember_token(string $label = null)
* @method Grid\Column|Collection username(string $label = null)
* @method Grid\Column|Collection api-key(string $label = null)
* @method Grid\Column|Collection expired_time(string $label = null)
* @method Grid\Column|Collection imei(string $label = null)
* @method Grid\Column|Collection mode(string $label = null)
* @method Grid\Column|Collection obj_id(string $label = null)
* @method Grid\Column|Collection obj_inst_id(string $label = null)
* @method Grid\Column|Collection res_id(string $label = null)
* @method Grid\Column|Collection trigger_msg(string $label = null)
* @method Grid\Column|Collection val(string $label = null)
* @method Grid\Column|Collection auth(string $label = null)
* @method Grid\Column|Collection auth_info(string $label = null)
* @method Grid\Column|Collection chip(string $label = null)
* @method Grid\Column|Collection desc(string $label = null)
* @method Grid\Column|Collection location(string $label = null)
* @method Grid\Column|Collection obsv(string $label = null)
* @method Grid\Column|Collection other(string $label = null)
* @method Grid\Column|Collection private(string $label = null)
* @method Grid\Column|Collection protocol(string $label = null)
* @method Grid\Column|Collection psk(string $label = null)
* @method Grid\Column|Collection tags(string $label = null)
* @method Grid\Column|Collection connection(string $label = null)
* @method Grid\Column|Collection exception(string $label = null)
* @method Grid\Column|Collection failed_at(string $label = null)
@ -133,12 +161,26 @@ namespace Dcat\Admin {
* @property Show\Field|Collection password
* @property Show\Field|Collection remember_token
* @property Show\Field|Collection username
* @property Show\Field|Collection api-key
* @property Show\Field|Collection expired_time
* @property Show\Field|Collection imei
* @property Show\Field|Collection mode
* @property Show\Field|Collection obj_id
* @property Show\Field|Collection obj_inst_id
* @property Show\Field|Collection res_id
* @property Show\Field|Collection trigger_msg
* @property Show\Field|Collection val
* @property Show\Field|Collection auth
* @property Show\Field|Collection auth_info
* @property Show\Field|Collection chip
* @property Show\Field|Collection desc
* @property Show\Field|Collection location
* @property Show\Field|Collection obsv
* @property Show\Field|Collection other
* @property Show\Field|Collection private
* @property Show\Field|Collection protocol
* @property Show\Field|Collection psk
* @property Show\Field|Collection tags
* @property Show\Field|Collection connection
* @property Show\Field|Collection exception
* @property Show\Field|Collection failed_at
@ -179,12 +221,26 @@ namespace Dcat\Admin {
* @method Show\Field|Collection password(string $label = null)
* @method Show\Field|Collection remember_token(string $label = null)
* @method Show\Field|Collection username(string $label = null)
* @method Show\Field|Collection api-key(string $label = null)
* @method Show\Field|Collection expired_time(string $label = null)
* @method Show\Field|Collection imei(string $label = null)
* @method Show\Field|Collection mode(string $label = null)
* @method Show\Field|Collection obj_id(string $label = null)
* @method Show\Field|Collection obj_inst_id(string $label = null)
* @method Show\Field|Collection res_id(string $label = null)
* @method Show\Field|Collection trigger_msg(string $label = null)
* @method Show\Field|Collection val(string $label = null)
* @method Show\Field|Collection auth(string $label = null)
* @method Show\Field|Collection auth_info(string $label = null)
* @method Show\Field|Collection chip(string $label = null)
* @method Show\Field|Collection desc(string $label = null)
* @method Show\Field|Collection location(string $label = null)
* @method Show\Field|Collection obsv(string $label = null)
* @method Show\Field|Collection other(string $label = null)
* @method Show\Field|Collection private(string $label = null)
* @method Show\Field|Collection protocol(string $label = null)
* @method Show\Field|Collection psk(string $label = null)
* @method Show\Field|Collection tags(string $label = null)
* @method Show\Field|Collection connection(string $label = null)
* @method Show\Field|Collection exception(string $label = null)
* @method Show\Field|Collection failed_at(string $label = null)

23
lang/en/equip.php

@ -0,0 +1,23 @@
<?php
return [
'labels' => [
'Equip' => 'Equip',
'equip' => 'Equip',
],
'fields' => [
'title' => '设备名称',
'desc' => '设备描述',
'tags' => '设备标签',
'protocol' => '接入协议',
'location' => '位置',
'private' => '设备私密性',
'auth_info' => 'NBIOT设备',
'auth' => 'Auth_Code',
'obsv' => '订阅设备资源',
'other' => '其他信息',
'chip' => '测试设备与芯片类型对应关系',
'psk' => 'DTLS加密所使用的PSK',
],
'options' => [
],
];
Loading…
Cancel
Save