/// <summary> /// Current telemetry message of Dht11 pin controller. /// </summary> /// <returns>Async return of data mesage with current telemetry state of Dht11 pin controller <see cref="Microsoft.Azure.Devices.Message"/>.</returns> private Message GetTelemetryMessage(Humiture humiture) { if (humiture.IsValid) { this.Humidity = humiture.Humidity.Value; this.Temperature = humiture.Temperature.Value; this.LastUpdate = DateTime.Now.ToString("YYYY-MM-DDTHH:MM:SS"); this.TotalSuccess++; return(GetMessage()); } return(null); }
public Task <Humiture> GetHumitureAsync() { var temperature = dht22.Temperature; var humidity = dht22.Humidity; if (dht22.IsLastReadSuccessful) { lastHumitureRead = new Humiture { Temperature = Math.Round(temperature.DegreesCelsius, 2), Humidity = Math.Round(humidity.Percent, 2) }; lastHumitureRead.HeatIndex = Math.Round(WeatherHelper.CalculateHeatIndex(temperature, humidity).DegreesCelsius, 2); lastHumitureRead.AbsoluteHumidity = Math.Round(WeatherHelper.CalculateAbsoluteHumidity(temperature, humidity).GramsPerCubicMeter, 2); } return(Task.FromResult(lastHumitureRead)); }
void onData(byte[] data) { STM32Core.Decoder decoder = new STM32Core.Decoder(); decoder.InitData(data); Operations?operation = decoder.GetOperation(); if (operation.HasValue) { object dt = decoder.Decode(operation.Value); if (operation == Operations.GetDHT1x) { if (dt.ToString().Contains("NotFind")) { LstInfo.Items.Insert(0, "未检测到DHT11"); return; } else if (dt.ToString().Contains("Wrong")) { LstInfo.Items.Insert(0, "读取错误"); return; } else if (dt.ToString().Contains("Miss")) { LstInfo.Items.Insert(0, "未知错误"); return; } Humiture humiture = dt as Humiture; if (tb_Humidity.Text.Length != 0 || tb_Temperature.Text.Length != 0) { LstHumiture.Items.Insert(1, DateTime.Now.ToLongTimeString() + ":温度" + tb_Temperature.Text + " 湿度" + tb_Humidity.Text); } tb_Temperature.Text = humiture.Temperature.ToString("n2") + "C"; tb_Humidity.Text = humiture.Humidity.ToString("n2") + "%"; } else if (operation == Operations.SetDigital || operation == Operations.SetPWM) { if (dt.ToString().Contains("OK")) { LstInfo.Items.Insert(0, "设置成功"); } else { LstInfo.Items.Insert(0, dt.ToString()); } } else if (operation == Operations.GetDigitalAndAnalog) { GPIOs gpios = client.Mapper.ToObject <GPIOs>(dt.ToString()); tb_IO_01.IsChecked = gpios.Digitals[0] == 0 ? false : true; tb_IO_02.IsChecked = gpios.Digitals[1] == 0 ? false : true; tb_IO_03.IsChecked = gpios.Digitals[2] == 0 ? false : true; tb_IO_04.IsChecked = gpios.Digitals[3] == 0 ? false : true; tb_IO_05.IsChecked = gpios.Digitals[4] == 0 ? false : true; tb_IO_06.IsChecked = gpios.Digitals[5] == 0 ? false : true; tb_IO_07.IsChecked = gpios.Digitals[6] == 0 ? false : true; tb_IO_08.IsChecked = gpios.Digitals[7] == 0 ? false : true; tb_A1.Text = gpios.Analogs[0].ToString(); tb_A2.Text = gpios.Analogs[1].ToString(); tb_A3.Text = gpios.Analogs[2].ToString(); tb_A4.Text = gpios.Analogs[3].ToString(); tb_A5.Text = gpios.Analogs[4].ToString(); tb_A6.Text = gpios.Analogs[5].ToString(); tb_A7.Text = gpios.Analogs[6].ToString(); } else if (operation == Operations.IRLearn) { if (dt.ToString().Contains("Learned")) { hasIRCode = true; LstIR.Items.Insert(1, "学习完成!" + " 地址码:" + dt.ToString().Substring(7, 3) + " 数据码:" + dt.ToString().Substring(10, 3)); } else if (dt.ToString().Contains("Failed")) { hasIRCode = false; LstIR.Items.Insert(1, "学习失败!"); } else { hasIRCode = false; LstIR.Items.Insert(1, dt.ToString()); } } else if (operation == Operations.IRSend) { if (dt.ToString().Contains("Sent")) { LstIR.Items.Insert(1, "发射成功!"); } else { LstIR.Items.Insert(1, "发射失败!"); } } } }
/// <summary> /// 数据处理 /// </summary> /// <param name="str"></param> /// <param name="output"></param> private void PrintRecvMssg(string str) { timer1.Enabled = false; int res = 0; try { decimal temperature = 0, humidity = 0; string[] content = str.Split(' '); if (content.Length == 0 || content.Length < 13) { return; } if (content[7] == "03") { temperaturePre = content[9] == "00" ? "正常" : "异常"; humidityPre = content[10] == "00" ? "正常" : "异常"; onoffPre = content[11] + content[12] == "0000" ? "正常" : "异常"; } else if (content[7] == "04") { if (content[9] == "80") //负数 最小 -20 { temperature = Convert.ToDecimal(Int32.Parse(content[10], System.Globalization.NumberStyles.HexNumber)) / -10m; } else //最大 80 { temperature = Convert.ToDecimal(Int32.Parse((content[9] + content[10]), System.Globalization.NumberStyles.HexNumber)) / 10m; } humidity = Convert.ToDecimal(Int32.Parse((content[11] + content[12]), System.Globalization.NumberStyles.HexNumber)) / 10m; CommonDAO.GetInstance().SetSignalDataValue(this.FacilityNumber, "当前温度", temperature.ToString()); CommonDAO.GetInstance().SetSignalDataValue(this.FacilityNumber, "当前湿度", humidity.ToString()); if (DateTime.Now.Minute == 0) { res += Dbers.GetInstance().SelfDber.Insert <TemperatureInfo>( new TemperatureInfo { FacilityNumber = this.FacilityNumber, Temperature = temperature, Humidity = humidity, TemperaturePre = temperaturePre, HumidityPre = humidityPre, OnOffPre = onoffPre, IsUpload = "0", IsUse = "0" } ); } DateTime time = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + CommonDAO.GetInstance().GetCommonAppletConfigString("温湿度仪写入时间")); if (DateTime.Now > time) { Humiture hum = Dbers.GetInstance().SelfDber.Entity <Humiture>("where RecordDate=:RecordDate order by CreateDate desc", new { RecordDate = time }); if (hum == null) { res += Dbers.GetInstance().SelfDber.Insert <Humiture>( new Humiture { Equipment = this.FacilityNumber, Temperature = temperature, Humidity = humidity, RecordDate = time, DataFlag = 1, } ); } } if (this.OutPut != null) { OutPut(string.Format("成功读取{0}数据 温度:{1} 湿度:{2} 温度预警:{3} 湿度预警:{4} 开关预警:{5}", this.FacilityNumber, temperature, humidity, temperaturePre, humidityPre, onoffPre), eOutputType.Normal); } } } catch (Exception ex) { if (this.OutPut != null) { OutPut(string.Format("解析数据失败,原因:{0}", ex.ToString()), eOutputType.Error); } } finally { timer1.Enabled = true; } }
public void HumitureChanged(Humiture humiture) => Clients.Others.HumitureChanged(humiture);