MC Add test motion + Automation WIP

This commit is contained in:
Thomas Fransolet 2021-01-18 18:29:55 +01:00
parent 8c41f067a0
commit 83483498a8
5 changed files with 83 additions and 0 deletions

View File

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace MyCore.Framework.Business
{
class ActionLogic
{
}
}

View File

@ -25,6 +25,9 @@ namespace MyCore.Interfaces.Models
[BsonElement("Conditions")] [BsonElement("Conditions")]
public List<Condition> Conditions { get; set; } public List<Condition> Conditions { get; set; }
[BsonElement("DevicesIds")]
public List<string> DevicesIds { get; set; }
[BsonElement("Actions")] [BsonElement("Actions")]
public List<Action> Actions { get; set; } public List<Action> Actions { get; set; }

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace MyCore.Interfaces.Models.Providers.Zigbee.Aqara
{
public class AqaraMotion : AqaraDevice
{
public int illuminance { get; set; }
public int illuminance_lux { get; set; }
public bool occupancy { get; set; }
}
}

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace MyCore.Interfaces.Models
{
public class Zigbee2MqttRequest
{
public string state { get; set; }
// TODO
}
}

View File

@ -1,5 +1,6 @@
using Mqtt.Client.AspNetCore.Services; using Mqtt.Client.AspNetCore.Services;
using MyCore.Interfaces.Models; using MyCore.Interfaces.Models;
using MyCore.Interfaces.Models.Providers.Zigbee.Aqara;
using MyCore.Services.MyControlPanel; using MyCore.Services.MyControlPanel;
using Newtonsoft.Json; using Newtonsoft.Json;
using System; using System;
@ -61,11 +62,15 @@ namespace MyCore.Services.Devices
i++; i++;
}*/ }*/
MqttClientMerossService.ExecuteCommand(multiprise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.ON, 1); MqttClientMerossService.ExecuteCommand(multiprise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.ON, 1);
MqttClientMerossService.ExecuteCommand(multiprise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.ON, 2);
MqttClientMerossService.ExecuteCommand(multiprise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.ON, 3);
//MqttClientMerossService.ExecuteCommand(prise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.ON, 0); //MqttClientMerossService.ExecuteCommand(prise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.ON, 0);
} }
else else
{ {
MqttClientMerossService.ExecuteCommand(multiprise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.OFF, 1); MqttClientMerossService.ExecuteCommand(multiprise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.OFF, 1);
MqttClientMerossService.ExecuteCommand(multiprise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.OFF, 2);
MqttClientMerossService.ExecuteCommand(multiprise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.OFF, 3);
//MqttClientMerossService.ExecuteCommand(prise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.OFF, 0); //MqttClientMerossService.ExecuteCommand(prise.ServiceIdentification, Method.SET, CommandMqtt.TOGGLEX, "", "", ToggleStatus.OFF, 0);
} }
} }
@ -80,6 +85,45 @@ namespace MyCore.Services.Devices
} }
//await MqttClientOnlineService.PublishMessage("Notification", "Hey magic cube 0 !"); //await MqttClientOnlineService.PublishMessage("Notification", "Hey magic cube 0 !");
} }
if (topicSplit[1].Contains("MotionWC"))
{
var aqaraSwitch = JsonConvert.DeserializeObject<AqaraMotion>(message);
if (aqaraSwitch.occupancy)
{
Zigbee2MqttRequest zigbee2MqttRequest = new Zigbee2MqttRequest() { state = "ON"};
var request = JsonConvert.SerializeObject(zigbee2MqttRequest);
MqttClientService.PublishMessage("zigbee2mqtt/LampeWC/set", request);
}
else {
Zigbee2MqttRequest zigbee2MqttRequest = new Zigbee2MqttRequest() { state = "OFF" };
var request = JsonConvert.SerializeObject(zigbee2MqttRequest);
MqttClientService.PublishMessage("zigbee2mqtt/LampeWC/set", request);
}
}
if (topicSplit[1].Contains("Motion0"))
{
var aqaraSwitch = JsonConvert.DeserializeObject<AqaraMotion>(message);
if (aqaraSwitch.occupancy)
{
Zigbee2MqttRequest zigbee2MqttRequest = new Zigbee2MqttRequest() { state = "ON" };
var request = JsonConvert.SerializeObject(zigbee2MqttRequest);
MqttClientService.PublishMessage("zigbee2mqtt/GU10Bureau0/set", request);
MqttClientService.PublishMessage("zigbee2mqtt/GU10Bureau1/set", request);
MqttClientService.PublishMessage("zigbee2mqtt/GU10Bureau2/set", request);
}
else
{
Zigbee2MqttRequest zigbee2MqttRequest = new Zigbee2MqttRequest() { state = "OFF" };
var request = JsonConvert.SerializeObject(zigbee2MqttRequest);
MqttClientService.PublishMessage("zigbee2mqtt/GU10Bureau0/set", request);
MqttClientService.PublishMessage("zigbee2mqtt/GU10Bureau1/set", request);
MqttClientService.PublishMessage("zigbee2mqtt/GU10Bureau2/set", request);
}
}
break; break;
default: default:
break; break;