Add nameForAction for zigbee + test to not erase all data on zigbee update

This commit is contained in:
Thomas Fransolet 2023-08-31 16:56:02 +02:00
parent 2ebb1dfd60
commit adb38f842b
6 changed files with 57 additions and 42 deletions

View File

@ -15,6 +15,8 @@ namespace MyCore.Interfaces.DTO
public string Name { get; set; } public string Name { get; set; }
public string NameForAction { get; set; }
public string Model { get; set; } public string Model { get; set; }
public DeviceType Type { get; set; } public DeviceType Type { get; set; }

View File

@ -25,6 +25,9 @@ namespace MyCore.Interfaces.Models
[BsonRequired] [BsonRequired]
public string Name { get; set; } public string Name { get; set; }
[BsonElement("NameForAction")]
public string NameForAction { get; set; }
[BsonElement("Description")] [BsonElement("Description")]
public string Description { get; set; } public string Description { get; set; }
@ -260,6 +263,7 @@ namespace MyCore.Interfaces.Models
Id = Id, Id = Id,
HomeId = HomeId, HomeId = HomeId,
Name = Name, Name = Name,
NameForAction = NameForAction,
Model = Model, Model = Model,
Type = Type, Type = Type,
ConnectionStatus = ConnectionStatus, ConnectionStatus = ConnectionStatus,
@ -279,6 +283,7 @@ namespace MyCore.Interfaces.Models
Id = Id, Id = Id,
HomeId = HomeId, HomeId = HomeId,
Name = Name, Name = Name,
NameForAction = NameForAction,
Model = Model, Model = Model,
Type = Type, Type = Type,
Port = Port, Port = Port,

View File

@ -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 request = "";
var buildRequest = new Dictionary<string, object>(); var buildRequest = new Dictionary<string, object>();
@ -372,12 +372,13 @@ namespace MyCore.Service.Controllers.Helpers
request = JsonConvert.SerializeObject(buildRequest); request = JsonConvert.SerializeObject(buildRequest);
var nameToSend = device.NameForAction == null ? device.Name : device.NameForAction;
// SEND REQUEST // SEND REQUEST
//var requestToSend = $"Send request ! zigbee2mqtt/{deviceNameForAction}/set/{request}"; //var requestToSend = $"Send request ! zigbee2mqtt/{deviceNameForAction}/set/{request}";
System.Console.WriteLine($"Send request ! zigbee2mqtt/{deviceNameForAction}/set/{request}"); System.Console.WriteLine($"Send request ! zigbee2mqtt/{nameToSend}/set/{request}");
MqttClientService.PublishMessage("zigbee2mqtt/" + deviceNameForAction + "/set", request);
MqttClientService.PublishMessage($"zigbee2mqtt/{nameToSend}/set", request);
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -235,7 +235,7 @@ namespace MyCore.Service.Services
case ProviderType.zigbee2mqtt: case ProviderType.zigbee2mqtt:
try try
{ {
DevicesHelper.ActionOnZigbee2Mqtt(actionDeviceToTest, action, DeviceNameForAction); DevicesHelper.ActionOnZigbee2Mqtt(actionDeviceToTest, action);
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -171,7 +171,7 @@ namespace MyCore.Service.Services
case ProviderType.zigbee2mqtt: case ProviderType.zigbee2mqtt:
try try
{ {
DevicesHelper.ActionOnZigbee2Mqtt(actionDeviceToTest, action, DeviceNameForAction); DevicesHelper.ActionOnZigbee2Mqtt(actionDeviceToTest, action);
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -87,6 +87,7 @@ namespace MyCore.Services.Devices
if (create) { if (create) {
device.Name = deviceDetailDTO.Name; device.Name = deviceDetailDTO.Name;
} }
device.NameForAction = deviceDetailDTO.NameForAction;
device.Description = deviceDetailDTO.Description; device.Description = deviceDetailDTO.Description;
device.ManufacturerName = deviceDetailDTO.ManufacturerName; device.ManufacturerName = deviceDetailDTO.ManufacturerName;
@ -131,43 +132,48 @@ namespace MyCore.Services.Devices
// Todo structure SupportedOperations // Todo structure SupportedOperations
device.SupportedOperations = deviceDetailDTO.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.IsContact = deviceDetailDTO.IsContact;
device.Contact = deviceDetailDTO.Contact; device.Contact = deviceDetailDTO.Contact;
device.IsIlluminance = deviceDetailDTO.IsIlluminance; device.IsIlluminance = deviceDetailDTO.IsIlluminance;
device.Illuminance = deviceDetailDTO.Illuminance != null ? deviceDetailDTO.Illuminance.Value : 0; device.Illuminance = deviceDetailDTO.Illuminance != null ? deviceDetailDTO.Illuminance.Value : 0;
device.IsBrightness = deviceDetailDTO.IsBrightness; device.IsBrightness = deviceDetailDTO.IsBrightness;
device.Brightness = deviceDetailDTO.Brightness; device.Brightness = deviceDetailDTO.Brightness;
device.IsState = deviceDetailDTO.IsState; device.IsState = deviceDetailDTO.IsState;
device.State = deviceDetailDTO.State; device.State = deviceDetailDTO.State;
device.IsColorTemp = deviceDetailDTO.IsColorTemp; device.IsColorTemp = deviceDetailDTO.IsColorTemp;
device.ColorTemp = deviceDetailDTO.ColorTemp; device.ColorTemp = deviceDetailDTO.ColorTemp;
device.IsColorXY = deviceDetailDTO.IsColorXY; device.IsColorXY = deviceDetailDTO.IsColorXY;
device.ColorX = deviceDetailDTO.ColorX; device.ColorX = deviceDetailDTO.ColorX;
device.ColorY = deviceDetailDTO.ColorY; device.ColorY = deviceDetailDTO.ColorY;
device.IsOccupation = deviceDetailDTO.IsOccupation; device.IsOccupation = deviceDetailDTO.IsOccupation;
device.Occupation = deviceDetailDTO.Occupation; device.Occupation = deviceDetailDTO.Occupation;
device.IsAlarm = deviceDetailDTO.IsAlarm; device.IsAlarm = deviceDetailDTO.IsAlarm;
device.Alarm = deviceDetailDTO.Alarm; device.Alarm = deviceDetailDTO.Alarm;
device.IsTemperature = deviceDetailDTO.IsTemperature; device.IsTemperature = deviceDetailDTO.IsTemperature;
device.Temperature = deviceDetailDTO.Temperature != null ? deviceDetailDTO.Temperature.Value : 0; device.Temperature = deviceDetailDTO.Temperature != null ? deviceDetailDTO.Temperature.Value : 0;
device.IsHumidity = deviceDetailDTO.IsHumidity; device.IsHumidity = deviceDetailDTO.IsHumidity;
device.Humidity = deviceDetailDTO.Humidity != null ? deviceDetailDTO.Humidity.Value : 0; device.Humidity = deviceDetailDTO.Humidity != null ? deviceDetailDTO.Humidity.Value : 0;
device.IsPressure = deviceDetailDTO.IsPressure; device.IsPressure = deviceDetailDTO.IsPressure;
device.Pressure = deviceDetailDTO.Pressure != null ? deviceDetailDTO.Pressure.Value : 0; device.Pressure = deviceDetailDTO.Pressure != null ? deviceDetailDTO.Pressure.Value : 0;
device.IsConsumption = deviceDetailDTO.IsConsumption; device.IsConsumption = deviceDetailDTO.IsConsumption;
device.Consumption = deviceDetailDTO.Consumption; device.Consumption = deviceDetailDTO.Consumption;
device.IsCurrentPower = deviceDetailDTO.IsCurrentPower; device.IsCurrentPower = deviceDetailDTO.IsCurrentPower;
device.CurrentPower = deviceDetailDTO.CurrentPower; device.CurrentPower = deviceDetailDTO.CurrentPower;
device.IsVoltage = deviceDetailDTO.IsVoltage; device.IsVoltage = deviceDetailDTO.IsVoltage;
device.Voltage = deviceDetailDTO.Voltage; device.Voltage = deviceDetailDTO.Voltage;
device.IsLinkQuality = deviceDetailDTO.IsLinkQuality; device.IsLinkQuality = deviceDetailDTO.IsLinkQuality;
device.LinkQuality = deviceDetailDTO.LinkQuality; device.LinkQuality = deviceDetailDTO.LinkQuality;
device.IsCO2 = deviceDetailDTO.IsCO2; device.IsCO2 = deviceDetailDTO.IsCO2;
device.CO2 = deviceDetailDTO.CO2; device.CO2 = deviceDetailDTO.CO2;
device.IsNoise = deviceDetailDTO.IsNoise; device.IsNoise = deviceDetailDTO.IsNoise;
device.Noise = deviceDetailDTO.Noise; device.Noise = deviceDetailDTO.Noise;
}
if (deviceDetailDTO.SupportedOperations != null) if (deviceDetailDTO.SupportedOperations != null)
{ {
@ -312,6 +318,7 @@ namespace MyCore.Services.Devices
{ {
DeviceDetailDTO deviceDetailDTO = new DeviceDetailDTO(); DeviceDetailDTO deviceDetailDTO = new DeviceDetailDTO();
deviceDetailDTO.Name = zigbee2MqttDevice.friendly_name; deviceDetailDTO.Name = zigbee2MqttDevice.friendly_name;
deviceDetailDTO.NameForAction = zigbee2MqttDevice.friendly_name;
deviceDetailDTO.ServiceIdentification = zigbee2MqttDevice.ieeeAddr; deviceDetailDTO.ServiceIdentification = zigbee2MqttDevice.ieeeAddr;
deviceDetailDTO.ProviderId = provider.Id; deviceDetailDTO.ProviderId = provider.Id;
deviceDetailDTO.ProviderName = provider.Name; deviceDetailDTO.ProviderName = provider.Name;