Esempio n. 1
0
        public HvacListener(ILogger <HvacListener> logger, IConfiguration configuration, HvacHelper helper)
        {
            _logger = logger;
            _config = configuration;

            var hostip = _config.GetValue <string>("ipGateway:Gateway");
            var port   = _config.GetValue <int>("ipGateway:portAC");

            ipAddress = IPAddress.Parse(hostip);
            remoteEP  = new IPEndPoint(ipAddress, port);

            _helper = helper;
            _helper.SetListener(this);
        }
Esempio n. 2
0
 public CoolSystemController(ILogger <CoolSystemController> logger, HvacHelper helper)
 {
     _logger = logger;
     _helper = helper;
 }
Esempio n. 3
0
        public MqttHelper(CurtainHelper curtainHelper, HvacHelper hvacHelper, IConfiguration configuration, LightHelper lightHelper)
        {
            _config        = configuration;
            _logger        = LogManager.GetCurrentClassLogger();
            _curtainHelper = curtainHelper;
            _hvacHelper    = hvacHelper;
            _lightHelper   = lightHelper;
            _hvacHelper.SetMqttListener(this);
            _curtainHelper.SetMqttListener(this);
            _lightHelper.SetMqttListener(this);
            //_lightHelper.SetCurtainHelper(_curtainHelper);

            var mqtthost = _config.GetValue <string>("mqttBroken:Hostip");
            var port     = _config.GetValue <int>("mqttBroken:port");

            _logger.Info("Connect to MQTT Broken:{0}:{1}", mqtthost, port);

            options = new MqttClientOptionsBuilder()
                      .WithClientId(Guid.NewGuid().ToString())
                      .WithTcpServer(mqtthost, port)
                      .Build();

            MqttFactory factory = new MqttFactory();

            _mqttClient = factory.CreateMqttClient() as MqttClient;

            _mqttClient.UseApplicationMessageReceivedHandler(e =>
            {
                var sVal = string.Empty;
                sVal     = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                _logger.Info("### 数据接收 ###");
                _logger.Info($"+ Topic = {e.ApplicationMessage.Topic}");
                _logger.Info($"+ Payload = {sVal}");
                _logger.Info($"+ QoS = {e.ApplicationMessage.QualityOfServiceLevel}");
                _logger.Info($"+ Retain = {e.ApplicationMessage.Retain}");
                _logger.Info("");

                /*   窗帘  */
                if (e.ApplicationMessage.Topic == "Home/Curtain/Set")
                {
                    var obj = JsonConvert.DeserializeObject <CurtainStateObject>(sVal);
                    Task.Run(async() => { await _curtainHelper.SetCurtain(obj.Id, obj.Status); });
                }
                else if (e.ApplicationMessage.Topic == "Home/Curtain/Command")
                {
                    var obj = JsonConvert.DeserializeObject <CurtainStateObject>(sVal);
                    if (obj.Command == "open")
                    {
                        Task.Run(async() => { await _curtainHelper.Open(obj.Id); });
                    }
                    else if (obj.Command == "close")
                    {
                        Task.Run(async() => { await _curtainHelper.Close(obj.Id); });
                    }
                    else if (obj.Command == "stop")
                    {
                        var task1 = Task.Run(async() =>
                        {
                            await _curtainHelper.Stop(obj.Id);
                            await Task.Delay(100);
                            await _curtainHelper.GetCurtainStatus(obj.Id);
                        });
                    }
                }
                /*   空调  */
                else if (e.ApplicationMessage.Topic == "Home/Mitsubishi/Command")
                {
                    var obj = JsonConvert.DeserializeObject <HvacStateObject>(sVal);
                    Task.Run(async() => { await _hvacHelper.UpdateStateObject(obj); });
                }

                else if (e.ApplicationMessage.Topic == "Home/LightScene/Livingroom")
                {
                    int i = (int)float.Parse(sVal);
                    Task.Run(async() => { await _lightHelper.SceneLivingRoomSet((SceneState)i); });
                }
                else if (e.ApplicationMessage.Topic == "Home/LightScene/Bedroom")
                {
                    int i = (int)float.Parse(sVal);
                    Task.Run(async() => { await _lightHelper.SceneBedRoomSet((SceneState)i); });
                }
                else if (e.ApplicationMessage.Topic == "Home/LightScene/Guestroom")
                {
                    int i = (int)float.Parse(sVal);
                    Task.Run(async() => { await _lightHelper.SceneGuestRoomSet((SceneState)i); });
                }
                else if (e.ApplicationMessage.Topic == "Home/LightScene/Workroom")
                {
                    int i = (int)float.Parse(sVal);
                    Task.Run(async() => { await _lightHelper.SceneWorkRoomSet((SceneState)i); });
                }
                else if (e.ApplicationMessage.Topic == "Home/LightScene/Dinner")
                {
                    int i = (int)float.Parse(sVal);
                    Task.Run(async() => { await _lightHelper.SceneDinnerRoomSet((SceneState)i); });
                }
                else if (e.ApplicationMessage.Topic == "Home/Mode")
                {
                    int i = int.Parse(sVal);
                    _lightHelper.CurrentStateMode = (StateMode)i;
                    if (i == 0)
                    {
                        Task.Run(async() => { await _lightHelper.HomeMode(); });
                    }
                    else if (i == 1)
                    {
                        Task.Run(async() => { await _lightHelper.OutMode(); });
                    }
                    else if (i == 2)
                    {
                        Task.Run(async() => { await _lightHelper.ReadMode(); });
                    }
                }
                else if (e.ApplicationMessage.Topic == "Home/Sensor/Motion/1")
                {
                    if (sVal == "ON")
                    {
                        Task.Run(async() => { await _lightHelper.OpenWindowLight(1); });
                    }
                    else
                    {
                        Task.Run(async() => { await _lightHelper.CloseWindowLight(1); });
                    }
                }
                else if (e.ApplicationMessage.Topic == "Home/Sensor/Motion/2")
                {
                    if (sVal == "ON")
                    {
                        Task.Run(async() => { await _lightHelper.OpenWindowLight(2); });
                    }
                    else
                    {
                        Task.Run(async() => { await _lightHelper.CloseWindowLight(2); });
                    }
                }
            });

            _mqttClient.UseDisconnectedHandler(async e => {
                await _mqttClient.ReconnectAsync();
                SetupSubscribe();
            });
        }
Esempio n. 4
0
 public SmartService(ILogger <SmartService> logger, LightHelper lightHelper, HvacHelper hvacHelper)
 {
     _logger      = logger;
     _lightHelper = lightHelper;
     _hvacHelper  = hvacHelper;
 }