/// <summary> /// 获取所有设备的状态 /// </summary> public static void GetDeviceDatas_Redis() { string devGuid = " "; byte brightness; string StrStatus; datasLamp = RedisController.Get_Datas_Lamp_Redis(devGuid); // 获取缓存的灯光状态 datasCurtain = RedisController.Get_Datas_Curtain_Redis(devGuid); //获取缓存的窗帘状态 datasAir = RedisController.Get_Datas_Air_Redis(devGuid); //获取缓存的空调状态 brightness = datasLamp.LampBrightness; if (LampStatusEnum.Off == datasLamp.LampStatus) { StrStatus = "01 00 80"; } if (LampStatusEnum.On == datasLamp.LampStatus) { StrStatus = "01 00 81"; } }
/** * * @api {Class Method} / KNX驱动的空调状态上报 * @apiName KNX air device status report * @apiGroup 驱动接口 * @apiVersion 1.0.1 * @apiDescription * * 函数接口,跟HttpRequest请求的接口调用方法不一样,需要引用DLL文件直接调用 * HDLCommon.dll、HDLApiEntity.dll 驱动接口的DLL库文件 * * 状态上报调用的函数 * * public static void KNX_Device_Status_Report_Air(DatasAir deviceStatusObj) * * 函数接口请忽略下面的URL前缀地址 * * @apiParam {DatasAir} deviceStatusObj 空调状态对象 * */ /// <summary> /// 空调,设备状态上报 /// </summary> /// <param name="deviceStatusObj">空调数据上报对象</param> public static void KNX_Device_Status_Report_Air(DatasAir deviceStatusObj) { redisReport.PublishAsync(RedisThemeType.KNX_Device_Report_Air.ToString(), JsonConvert.SerializeObject(deviceStatusObj)); }
/// <summary> /// 打印接收到的数据 /// </summary> /// <param name=""></param> /// <returns></returns> void ShowData() { try { Receive.receiveItems RciveTtem = new Receive.receiveItems(); byte[] receivemess = null; string changebuf = null; string straddress1 = null; //string straddress2 = null; string Databuff = null; string Srcaddress = null; if (Receive.receiveBuff.Count != 0) { receivemess = Receive.receiveBuff.Dequeue(); for (int i = 0; i < receivemess.Length; i++) { changebuf += receivemess[i].ToString("X2") + " "; } //straddress1 = receivemess[12].ToString("X2") +" "+ receivemess[13].ToString("X2"); //straddress2 = receivemess[13].ToString(); //int address = Convert.ToInt32(straddress1, 16) * 256 + Convert.ToInt32(straddress2, 16); //Srcaddress = receivemess[10].ToString("X2") + " " + receivemess[11].ToString("X2"); straddress1 = ExchangeDesaddr(receivemess[12], receivemess[13]); Srcaddress = "1.1." + receivemess[11].ToString(); RciveTtem.dstAddress = straddress1; RciveTtem.SrcAddress = Srcaddress; if (receivemess.Length == 17) { RciveTtem.StrMessage = ExchangeMess(receivemess[16].ToString("X2")); } else if (receivemess.Length == 18) { RciveTtem.StrMessage = ExchangeMess(receivemess[17].ToString("X2")); } else if (receivemess.Length == 19) { RciveTtem.StrMessage = ExchangeMess(receivemess[18].ToString("X2")); } //RciveTtem.StrMessage = receivemess[14].ToString("X2") +" " +receivemess[15].ToString("X2") + " " + receivemess[16].ToString("X2"); Databuff = DateTime.Now.ToShortTimeString() + " 源地址: " + RciveTtem.SrcAddress + " 目的地址:" + RciveTtem.dstAddress + " 相关信息:" + RciveTtem.StrMessage + "\n"; if (RciveTtem.StrMessage.Contains("|")) { richTextBox1.Text = richTextBox1.Text.Insert(0, Databuff); } //richTextBox1.AppendText(changebuf.ToString()); //richTextBox1.AppendText(Environment.NewLine); if (receivemess[12] == 10) { DatasLamp datasLamp = new DatasLamp(); if (receivemess[16] == 128) { datasLamp.LampStatus = LampStatusEnum.Off; datasLamp.LampBrightness = 0; } else if (receivemess[16] == 129) { datasLamp.LampStatus = LampStatusEnum.On; datasLamp.LampBrightness = 100; } myknx.LampStatusList.Add(datasLamp); } else if (receivemess[12] == 18 || receivemess[12] == 20) { DatasCurtain datasCurtain = new DatasCurtain(); if (receivemess[16] == 128 && receivemess[12] == 18) { datasCurtain.CurtainStatus = CurtainStatusEnum.Close; datasCurtain.CutainPercentage = 0; } else if (receivemess[16] == 129 && receivemess[12] == 18) { datasCurtain.CurtainStatus = CurtainStatusEnum.Open; datasCurtain.CutainPercentage = 100; } else if (receivemess[16] == 128 && receivemess[12] == 20) { datasCurtain.CurtainStatus = CurtainStatusEnum.Stop; //datasCurtain.CutainPercentage = 100; } myknx.CurtainStatusList.Add(datasCurtain); } else if (receivemess[11] == 26) { DatasAir datasAir = new DatasAir(); if (receivemess[17].ToString("X2") == "55") { datasAir.SetupSpeed = AirSpeedEnum.Low; } else if (receivemess[17].ToString("X2") == "AA") { datasAir.SetupSpeed = AirSpeedEnum.Middle; } else if (receivemess[17].ToString("X2") == "FF") { datasAir.SetupSpeed = AirSpeedEnum.High; } else if (receivemess[12] == 29 && receivemess[13] == 6) { datasAir.SetupSpeed = AirSpeedEnum.Auto; } else if (receivemess[12] == 29 && receivemess[13] == 1) { datasAir.SetupMode = AirModeEnum.Cold; } else if (receivemess[12] == 29 && receivemess[13] == 2) { datasAir.SetupMode = AirModeEnum.Hot; } else if (receivemess[12] == 29 && receivemess[13] == 4) { datasAir.SetupMode = AirModeEnum.Fan; } else if (receivemess[12] == 29 && receivemess[13] == 5) { datasAir.SetupMode = AirModeEnum.Auto; } else if (receivemess[18].ToString("X2") == "1A") { datasAir.ActualTemp = 21; } else if (receivemess[18].ToString("X2") == "4C") { datasAir.ActualTemp = 22; } else if (receivemess[18].ToString("X2") == "7E") { datasAir.ActualTemp = 23; } else if (receivemess[18].ToString("X2") == "B0") { datasAir.ActualTemp = 24; } else if (receivemess[18].ToString("X2") == "E2") { datasAir.ActualTemp = 25; } else if (receivemess[18].ToString("X2") == "14") { datasAir.ActualTemp = 26; } else if (receivemess[18].ToString("X2") == "46") { datasAir.ActualTemp = 27; } else if (receivemess[18].ToString("X2") == "78") { datasAir.ActualTemp = 28; } else if (receivemess[18].ToString("X2") == "AA") { datasAir.ActualTemp = 29; } else if (receivemess[18].ToString("X2") == "DC ") { datasAir.ActualTemp = 30; } myknx.AirStatusList.Add(datasAir); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }