iotgateway/IoTGateway.ViewModel/BasicData/DeviceVariableVMs/SetValueVM.cs
2022-08-10 16:55:44 +08:00

87 lines
3.6 KiB
C#

using Microsoft.EntityFrameworkCore;
using Plugin;
using System;
using System.Collections.Generic;
using System.Linq;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using IoTGateway.Model;
using System.ComponentModel.DataAnnotations;
namespace IoTGateway.ViewModel.BasicData.DeviceVariableVMs
{
public class SetValueVM : BaseVM
{
public string { get; set; }
public string { get; set; }
public string { get; set; }
public string { get; set; }
public string { get; set; }
public string { get; set; }
public string { get; set; }
public string { get; set; }
public void Set()
{
try
{
var variable = DC.Set<DeviceVariable>().Where(x => x.ID == Guid.Parse(FC["id"].ToString())).AsNoTracking().Include(x => x.Device).FirstOrDefault();
= variable.Device.DeviceName;
= variable.Name;
= variable.DataType.GetEnumDisplayName();
var deviceService = Wtm.ServiceProvider.GetService(typeof(DeviceService)) as DeviceService;
var dapThread = deviceService.DeviceThreads.Where(x => x.Device.ID == variable.DeviceId).FirstOrDefault();
if (dapThread?.DeviceValues != null && dapThread.DeviceValues.ContainsKey(variable.ID))
{
= dapThread.DeviceValues[variable.ID].Value?.ToString();
= dapThread.DeviceValues[variable.ID].CookedValue?.ToString();
= dapThread.DeviceValues[variable.ID].StatusType.ToString();
}
if (variable == null || variable.Device == null || dapThread == null)
= "设置失败,找不到设备(变量)";
else
{
PluginInterface.RpcRequest request = new PluginInterface.RpcRequest()
{
RequestId = Guid.NewGuid().ToString(),
DeviceName = variable.Device.DeviceName,
Method = "write",
Params = new Dictionary<string, object>() { { variable.Name, } }
};
dapThread.MyMqttClient_OnExcRpc(this, request);
= "设置成功";
}
}
catch (Exception ex)
{
= $"设置失败,{ex}";
}
}
protected override void InitVM()
{
var variable = DC.Set<DeviceVariable>().Where(x => x.ID == Guid.Parse(FC["id"].ToString())).AsNoTracking().Include(x => x.Device).FirstOrDefault();
= variable.Device.DeviceName;
= variable.Name;
= variable.DataType.GetEnumDisplayName();
var deviceService = Wtm.ServiceProvider.GetService(typeof(DeviceService)) as DeviceService;
var dapThread = deviceService.DeviceThreads.Where(x => x.Device.ID == variable.DeviceId).FirstOrDefault();
if (dapThread?.DeviceValues != null && dapThread.DeviceValues.ContainsKey(variable.ID))
{
= dapThread.DeviceValues[variable.ID].Value?.ToString();
= dapThread.DeviceValues[variable.ID].CookedValue?.ToString();
= dapThread.DeviceValues[variable.ID].StatusType.ToString();
}
base.InitVM();
}
}
}