From 63ae265446824817a1ac8bf3de96de0b0a3d7767 Mon Sep 17 00:00:00 2001 From: Thomas Fransolet Date: Wed, 24 Mar 2021 18:18:09 +0100 Subject: [PATCH] MC Raw request MQTT --- .../MyControlPanel/Database/Automation.cs | 5 +++++ MyCore/Services/Devices/ActionService.cs | 17 +++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/MyCore.Interfaces/Models/MyControlPanel/Database/Automation.cs b/MyCore.Interfaces/Models/MyControlPanel/Database/Automation.cs index e6109db..2f6731c 100644 --- a/MyCore.Interfaces/Models/MyControlPanel/Database/Automation.cs +++ b/MyCore.Interfaces/Models/MyControlPanel/Database/Automation.cs @@ -125,6 +125,11 @@ namespace MyCore.Interfaces.Models public ActionType Type { get; set; } } + public class RawRequestMQTT{ + public string topic { get; set; } + public string message { get; set; } + } + public class State { public string Name { get; set; } // example : state diff --git a/MyCore/Services/Devices/ActionService.cs b/MyCore/Services/Devices/ActionService.cs index e3a2d1a..b73a52a 100644 --- a/MyCore/Services/Devices/ActionService.cs +++ b/MyCore/Services/Devices/ActionService.cs @@ -122,9 +122,15 @@ namespace MyCore.Services.Devices // Check state of first device of a group actionDeviceToTest = _DeviceDatabaseService.GetByGroup(zigbeeGroupAction.Id).FirstOrDefault(); // TODO : Send error if no device found ! break; - case ActionType.MQTT: // Correct way ? - // TODO - //requestType = Interfaces.Models.Type.MQTT; + case ActionType.MQTT: + // take raw request and send it ! + RawRequestMQTT rawRequestMQTT = JsonConvert.DeserializeObject(action.RawRequest); + + if (rawRequestMQTT!= null) { + // SEND REQUEST + System.Console.WriteLine($"Send raw request mqtt! topic:{rawRequestMQTT.topic} - message: {rawRequestMQTT.message}"); + MqttClientService.PublishMessage(rawRequestMQTT.topic, rawRequestMQTT.message); + } break; case ActionType.HTTP: // Correct way ? // TODO @@ -134,7 +140,7 @@ namespace MyCore.Services.Devices var providerAction = _ProviderDatabaseService.GetById(userId, action.ProviderId); // Check if device exist - if (actionDeviceToTest != null) + if (actionDeviceToTest != null && providerAction != null) { switch (providerAction.Type) { @@ -216,7 +222,7 @@ namespace MyCore.Services.Devices var lamp = YeelightService.devices.Where(d => d.Hostname == actionDeviceToTest.IpAddress).FirstOrDefault(); if (lamp != null) { - System.Console.WriteLine($"yellight type !"); + System.Console.WriteLine($"Yeelight type !"); // Get device last state var dic = new List(); @@ -227,7 +233,6 @@ namespace MyCore.Services.Devices try { - switch (actionDeviceToTest.Type) { case DeviceType.Light: