Esempio n. 1
0
 public IGetResponse GetOverviewData()
 {
     Log.Trace("GetOverviewData");
     return(new GetResponse(
                GetResponse.ResponseStatus.OK,
                OverviewData.GetOverviewData()));
 }
Esempio n. 2
0
 public SensorsWorker(int delay)
 {
     readingWorker = new BackgroundWorker();
     readingWorker.WorkerSupportsCancellation = true;
     readingWorker.DoWork += ReadingWorker_DoWork;
     this.readingDelay     = delay;
     basicData             = OverviewData.GetOverviewData();
     detailData            = MeasuredData.GetMeasuredData();
 }
Esempio n. 3
0
 private void ReadFromDb()
 {
     if (dbQueryApi != null)
     {
         try
         {
             Log.Trace("ReadFromDb");
             var    data = OverviewData.GetOverviewData();
             double val  = GetQueryResult("temperature", "mean");
             if (val != double.NaN)
             {
                 data.MeanTemperature = val;
             }
             val = GetQueryResult("temperature", "min");
             if (val != double.NaN)
             {
                 data.MinTemperature = val;
             }
             val = GetQueryResult("temperature", "max");
             if (val != double.NaN)
             {
                 data.MaxTemperature = val;
             }
             val = GetQueryResult("humidity", "mean");
             if (val != double.NaN)
             {
                 data.MeanHumidity = val;
             }
             val = GetQueryResult("humidity", "min");
             if (val != double.NaN)
             {
                 data.MinHumidity = val;
             }
             val = GetQueryResult("humidity", "max");
             if (val != double.NaN)
             {
                 data.MaxHumidity = val;
             }
             val = GetQueryResult("pressure", "mean");
             if (val != double.NaN)
             {
                 data.MeanPressure = val;
             }
             val = GetQueryResult("pressure", "min");
             if (val != double.NaN)
             {
                 data.MinPressure = val;
             }
             val = GetQueryResult("pressure", "max");
             if (val != double.NaN)
             {
                 data.MaxPressure = val;
             }
         }
         catch (Exception ex)
         {
             Log.Error("Db Query error", ex);
             OnStatusChanged("DB Query Error: " + ex.Message);
         }
     }
 }
Esempio n. 4
0
 protected void OnStatusChanged(string status)
 {
     OverviewData.GetOverviewData().Status = status;
 }
Esempio n. 5
0
        private void WriteToDb()
        {
            if (dbClient != null)
            {
                try
                {
                    Log.Trace("WriteToDb");
                    var data     = OverviewData.GetOverviewData();
                    var dbConfig = WorkersManager.GetWorkersManager().Config;
                    var point    = Point.Measurement("air")
                                   .Tag("location", dbConfig.Location != null ? dbConfig.Location : "prosek")
                                   .Tag("device_id", dbConfig.DeviceId);
                    int validFields = 0;
                    if (!double.IsNaN(data.CurrentTemperature))
                    {
                        point.Field("temperature", data.CurrentTemperature);
                        ++validFields;
                    }
                    if (!double.IsNaN(data.CurrentPressure))
                    {
                        point.Field("pressure", data.CurrentPressure);
                        ++validFields;
                    }
                    if (!double.IsNaN(data.CurrentHumidity))
                    {
                        point.Field("humidity", data.CurrentHumidity);
                        ++validFields;
                    }
                    if (validFields > 0)
                    {
                        using (var dbWriteApi = dbClient.GetWriteApi())
                        {
                            dbWriteApi.EventHandler += DbWriteApi_EventHandler;
                            dbWriteApi.WritePoint(dbConfig.Bucket, dbConfig.OrgId, point);
                            dbWriteApi.Flush();
                        }

                        if (delay != originalDelay)
                        {
                            delay = originalDelay;
                            Log.Info($"Restoring delay to {delay}");
                        }
                    }
                    else
                    {
                        Log.Debug("InfluxDbWorker:WriteToDb - nothing to write, all values are invalid");
                    }
                }
                catch (Exception ex)
                {
                    Log.Error("Db Write error", ex);
                    OnStatusChanged("DB Write Error: " + ex.Message);
                    //probably temporarly net down or db error, prolong delay to not overload with exception
                    if (delay == originalDelay)
                    {
                        delay *= 5;
                        Log.Info($"Prolonging delay to {delay}");
                    }
                }
            }
        }