diff --git a/MyCore.Interfaces/DTO/MyControlPanel/DeviceDTO.cs b/MyCore.Interfaces/DTO/MyControlPanel/DeviceDTO.cs index 6d8f3b3..9c18967 100644 --- a/MyCore.Interfaces/DTO/MyControlPanel/DeviceDTO.cs +++ b/MyCore.Interfaces/DTO/MyControlPanel/DeviceDTO.cs @@ -15,6 +15,8 @@ namespace MyCore.Interfaces.DTO public string Name { get; set; } + public string NameForAction { get; set; } + public string Model { get; set; } public DeviceType Type { get; set; } diff --git a/MyCore.Interfaces/Models/MyControlPanel/Database/Device.cs b/MyCore.Interfaces/Models/MyControlPanel/Database/Device.cs index 47b16ed..d207e16 100644 --- a/MyCore.Interfaces/Models/MyControlPanel/Database/Device.cs +++ b/MyCore.Interfaces/Models/MyControlPanel/Database/Device.cs @@ -25,6 +25,9 @@ namespace MyCore.Interfaces.Models [BsonRequired] public string Name { get; set; } + [BsonElement("NameForAction")] + public string NameForAction { get; set; } + [BsonElement("Description")] public string Description { get; set; } @@ -260,6 +263,7 @@ namespace MyCore.Interfaces.Models Id = Id, HomeId = HomeId, Name = Name, + NameForAction = NameForAction, Model = Model, Type = Type, ConnectionStatus = ConnectionStatus, @@ -279,6 +283,7 @@ namespace MyCore.Interfaces.Models Id = Id, HomeId = HomeId, Name = Name, + NameForAction = NameForAction, Model = Model, Type = Type, Port = Port, diff --git a/MyCore/Controllers/Helpers/DevicesHelper.cs b/MyCore/Controllers/Helpers/DevicesHelper.cs index 5777b03..7a08487 100644 --- a/MyCore/Controllers/Helpers/DevicesHelper.cs +++ b/MyCore/Controllers/Helpers/DevicesHelper.cs @@ -233,7 +233,7 @@ namespace MyCore.Service.Controllers.Helpers } } - public static void ActionOnZigbee2Mqtt(Device device, Interfaces.Models.Action action, string deviceNameForAction) + public static void ActionOnZigbee2Mqtt(Device device, Interfaces.Models.Action action) { var request = ""; var buildRequest = new Dictionary(); @@ -372,12 +372,13 @@ namespace MyCore.Service.Controllers.Helpers request = JsonConvert.SerializeObject(buildRequest); + var nameToSend = device.NameForAction == null ? device.Name : device.NameForAction; + // SEND REQUEST //var requestToSend = $"Send request ! zigbee2mqtt/{deviceNameForAction}/set/{request}"; - System.Console.WriteLine($"Send request ! zigbee2mqtt/{deviceNameForAction}/set/{request}"); - - MqttClientService.PublishMessage("zigbee2mqtt/" + deviceNameForAction + "/set", request); + System.Console.WriteLine($"Send request ! zigbee2mqtt/{nameToSend}/set/{request}"); + MqttClientService.PublishMessage($"zigbee2mqtt/{nameToSend}/set", request); } catch (Exception ex) { diff --git a/MyCore/Services/AlarmService.cs b/MyCore/Services/AlarmService.cs index b72405c..e3c2a72 100644 --- a/MyCore/Services/AlarmService.cs +++ b/MyCore/Services/AlarmService.cs @@ -235,7 +235,7 @@ namespace MyCore.Service.Services case ProviderType.zigbee2mqtt: try { - DevicesHelper.ActionOnZigbee2Mqtt(actionDeviceToTest, action, DeviceNameForAction); + DevicesHelper.ActionOnZigbee2Mqtt(actionDeviceToTest, action); } catch (Exception ex) { diff --git a/MyCore/Services/AutomationService.cs b/MyCore/Services/AutomationService.cs index 5830d34..db776ad 100644 --- a/MyCore/Services/AutomationService.cs +++ b/MyCore/Services/AutomationService.cs @@ -171,7 +171,7 @@ namespace MyCore.Service.Services case ProviderType.zigbee2mqtt: try { - DevicesHelper.ActionOnZigbee2Mqtt(actionDeviceToTest, action, DeviceNameForAction); + DevicesHelper.ActionOnZigbee2Mqtt(actionDeviceToTest, action); } catch (Exception ex) { diff --git a/MyCore/Services/Devices/DeviceService.cs b/MyCore/Services/Devices/DeviceService.cs index 238c3e3..53cb2d8 100644 --- a/MyCore/Services/Devices/DeviceService.cs +++ b/MyCore/Services/Devices/DeviceService.cs @@ -87,6 +87,7 @@ namespace MyCore.Services.Devices if (create) { device.Name = deviceDetailDTO.Name; } + device.NameForAction = deviceDetailDTO.NameForAction; device.Description = deviceDetailDTO.Description; device.ManufacturerName = deviceDetailDTO.ManufacturerName; @@ -131,43 +132,48 @@ namespace MyCore.Services.Devices // Todo structure SupportedOperations device.SupportedOperations = deviceDetailDTO.SupportedOperations; - // TODO CHECK HERE IF NOT ERASING DATA .. on zigbee connection + // If no zigbee, update data (Netatmo ..) + if (!isZigbee) + { + device.LastStateDate = deviceDetailDTO.LastStateDate; + device.LastState = deviceDetailDTO.LastState; - device.IsContact = deviceDetailDTO.IsContact; - device.Contact = deviceDetailDTO.Contact; - device.IsIlluminance = deviceDetailDTO.IsIlluminance; - device.Illuminance = deviceDetailDTO.Illuminance != null ? deviceDetailDTO.Illuminance.Value : 0; - device.IsBrightness = deviceDetailDTO.IsBrightness; - device.Brightness = deviceDetailDTO.Brightness; - device.IsState = deviceDetailDTO.IsState; - device.State = deviceDetailDTO.State; - device.IsColorTemp = deviceDetailDTO.IsColorTemp; - device.ColorTemp = deviceDetailDTO.ColorTemp; - device.IsColorXY = deviceDetailDTO.IsColorXY; - device.ColorX = deviceDetailDTO.ColorX; - device.ColorY = deviceDetailDTO.ColorY; - device.IsOccupation = deviceDetailDTO.IsOccupation; - device.Occupation = deviceDetailDTO.Occupation; - device.IsAlarm = deviceDetailDTO.IsAlarm; - device.Alarm = deviceDetailDTO.Alarm; - device.IsTemperature = deviceDetailDTO.IsTemperature; - device.Temperature = deviceDetailDTO.Temperature != null ? deviceDetailDTO.Temperature.Value : 0; - device.IsHumidity = deviceDetailDTO.IsHumidity; - device.Humidity = deviceDetailDTO.Humidity != null ? deviceDetailDTO.Humidity.Value : 0; - device.IsPressure = deviceDetailDTO.IsPressure; - device.Pressure = deviceDetailDTO.Pressure != null ? deviceDetailDTO.Pressure.Value : 0; - device.IsConsumption = deviceDetailDTO.IsConsumption; - device.Consumption = deviceDetailDTO.Consumption; - device.IsCurrentPower = deviceDetailDTO.IsCurrentPower; - device.CurrentPower = deviceDetailDTO.CurrentPower; - device.IsVoltage = deviceDetailDTO.IsVoltage; - device.Voltage = deviceDetailDTO.Voltage; - device.IsLinkQuality = deviceDetailDTO.IsLinkQuality; - device.LinkQuality = deviceDetailDTO.LinkQuality; - device.IsCO2 = deviceDetailDTO.IsCO2; - device.CO2 = deviceDetailDTO.CO2; - device.IsNoise = deviceDetailDTO.IsNoise; - device.Noise = deviceDetailDTO.Noise; + device.IsContact = deviceDetailDTO.IsContact; + device.Contact = deviceDetailDTO.Contact; + device.IsIlluminance = deviceDetailDTO.IsIlluminance; + device.Illuminance = deviceDetailDTO.Illuminance != null ? deviceDetailDTO.Illuminance.Value : 0; + device.IsBrightness = deviceDetailDTO.IsBrightness; + device.Brightness = deviceDetailDTO.Brightness; + device.IsState = deviceDetailDTO.IsState; + device.State = deviceDetailDTO.State; + device.IsColorTemp = deviceDetailDTO.IsColorTemp; + device.ColorTemp = deviceDetailDTO.ColorTemp; + device.IsColorXY = deviceDetailDTO.IsColorXY; + device.ColorX = deviceDetailDTO.ColorX; + device.ColorY = deviceDetailDTO.ColorY; + device.IsOccupation = deviceDetailDTO.IsOccupation; + device.Occupation = deviceDetailDTO.Occupation; + device.IsAlarm = deviceDetailDTO.IsAlarm; + device.Alarm = deviceDetailDTO.Alarm; + device.IsTemperature = deviceDetailDTO.IsTemperature; + device.Temperature = deviceDetailDTO.Temperature != null ? deviceDetailDTO.Temperature.Value : 0; + device.IsHumidity = deviceDetailDTO.IsHumidity; + device.Humidity = deviceDetailDTO.Humidity != null ? deviceDetailDTO.Humidity.Value : 0; + device.IsPressure = deviceDetailDTO.IsPressure; + device.Pressure = deviceDetailDTO.Pressure != null ? deviceDetailDTO.Pressure.Value : 0; + device.IsConsumption = deviceDetailDTO.IsConsumption; + device.Consumption = deviceDetailDTO.Consumption; + device.IsCurrentPower = deviceDetailDTO.IsCurrentPower; + device.CurrentPower = deviceDetailDTO.CurrentPower; + device.IsVoltage = deviceDetailDTO.IsVoltage; + device.Voltage = deviceDetailDTO.Voltage; + device.IsLinkQuality = deviceDetailDTO.IsLinkQuality; + device.LinkQuality = deviceDetailDTO.LinkQuality; + device.IsCO2 = deviceDetailDTO.IsCO2; + device.CO2 = deviceDetailDTO.CO2; + device.IsNoise = deviceDetailDTO.IsNoise; + device.Noise = deviceDetailDTO.Noise; + } if (deviceDetailDTO.SupportedOperations != null) { @@ -312,6 +318,7 @@ namespace MyCore.Services.Devices { DeviceDetailDTO deviceDetailDTO = new DeviceDetailDTO(); deviceDetailDTO.Name = zigbee2MqttDevice.friendly_name; + deviceDetailDTO.NameForAction = zigbee2MqttDevice.friendly_name; deviceDetailDTO.ServiceIdentification = zigbee2MqttDevice.ieeeAddr; deviceDetailDTO.ProviderId = provider.Id; deviceDetailDTO.ProviderName = provider.Name;