Former-commit-id: 3f44a959f736e8651aa6bd2c911f1edbec83d884
Former-commit-id: 1cc73f9503c34097be0e462000a11b512d8d17ee
1.0
wanggang 4 years ago
parent 122e9e8ded
commit 60df8650ee

@ -29,6 +29,7 @@ namespace IoTNode.Data
//Setting
modelBuilder.Entity<Setting>().HasIndex(o => o.Name).IsUnique();
//ignore
modelBuilder.Ignore<AppModule>();
modelBuilder.Ignore<Area>();
modelBuilder.Ignore<Building>();
modelBuilder.Ignore<Organ>();
@ -50,12 +51,8 @@ namespace IoTNode.Data
modelBuilder.Ignore<IoTTimer>();
modelBuilder.Ignore<IoTTigger>();
modelBuilder.Entity<IoTProduct>().Ignore(o => o.Order);
modelBuilder.Entity<IoTApi>().Ignore(o => o.IoTCommands);
modelBuilder.Entity<IoTGateway>().Ignore(o => o.Building);
modelBuilder.Entity<IoTDevice>().Ignore(o => o.IoTCommands);
modelBuilder.Ignore<User>();
modelBuilder.Ignore<PermissionCategory>();
modelBuilder.Ignore<Permission>();
//
modelBuilder.Ignore<PermissionCategory>();
modelBuilder.Ignore<Permission>();

@ -48,7 +48,7 @@ namespace IoTNode.Controllers
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse MathAir1([SwaggerParameter("设备编号"), Required] string number)
public ApiResponse Match1([SwaggerParameter("设备编号"), Required] string number)
{
return this.AsyncAction(() =>
{
@ -57,7 +57,7 @@ namespace IoTNode.Controllers
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse MathAir2([SwaggerParameter("设备编号"), Required] string number)
public ApiResponse Match2([SwaggerParameter("设备编号"), Required] string number)
{
return this.AsyncAction(() =>
{
@ -66,7 +66,7 @@ namespace IoTNode.Controllers
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse MathAir3([SwaggerParameter("设备编号"), Required] string number)
public ApiResponse Match3([SwaggerParameter("设备编号"), Required] string number)
{
return this.AsyncAction(() =>
{

@ -196,6 +196,7 @@ namespace IoTNode.DeviceServices.FBee
this.Connect(client);
}
this.X9d(gateway.Number);
this.X81(gateway.Number);
}
catch (Exception ex)
{

@ -1,7 +1,7 @@
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"Default": "Trace",
"System": "Information",
"Microsoft": "Warning"
}

@ -12,7 +12,7 @@
"AppSettings": {
"SecretKey": "111111111111111111111111",
"JWT": "key=111111111111111111111111;issuer=111111111111111111111111;audience=111111111111111111111111;cookie=jwt",
"OpenApi": "name=name;title=title;version=1.0",
"OpenApi": "name=v1;title=title;version=1.0",
"TablePrefix": "",
"Database": "SQLite"
}

@ -1,27 +1,4 @@
CREATE TABLE "AppModule" (
-- 模块
-- Id
"Id" TEXT NOT NULL CONSTRAINT "PK_AppModule" PRIMARY KEY,
-- Name
"Name" TEXT NOT NULL,
-- Number
"Number" TEXT NULL,
-- Url
"Url" TEXT NULL,
-- Order
"Order" INTEGER NOT NULL,
-- IsDeleted
"IsDeleted" TEXT NULL
);
CREATE TABLE "IoTGateway" (
CREATE TABLE "IoTGateway" (
-- 网关
-- Id
@ -111,33 +88,6 @@ CREATE TABLE "Setting" (
);
CREATE TABLE "IoTApi" (
-- 接口
-- Id
"Id" TEXT NOT NULL CONSTRAINT "PK_IoTApi" PRIMARY KEY,
-- Name
"Name" TEXT NULL,
-- Path
"Path" TEXT NULL,
-- Command
"Command" TEXT NULL,
-- Method
"Method" TEXT NULL,
-- IoTProductId
"IoTProductId" TEXT NOT NULL,
-- IsDeleted
"IsDeleted" TEXT NULL,
CONSTRAINT "FK_IoTApi_IoTProduct_IoTProductId" FOREIGN KEY ("IoTProductId") REFERENCES "IoTProduct" ("Id") ON DELETE CASCADE
);
CREATE TABLE "IoTDevice" (
-- 设备
@ -253,9 +203,6 @@ CREATE TABLE "IoTData" (
);
CREATE INDEX "IX_IoTApi_IoTProductId" ON "IoTApi" ("IoTProductId");
CREATE INDEX "IX_IoTData_IoTDeviceId" ON "IoTData" ("IoTDeviceId");

@ -36,6 +36,7 @@ namespace Platform.Api.Api
this._publisher = publisher;
}
[HttpPost]
public IActionResult ExecApi([FromBody] ExecApiModel model)
{
try

@ -30,6 +30,7 @@ namespace Platform.Api
this._organUserRepo = organUserRepo;
}
[HttpPost]
public IActionResult Layout(string user = null)
{
try

@ -10,7 +10,7 @@
"AppSettings": {
"SecretKey": "111111111111111111111111",
"JWT": "key=111111111111111111111111;issuer=111111111111111111111111;audience=111111111111111111111111;cookie=token",
"OpenApi": "name=name;title=title;version=1.0",
"OpenApi": "name=v1;title=title;version=1.0",
"BasePath": "/platform",
"TablePrefix": "",
"Database": "MySQL",

@ -345,9 +345,9 @@
<a-tab-pane key="2" tab="配置">
<div class="row">
<div class="col-12">
<button type="button" value="1" class="btn btn-success px-2 m-2 btn-sm" @click="execApi(device.number,'/Ir/MathAir1')">空调匹配</button>
<button type="button" value="2" class="btn btn-success px-2 m-2 btn-sm" @click="execApi(device.number,'/Ir/MathAir2')">电视匹配</button>
<button type="button" value="3" class="btn btn-success px-2 m-2 btn-sm" @click="execApi(device.number,'/Ir/MathAir3')">机顶盒匹配</button>
<button type="button" value="1" class="btn btn-success px-2 m-2 btn-sm" @click="execApi(device.number,'/Ir/Match1')">空调匹配</button>
<button type="button" value="2" class="btn btn-success px-2 m-2 btn-sm" @click="execApi(device.number,'/Ir/Match2')">电视匹配</button>
<button type="button" value="3" class="btn btn-success px-2 m-2 btn-sm" @click="execApi(device.number,'/Ir/Match3')">机顶盒匹配</button>
</div>
</div>
<div class="row">
@ -356,20 +356,51 @@
<tr>
<th>#</th>
<th>名称</th>
<th>按键</th>
<th>序号</th>
<th>按键</th>
<th>删除</th>
</tr>
<tr v-for="(button,index) in getCustomButtons()">
<td>{{index+1}}</td>
<td>{{button.Order}}</td>
<td>{{button.Name}}</td>
<td>{{button.Value}}</td>
<td>{{button.Order}}</td>
<td><button class="btn btn-sm btn-success" @click="remove(button.name)">删除</button></td>
</tr>
</table>
</div>
</div>
<div class="row">
<div class="col-12">
<form class="form-horizontal">
<div class="form-group row">
<label class="col-sm-2 col-form-label">序号</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="Order" value="100">
</div>
</div><div class="form-group row">
<label class="col-sm-2 col-form-label">名称</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="Name" value="指令名称">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">按键</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="Value" value="603">
</div>
</div>
<div class="row">
<div class="col-sm-2"></div>
<div class="col-sm-10" style="text-align:left;">
<button class="btn btn-sm btn-success" @click.prevent="study">学习</button>
<button class="btn btn-sm btn-success" @click.prevent="test">测试</button>
<button class="btn btn-sm btn-success" @click.prevent="add">保存</button>
</div>
</div>
</form>
</div>
</div>
</a-tab-pane>
</a-tabs>
</a-modal>
@ -386,6 +417,67 @@
code: this.value || 0
};
},
computed: {
pattern: function () {
var code = parseInt(getIoTDataValue(this.device, "空调按键"));
var pattern = { name: '制冷', value: 0 };
if (code > 480 + 2) {
pattern = { name: '通风', value: 480 };
}
else if (code > 360 + 2) {
pattern = { name: '抽湿', value: 360 };
}
else if (code > 240 + 2) {
pattern = { name: '制热', value: 240 };
}
else if (code > 120 + 2) {
pattern = { name: '自动', value: 120 };
}
return pattern;
},
direction: function () {
var code1 = parseInt(getIoTDataValue(this.device, "空调按键"));
var code = code1 - this.pattern.value;
var direction = { name: '自动', value: 0 };;
if (code > 60 + 2) {
direction = { name: '手动', value: 60 };
}
return direction;
},
wind: function () {
var code1 = parseInt(getIoTDataValue(this.device, "空调按键"));
var code = code1 - this.pattern.value - this.direction.value;
var wind = { name: '自动', value: 0 };
if (code > 45 + 2) {
wind = { name: '低', value: 45 };
}
else if (code > 30 + 2) {
wind = { name: '中', value: 30 };
}
else if (code > 15 + 2) {
wind = { name: '高', value: 15 };
}
return wind;
},
power: function () {
var code1 = parseInt(getIoTDataValue(this.device, "空调按键"));
var code = code1 - this.pattern.value - this.direction.value - this.wind.value;
var power = { name: '关', value: 1 };
if (code > 1) {
power = { name: '开', value: 2 };
}
return power;
},
temperature: function () {
var code1 = parseInt(getIoTDataValue(this.device, "空调按键"));
var code = code1 - this.pattern.value - this.direction.value - this.wind.value - this.power.value;
var temperature = { name: '16℃', value: 1 };
if (code > 1) {
temperature = { name: parseInt(code + 15) + '℃', value: code };
}
return temperature;
}
},
watch: {
code(val) {
this.$emit('update:value', val);
@ -433,6 +525,9 @@
var newCode = code - oldValue + newValue;
this.send(newCode, 1);
},
send: function (value, type) {
execApi(this.device.number, '/Ir/Send', 'type=' + type + '&code=' + value);
},
change: function (v, min, max, step) {
var oldValue = parseInt(v);
var newValue = oldValue + step;
@ -443,69 +538,35 @@
var newCode = code - oldValue + newValue;
this.send(newCode, 1);
},
send: function (value, type) {
execApi(this.device.number, '/Ir/Send', 'type=' + type + '&code=' + value);
add: function () {
var array = $(event.target).parents('form').serializeArray();
var button = {};
$.map(array, function (n, i) {
button[n['name']] = n['value'];
});
var list = this.getCustomButtons();
list.push(button);
var value = JSON.stringify(list);
execApi(this.device.number, '/Ir/Buttons', 'buttons=' + value);
},
},
computed: {
pattern: function () {
var code = parseInt(getIoTDataValue(this.device, "空调按键"));
var pattern = { name: '制冷', value: 0 };
if (code > 480 + 2) {
pattern = { name: '通风', value: 480 };
remove: function (name) {
var buttons = this.getCustomButtons();
for (var i = buttons.length - 1; i >= 0; i--) {
if (buttons[i].name === name) {
buttons.splice(i, 1);
break;
}
}
else if (code > 360 + 2) {
pattern = { name: '抽湿', value: 360 };
}
else if (code > 240 + 2) {
pattern = { name: '制热', value: 240 };
}
else if (code > 120 + 2) {
pattern = { name: '自动', value: 120 };
}
return pattern;
var value = JSON.stringify(buttons);
execApi(this.device.number, '/Ir/Buttons', 'buttons=' + value);
},
direction: function () {
var code1 = parseInt(getIoTDataValue(this.device, "空调按键"));
var code = code1 - this.pattern.value;
var direction = { name: '自动', value: 0 };;
if (code > 60 + 2) {
direction = { name: '手动', value: 60 };
}
return direction;
test: function (event) {
var code = $(event.target).parents('form').find("input[name='Value']").val();
execApi(this.device.number, '/Ir/Send', 'type=5&code=' + code);
},
wind: function () {
var code1 = parseInt(getIoTDataValue(this.device, "空调按键"));
var code = code1 - this.pattern.value - this.direction.value;
var wind = { name: '自动', value: 0 };
if (code > 45 + 2) {
wind = { name: '低', value: 45 };
}
else if (code > 30 + 2) {
wind = { name: '中', value: 30 };
}
else if (code > 15 + 2) {
wind = { name: '高', value: 15 };
}
return wind;
},
power: function () {
var code1 = parseInt(getIoTDataValue(this.device, "空调按键"));
var code = code1 - this.pattern.value - this.direction.value - this.wind.value;
var power = { name: '关', value: 1 };
if (code > 1) {
power = { name: '开', value: 2 };
}
return power;
},
temperature: function () {
var code1 = parseInt(getIoTDataValue(this.device, "空调按键"));
var code = code1 - this.pattern.value - this.direction.value - this.wind.value - this.power.value;
var temperature = { name: '16℃', value: 1 };
if (code > 1) {
temperature = { name: parseInt(code + 15) + '℃', value: code };
}
return temperature;
study: function (event) {
var code = $(event.target).parents('form').find("input[name='Value']").val();
execApi(this.device.number, '/Ir/Study', 'type=' + 5 + '&code=' + code);
}
}
};

@ -271,7 +271,7 @@
}
else {
var url = config.service('platform/Home/GetBuilding/' + id);
axios.get(url).then(function (response) {
axios.post(url).then(function (response) {
parent.model.building = response.data;
});
}

Loading…
Cancel
Save