| | |
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 控制延时默认反馈的线程列表
|
| | | /// </summary>
|
| | | private List<System.Threading.Thread> ListThreads = new List<System.Threading.Thread> { };
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 发送控制命令延时反馈_______________
|
| | |
|
| | | /// <summary>
|
| | | /// 发送控制命令延时反馈
|
| | | /// </summary>
|
| | | /// <param name="commonDevice">Common device.</param>
|
| | | /// <param name="action">Action.</param>
|
| | | /// <param name="delayTime">Delay time.</param>
|
| | | public void SendCommandDelayAction(CommonDevice commonDevice, Action action, int delayTime = 3)
|
| | | {
|
| | | var threadName = commonDevice.GetHashCode().ToString();
|
| | | if (ListThreads.Find((obj) => obj.Name == threadName) == null)
|
| | | {
|
| | | var thread = new System.Threading.Thread(() =>
|
| | | {
|
| | | var dateTime = DateTime.Now;
|
| | | while ((DateTime.Now - dateTime).TotalSeconds < delayTime)
|
| | | {
|
| | | System.Threading.Thread.Sleep(100);
|
| | | }
|
| | | lock (ListThreads)
|
| | | {
|
| | | ListThreads.RemoveAll((obj) => obj.Name == threadName);
|
| | | }
|
| | | action?.Invoke();
|
| | | })
|
| | | { IsBackground = true, Name = threadName };
|
| | | lock (ListThreads)
|
| | | {
|
| | | ListThreads.Add(thread);
|
| | | }
|
| | | thread.Start();
|
| | | }
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 显示控制设备是否成功的提示_________
|
| | |
| | | {
|
| | | return Language.StringByID(R.MyInternationalizationString.uOffLine);
|
| | | }
|
| | | if ((device as DimmableLight).OnOffStatus == 0 || (device as DimmableLight).Level == 0)
|
| | | if ((device as DimmableLight).OnOffStatus == 0)
|
| | | {
|
| | | return Language.StringByID(R.MyInternationalizationString.Close);
|
| | | }
|
| | | return $"{(int)((device as DimmableLight).Level * 1.0 / 254 * 100)}%";
|
| | | }
|
| | | else if (device.Type == DeviceType.ColorTemperatureLight)
|
| | | {
|
| | | //在网关没有回复之前,默认离线
|
| | | if (device.HadReadDeviceStatu == false)
|
| | | {
|
| | | return Language.StringByID(R.MyInternationalizationString.uOffLine);
|
| | | }
|
| | | if ((device as ColorTemperatureLight).OnOffStatus == 0)
|
| | | {
|
| | | return Language.StringByID(R.MyInternationalizationString.Close);
|
| | | }
|
| | | return $"{(int)((device as ColorTemperatureLight).Level * 1.0 / 254 * 100)}%";
|
| | | }
|
| | | else if (device.Type == DeviceType.WindowCoveringDevice)
|
| | | {
|
| | |
| | | return Language.StringByID(R.MyInternationalizationString.Close);
|
| | | }
|
| | | return $"{(device as Rollershade).WcdCurrentPositionLiftPercentage}%";
|
| | | }
|
| | | else if (device.Type == DeviceType.FreshAir)
|
| | | {
|
| | | //在网关没有回复之前,默认离线
|
| | | if (device.HadReadDeviceStatu == false)
|
| | | {
|
| | | return Language.StringByID(R.MyInternationalizationString.uOffLine);
|
| | | }
|
| | |
|
| | | //模式
|
| | | string wind = string.Empty;
|
| | | var freshAir = device as FreshAir;
|
| | | if (freshAir.currentFanStatus == 0)
|
| | | {
|
| | | return Language.StringByID(R.MyInternationalizationString.Close);
|
| | | }
|
| | | if (freshAir.currentFanSpeed == 1)
|
| | | {
|
| | | wind = Language.StringByID(R.MyInternationalizationString.Fan_Low);
|
| | | }
|
| | | else if (freshAir.currentFanSpeed == 2)
|
| | | {
|
| | | wind = Language.StringByID(R.MyInternationalizationString.Fan_Middle);
|
| | | }
|
| | | else if (freshAir.currentFanSpeed == 3)
|
| | | {
|
| | | wind = Language.StringByID(R.MyInternationalizationString.Fan_Height);
|
| | | }
|
| | | return $"{wind}";
|
| | | }
|
| | | else if (device.Type == DeviceType.PMSensor)
|
| | | {
|
| | | //在网关没有回复之前,默认离线
|
| | | if (device.HadReadDeviceStatu == false)
|
| | | {
|
| | | return Language.StringByID(R.MyInternationalizationString.uOffLine);
|
| | | }
|
| | | //空气质量
|
| | | string curQuality = "";
|
| | | //温度
|
| | | string temperature = string.Empty;
|
| | | //湿度
|
| | | string humidity = string.Empty;
|
| | | //PM2.5
|
| | | string pm = string.Empty;
|
| | | var pMSensor = device as PMSensor;
|
| | | if (pMSensor.currentPmData <= 35 && pMSensor.currentPmData >= 0)
|
| | | {
|
| | | curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
|
| | | }
|
| | | else if (pMSensor.currentPmData <= 75 && pMSensor.currentPmData > 35)
|
| | | {
|
| | | curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
|
| | | }
|
| | | else if (pMSensor.currentPmData <= 115 && pMSensor.currentPmData > 75)
|
| | | {
|
| | | curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
|
| | | }
|
| | | else if (pMSensor.currentPmData <= 150 && pMSensor.currentPmData > 115)
|
| | | {
|
| | | curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
|
| | | }
|
| | | else if (pMSensor.currentPmData <= 250 && pMSensor.currentPmData > 150)
|
| | | {
|
| | | curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
|
| | | }
|
| | | else if (pMSensor.currentPmData > 250)
|
| | | {
|
| | | curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
|
| | | }
|
| | | else
|
| | | {
|
| | | curQuality = "--";
|
| | | }
|
| | |
|
| | | humidity = $"{pMSensor.currentHumidity}%";
|
| | | temperature = $"{pMSensor.currentTemperature}℃";
|
| | | pm = $"{pMSensor.currentPmData}μg/m³";
|
| | | return $"{curQuality},{pm},{temperature},{humidity}";
|
| | |
|
| | | }
|
| | | else if (device.Type == DeviceType.Thermostat)
|
| | | {
|
| | |
| | | //燃气
|
| | | if (ias.iASInfo?.Alarm1 == 1)
|
| | | {
|
| | | return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
|
| | | return Language.StringByID(R.MyInternationalizationString.uGasLeakage);
|
| | | }
|
| | | return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Safe);
|
| | | return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
|
| | | }
|
| | | else if (info.ConcreteType == DeviceConcreteType.Sensor_Fire)
|
| | | {
|
| | |
| | | }
|
| | | return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
|
| | | }
|
| | | return null;
|
| | | else
|
| | | {
|
| | | //其他传感器
|
| | | if (ias.iASInfo?.Alarm1 == 1)
|
| | | {
|
| | | return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
|
| | | }
|
| | | return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
|
| | | }
|
| | | }
|
| | | else if (device.Type == DeviceType.TemperatureSensor)
|
| | | {
|