Beispiel #1
0
            /// <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));
        }
Beispiel #3
0
        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, "发射失败!");
                    }
                }
            }
        }
Beispiel #4
0
        /// <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;
            }
        }
Beispiel #5
0
 public void HumitureChanged(Humiture humiture)
 => Clients.Others.HumitureChanged(humiture);