diff --git a/projects/IoT/IoTServices/FBeeService/Application/Domain/Entities/FBeeDevice.cs b/projects/IoT/IoTServices/FBeeService/Application/Domain/Entities/FBeeDevice.cs index 0efbc81f..bf499618 100644 --- a/projects/IoT/IoTServices/FBeeService/Application/Domain/Entities/FBeeDevice.cs +++ b/projects/IoT/IoTServices/FBeeService/Application/Domain/Entities/FBeeDevice.cs @@ -9,7 +9,7 @@ namespace Application.Domain.Entities { public int DataType { get; set; } public int DataLength { get; set; } - public int Address { get; set; } + public string Address { get; set; } public int Endpoint { get; set; } public int ProfileId { get; set; } public int DeviceId { get; set; } @@ -30,7 +30,7 @@ namespace Application.Domain.Entities public string Sn { get; set; } public string Name { get; set; } - public int Number { get; set; } + public string Number { get; set; } public string Icon { get; set; } public int CategoryNumber { get; set; } public string CategoryName { get; set; } @@ -41,7 +41,7 @@ namespace Application.Domain.Entities { this.DataType = ms.ReadByte(); this.DataLength = ms.ReadByte(); - this.Address = ms.ReadInt(); + this.Address = ms.ReadHexString(2); this.Endpoint = ms.ReadByte(); this.ProfileId = ms.ReadInt(); this.DeviceId = ms.ReadInt(); diff --git a/projects/IoT/IoTServices/FBeeService/Areas/Controllers/HomeController.cs b/projects/IoT/IoTServices/FBeeService/Areas/Controllers/HomeController.cs index 8b1fc7f3..79609765 100644 --- a/projects/IoT/IoTServices/FBeeService/Areas/Controllers/HomeController.cs +++ b/projects/IoT/IoTServices/FBeeService/Areas/Controllers/HomeController.cs @@ -7,7 +7,7 @@ using Infrastructure.Web.Mvc; using Microsoft.AspNetCore.Mvc; using SPService.Applicaiton.Models; -namespace LiChuangService.Areas.Controllers +namespace FBeeService.Areas.Controllers { [Area("Admin")] public class HomeController : CrudController, EditGatewayModel, EditGatewayModel> diff --git a/projects/IoT/IoTServices/FBeeService/Controllers/HomeController.cs b/projects/IoT/IoTServices/FBeeService/Controllers/HomeController.cs index 0e7721a2..bf959dd2 100644 --- a/projects/IoT/IoTServices/FBeeService/Controllers/HomeController.cs +++ b/projects/IoT/IoTServices/FBeeService/Controllers/HomeController.cs @@ -13,7 +13,7 @@ using Polly; using SPService.Applicaiton.Models; using Swashbuckle.AspNetCore.Annotations; -namespace LiChuangService.Controllers +namespace FBeeService.Controllers { public class HomeController : Controller { @@ -37,15 +37,49 @@ namespace LiChuangService.Controllers return View(this._repo.ReadOnlyTable().ToList()); } - #region api - [HttpGet] - [Route("/switch2/api")] + [Route("/smartplug/api")] [SwaggerOperation("API")] [ApiExplorerSettings(IgnoreApi = true)] public string Switch2Api() { - return GetApiJson("/switch2/"); + return GetApiJson("/smartplug/"); + } + + #region api + + [SwaggerOperation("开")] + [HttpGet] + [Route("/smartplug/21on")] + public ApiResponse SmartPlugOn([SwaggerParameter("设备Id")]string id) + { + try + { + this._deviceService.SmartPlugOn(id); + } + catch (Exception ex) + { + ex.PrintStack(); + return ApiResponse.Error(ex.Message); + } + return ApiResponse.AsyncSuccess(); + } + + [SwaggerOperation("关")] + [HttpGet] + [Route("/smartplug/22off")] + public ApiResponse SmartPlugOff([SwaggerParameter("设备Id")]string id) + { + try + { + this._deviceService.SmartPlugOff(id); + } + catch (Exception ex) + { + ex.PrintStack(); + return ApiResponse.Error(ex.Message); + } + return ApiResponse.AsyncSuccess(); } [HttpGet] diff --git a/projects/IoT/IoTServices/FBeeService/FBeeService.csproj b/projects/IoT/IoTServices/FBeeService/FBeeService.csproj index 4ba05829..531ad5ce 100644 --- a/projects/IoT/IoTServices/FBeeService/FBeeService.csproj +++ b/projects/IoT/IoTServices/FBeeService/FBeeService.csproj @@ -3,6 +3,7 @@ netcoreapp2.2 true + FBeeService diff --git a/projects/IoT/IoTServices/FBeeService/Infrastructure/CommandHelper.cs b/projects/IoT/IoTServices/FBeeService/Infrastructure/CommandHelper.cs index 4edca343..a46b9472 100644 --- a/projects/IoT/IoTServices/FBeeService/Infrastructure/CommandHelper.cs +++ b/projects/IoT/IoTServices/FBeeService/Infrastructure/CommandHelper.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Net.Sockets; -namespace LiChuangService +namespace FBeeService { public static class CommandHelper { diff --git a/projects/IoT/IoTServices/FBeeService/Infrastructure/Crc16.cs b/projects/IoT/IoTServices/FBeeService/Infrastructure/Crc16.cs index 2767010b..c03b58ea 100644 --- a/projects/IoT/IoTServices/FBeeService/Infrastructure/Crc16.cs +++ b/projects/IoT/IoTServices/FBeeService/Infrastructure/Crc16.cs @@ -1,4 +1,4 @@ -namespace LiChuangService +namespace FBeeService { public static class Crc16 { diff --git a/projects/IoT/IoTServices/FBeeService/Infrastructure/DeviceService.cs b/projects/IoT/IoTServices/FBeeService/Infrastructure/DeviceService.cs index f3b5a799..a0599f01 100644 --- a/projects/IoT/IoTServices/FBeeService/Infrastructure/DeviceService.cs +++ b/projects/IoT/IoTServices/FBeeService/Infrastructure/DeviceService.cs @@ -1,8 +1,5 @@ using Application.Domain.Entities; using Application.Models; - -using Application.Domain.Entities; - using Infrastructure.Data; using Infrastructure.Extensions; using Infrastructure.Models; @@ -23,7 +20,7 @@ using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; -namespace LiChuangService +namespace FBeeService { public class DeviceService : IDisposable { @@ -89,6 +86,34 @@ namespace LiChuangService Console.WriteLine("notify end ..."); } + public void SmartPlugOn(string id) + { + this.DeviceOnOff(id, 1); + } + + public void SmartPlugOff(string id) + { + this.DeviceOnOff(id, 0); + } + + private void DeviceOnOff(string id, byte status) + { + var sn = id.Split('-')[0]; + var address = id.Split('-')[1]; + var list = new List() { 0x16, 0x00 }; + list.AddRange(sn.HexToBytes().Reverse()); + list.Add(0xfe); + list.Add(0x82); + list.Add(0x0d); + list.Add(0x02); + list.AddRange(address.HexToBytes()); + list.AddRange(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }); + list.Add(0x01); + list.AddRange(new byte[] { 0x00, 0x00 }); + list.Add(status); + this.Clients[sn].Client.GetStream().Write(list.ToArray()); + } + public void Switch2AllOn(string id) { this.Command16(new byte[] { this.GetNumber(id), 0x0f, 0x00, 0x00, 0x00, 0x03, 0x01, 0x07 }); @@ -332,15 +357,15 @@ namespace LiChuangService { var responseType = ms.ReadByte(); var dataLength = ms.ReadByte(); - var deviceNumber = ms.ReadInt(); + var address = ms.ReadHexString(2); var endpoint = ms.ReadByte(); using (var scope = _applicationServices.CreateScope()) { var deviceRepo = scope.ServiceProvider.GetService>(); - var device = deviceRepo.Table().FirstOrDefault(o => o.Number == deviceNumber); + var device = deviceRepo.Table().FirstOrDefault(o => o.Address == address); if (device == null) { - Console.WriteLine($"{deviceNumber} dose not save in database"); + Console.WriteLine($"{address} hasn't save in database"); } if (responseType == MessageType.DeviceResponse)//获取设备返回值 { @@ -349,7 +374,7 @@ namespace LiChuangService var deviceType = DeviceId.List.FirstOrDefault(o => o.RawDeviceId == deviceId); if (deviceType == null) { - Console.WriteLine($"{deviceId} dose not config in database"); + Console.WriteLine($"{deviceId} hasn't config in database"); } else { @@ -358,7 +383,7 @@ namespace LiChuangService device = new FBeeDevice { Sn = sn, - Number = deviceNumber, + Number = $"{sn}-{address}", Name = deviceType.Name, Icon = deviceType.Icon, CategoryNumber = deviceType.RawDeviceId, diff --git a/projects/IoT/IoTServices/FBeeService/Program.cs b/projects/IoT/IoTServices/FBeeService/Program.cs index afa9b271..9f061667 100644 --- a/projects/IoT/IoTServices/FBeeService/Program.cs +++ b/projects/IoT/IoTServices/FBeeService/Program.cs @@ -5,7 +5,7 @@ using Infrastructure.Extensions; using Infrastructure.Web.Hosting; using Microsoft.AspNetCore; -namespace LiChuangService +namespace FBeeService { public class Program { diff --git a/projects/IoT/IoTServices/FBeeService/Startup.cs b/projects/IoT/IoTServices/FBeeService/Startup.cs index 39916e07..e8bc35bd 100644 --- a/projects/IoT/IoTServices/FBeeService/Startup.cs +++ b/projects/IoT/IoTServices/FBeeService/Startup.cs @@ -8,7 +8,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; -namespace LiChuangService +namespace FBeeService { public class Startup : ShardStartup { diff --git a/projects/IoT/IoTServices/FBeeService/Views/Home/Index.cshtml b/projects/IoT/IoTServices/FBeeService/Views/Home/Index.cshtml index 0442acca..59cfc905 100644 --- a/projects/IoT/IoTServices/FBeeService/Views/Home/Index.cshtml +++ b/projects/IoT/IoTServices/FBeeService/Views/Home/Index.cshtml @@ -1,6 +1,7 @@ @model List + @@ -9,6 +10,7 @@ @foreach (var item in Model) { +
编号 Sn 地址 开关
@item.Number @item.Sn @item.Address @item.Power