|
|
|
@ -8,6 +8,7 @@ using IoT.Shared.Services;
|
|
|
|
|
using IoTNode.DeviceServices.Onvif;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
|
|
|
|
|
namespace IoTNode.Services
|
|
|
|
|
{
|
|
|
|
@ -18,13 +19,19 @@ namespace IoTNode.Services
|
|
|
|
|
IEventHander<EntityDeletedEvent<SceneTimer>>,
|
|
|
|
|
IEventHander<EntityUpdatedEvent<Data>>
|
|
|
|
|
{
|
|
|
|
|
private readonly ILogger<IoTNodeEventHandler> _logger;
|
|
|
|
|
private readonly ISceneTiggerService _sceneTiggerService;
|
|
|
|
|
private readonly IoTNodeJob _job;
|
|
|
|
|
private readonly OnvifService _onvifService;
|
|
|
|
|
private readonly IoTNodeClient _ioTNodeClient;
|
|
|
|
|
|
|
|
|
|
public IoTNodeEventHandler(ISceneTiggerService sceneTiggerService, IoTNodeJob job, OnvifService onvifService, IoTNodeClient ioTNodeClient)
|
|
|
|
|
public IoTNodeEventHandler(ILogger<IoTNodeEventHandler> logger,
|
|
|
|
|
ISceneTiggerService sceneTiggerService,
|
|
|
|
|
IoTNodeJob job,
|
|
|
|
|
OnvifService onvifService,
|
|
|
|
|
IoTNodeClient ioTNodeClient)
|
|
|
|
|
{
|
|
|
|
|
this._logger = logger;
|
|
|
|
|
this._sceneTiggerService = sceneTiggerService;
|
|
|
|
|
this._job = job;
|
|
|
|
|
this._onvifService = onvifService;
|
|
|
|
@ -48,28 +55,7 @@ namespace IoTNode.Services
|
|
|
|
|
|
|
|
|
|
public void Handle(EntityUpdatedEvent<Data> message)
|
|
|
|
|
{
|
|
|
|
|
var data = message.Data;
|
|
|
|
|
foreach (var tigger in this._sceneTiggerService.GetSceneTiggers())
|
|
|
|
|
{
|
|
|
|
|
if (tigger.DataId == data.Id)
|
|
|
|
|
{
|
|
|
|
|
var methodText = $"bool Valid(string name,string key,{data.Type.ToString().ToLower()} value,string description){{ return {tigger.Condition};}}";
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
dynamic method = CSScript.Evaluator.LoadMethod(methodText);
|
|
|
|
|
dynamic value = data.GetValue();
|
|
|
|
|
var result = method.Valid(data.Name, data.Key, value, data.Description);
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
_job.TiggerHandle(tigger.Id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ex.PrintStack();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.TiggerHandle(message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Handle(EntityUpdatedEvent<Setting> message)
|
|
|
|
@ -80,11 +66,47 @@ namespace IoTNode.Services
|
|
|
|
|
this._onvifService.StopPushToServer();
|
|
|
|
|
this._onvifService.StartPushToServer();
|
|
|
|
|
}
|
|
|
|
|
else if(message.Data.Name=="organ")
|
|
|
|
|
else if (message.Data.Name == "organ")
|
|
|
|
|
{
|
|
|
|
|
this._ioTNodeClient.Close();
|
|
|
|
|
this._ioTNodeClient.Connect();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void TiggerHandle(BaseEvent<Data> message)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this._logger.LogInformation($"Debug>call tigger handler when data update at {DateTime.Now.ToLongDateString()} ");
|
|
|
|
|
foreach (var tigger in this._sceneTiggerService.GetSceneTiggers())
|
|
|
|
|
{
|
|
|
|
|
var data = message.Data;
|
|
|
|
|
if (tigger.DataId == data.Id)
|
|
|
|
|
{
|
|
|
|
|
this._logger.LogInformation($"Debug>match tigger at {DateTime.Now.ToLongDateString()} ");
|
|
|
|
|
var methodText = $"bool Valid(string name,string key,{data.Type.ToString().ToLower()} value,string description){{ return {tigger.Condition};}}";
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
dynamic method = CSScript.Evaluator.LoadMethod(methodText);
|
|
|
|
|
dynamic value = data.GetValue();
|
|
|
|
|
var result = method.Valid(data.Name, data.Key, value, data.Description);
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
this._logger.LogInformation($"Debug>match contdation at {DateTime.Now.ToLongDateString()} ");
|
|
|
|
|
this._job.TiggerHandle(tigger.Id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this._logger.LogError(ex.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this._logger.LogError(ex.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|