Esempio n. 1
0
        public bool LogErrorData(SensorAcqResult senacqreslt, string tablename = "")
        {
            ISensorData data    = senacqreslt.Data;
            var         errdata = new StringBuilder();

            errdata.AppendFormat("{0},{1}", senacqreslt.Sensor.SensorID, senacqreslt.ResponseTime);
            foreach (var d in data.RawValues)
            {
                errdata.AppendFormat(",{0:0.######}", d);
            }
            if (!string.IsNullOrEmpty(tablename))
            {
                errdata.AppendFormat(",{0}", tablename);
            }
            FileService.Write(_errorPath, errdata.ToString());
            errdata.Clear();
            errdata.AppendFormat("{0},{1},{2}", senacqreslt.Sensor.SensorID, senacqreslt.ResponseTime, senacqreslt.Sensor.FactorType);
            foreach (var d in data.ThemeValues)
            {
                errdata.AppendFormat(",{0:0.######}", d);
            }
            if (!string.IsNullOrEmpty(tablename))
            {
                errdata.AppendFormat(",{0}", tablename);
            }
            FileService.Write(_errorPath, errdata.ToString());
            return(true);
        }
Esempio n. 2
0
        private async void SendData(Guid sensorId, string name, ISensorData payload)
        {
            var bodyJson = new JObject();

            bodyJson.Add("Name", name);
            var payloadJson = JToken.FromObject(payload);

            bodyJson.Add("Payload", payloadJson);

            string body = bodyJson.ToString();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(_uri);
                var request = new HttpRequestMessage(HttpMethod.Post, $"/api/sensors/{sensorId}/value/set")
                {
                    Content = new StringContent(body, Encoding.UTF8, "application/json")
                };

                request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _apiKey);

                var response = await client.SendAsync(request);

                var responseStr = await response.Content.ReadAsStringAsync();
            }
        }
Esempio n. 3
0
 public SoilMoistureSensor(Guid id, string name, SensorStatus status, ISensorData lastData)
 {
     this.Id       = id;
     this.Name     = name;
     this.Status   = status;
     this.LastData = lastData;
 }
Esempio n. 4
0
        public int SaveDacResult(DACTaskResult result)
        {
            IList <SensorAcqResult> sresults = result.SensorResults;

            if (sresults == null || sresults.Count <= 0)
            {
                return(0);
            }
            var sqlCmds = new List <SqlCmdInfo>();

            foreach (SensorAcqResult sr in sresults)
            {
                ISensorData data = sr.Data;
                try
                {
                    // 2. 存储到对应的主题数据.
                    // 入原始数据
                    // 入主题数据表
                    if (data == null)
                    {
                        continue;
                    }
                    string themeSql = GenerateAddValueSql(sr);
                    if (!string.IsNullOrEmpty(themeSql))
                    {
                        sqlCmds.Add(new SqlCmdInfo(themeSql));
                    }
                }
                catch (Exception ex)
                {
                    Log.ErrorFormat("{0},产生SQL语句错误:" + ex.Message, sr.Sensor.SensorID);
                }
            }
            return(_helper.ExecuteSqlTran(sqlCmds));
        }
        public ISensorData GetSensorData(bool getAll)
        {
            ISensorData sensorData = this._command.GetSensorData(getAll);

            this.GetError((object)this, sensorData.SensorErrors);
            this.VerifyCommandResponse((ICauseError)sensorData);
            return(sensorData);
        }
Esempio n. 6
0
        public void Insert(ISensorData obj)
        {
            SensorDataEntity sde = new SensorDataEntity();

            sde.Time  = obj.Time;
            sde.Type  = (int)obj.Type;
            sde.Value = obj.Value;

            this.genericRepository.Insert(sde);
        }
        public SensorDataReceiver(ILogger <SensorDataReceiver> logger, ISensorData sensorData, IOptions <SensorDataOptions> options)
        {
            _logger     = logger;
            _sensorData = sensorData;
            _options    = options.Value;
            _bufferPool = ArrayPool <byte> .Create(
                maxArrayLength : SensorDataConstants.SensorDataSize,
                maxArraysPerBucket : _options.BufferPoolSize);

            _stateLock = new object();
        }
Esempio n. 8
0
        public async void Update(ISensorData obj)
        {
            SensorDataEntity sde = await this.genericRepository.GetById(obj.Id);

            if (sde == null)
            {
                throw new ArgumentException("SensorDataItem not in db, nothing to update");
            }

            this.genericRepository.Update(sde);
        }
Esempio n. 9
0
        public static void Main()
        {
            IMPU sensor = MPUSensor.GetInstance(SensorType.With6Axis);

            while (true)
            {
                ISensorData result = sensor.GetMeasurements();
                Debug.Print(result.ToString());

                Thread.Sleep(100);
            }
        }
        public void DoWork(bool getAll)
        {
            ISensorData sensorData = this._command.GetSensorData(getAll);

            this._repository.Set(sensorData);
            if (!this.HasProgramChanged(sensorData.SettingCounter))
            {
                this.RaiseGetSensorDataEvent(sensorData);
            }
            else
            {
                this.AcquireUpdatedSensorSettings();
            }
        }
Esempio n. 11
0
 public SensorDataProcessor(
     ILogger <SensorDataProcessor> logger,
     ISensorDataReceiver sensorDataReceiver,
     ISensorData sensorData,
     ISensorDataWriter writer,
     ISensorDataUtil sensorDataUtil,
     IOptions <SensorDataOptions> options)
 {
     _logger             = logger;
     _sensorDataReceiver = sensorDataReceiver;
     _sensorData         = sensorData;
     _writer             = writer;
     _sensorDataUtil     = sensorDataUtil;
     _options            = options.Value;
 }
 private void RaiseGetSensorDataEvent(ISensorData sensorData)
 {
     if (!this.EnableEvent)
     {
         return;
     }
     if (sensorData.LiveImage != null)
     {
         this.ImageAcquired((object)this, sensorData.LiveImage);
     }
     if (sensorData.ToolResult == null)
     {
         return;
     }
     this.ResultUpdated((object)this, sensorData.ToolResult);
 }
Esempio n. 13
0
        public static void Main()
        {
            IMPU sensor = MPUSensor.GetInstance(SensorType.With9Axis);

            while (true)
            {
                ISensorData result = sensor.GetMeasurements();
                Debug.Print(result.ToString());
                SensorData9Axis result9Axis = result as SensorData9Axis;
                if (result9Axis != null)
                {
                    Debug.Print("MagX:" + result9Axis.MagnometerX + ", MagY:" + result9Axis.MagnometerY + ", MagZ:" + result9Axis.MagnometerZ);
                }

                Thread.Sleep(100);
            }
        }
Esempio n. 14
0
        public bool StoreValue(Guid valueTypeId, ISensorData payload)
        {
            var value = new Value(valueTypeId, payload);

            return(_valuesRepository.Create(value));
        }
Esempio n. 15
0
 public void Set(ISensorData sensorData)
 {
     this._latestData = sensorData;
 }
Esempio n. 16
0
        public int SaveDacResult(DACTaskResult result)
        {
            IList <SensorAcqResult> sresults = result.SensorResults;

            if (sresults == null || sresults.Count <= 0)
            {
                return(0);
            }
            var sqlCmds = new List <SqlCmdInfo>();

            foreach (SensorAcqResult sr in sresults)
            {
                if (!sr.IsOK || sr.Data == null)
                {
                    continue;
                }
                ISensorData data = sr.Data;
                try
                {
                    if (data == null)
                    {
                        continue;
                    }

                    // 1. 存储到 T_DATA_ORIGINAL, Value 1/2/3/4 对应了主题中的属性值.
                    // 2. 存储到对应的主题数据.
                    // 入原始数据
                    if (sr.ErrorCode == (int)Errors.SUCCESS)
                    {
                        if (data.IsSaveDataOriginal)
                        {
                            ((BasicSensorData)data).IsSaveDataOriginal = false;
                            string rawValueSql = GenerateAddValueSql(RawDataTable, sr, GetStorageTime(result, sr));
                            if (!string.IsNullOrEmpty(rawValueSql))
                            {
                                sqlCmds.Add(new SqlCmdInfo(rawValueSql));
                            }
                        }
                        else
                        {
                            // 入主题数据表
                            if (data.ThemeValues.Any(d => d != null))
                            {
                                string themeSql = GenerateAddValueSql(sr.Sensor.FactorTypeTable, sr, GetStorageTime(result, sr));
                                if (!string.IsNullOrEmpty(themeSql))
                                {
                                    sqlCmds.Add(new SqlCmdInfo(themeSql));
                                }
                            }
                        }
                    }
                    else
                    {
                        FileService.Write(_errorPath,
                                          string.Format("Dtu[{3}-{4}] s:{5} - m:{0} - c:{1}, Error Code: {2}", sr.Sensor.ModuleNo,
                                                        sr.Sensor.ChannelNo, sr.ErrorCode, sr.Sensor.DtuID, sr.DtuCode, sr.Sensor.SensorID));
                    }
                }
                catch (Exception ex)
                {
                    Log.ErrorFormat("Dtu:{0}-{1} s:{2} - m{3} - c{4}, create SQL error:{5}", sr.Sensor.DtuID, sr.DtuCode,
                                    sr.Sensor.SensorID, sr.Sensor.ModuleNo,
                                    sr.Sensor.ChannelNo, ex.Message);
                }
            }
            return(_helper.ExecuteSqlTran(sqlCmds));
        }
Esempio n. 17
0
        /// <summary>
        /// 数据
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="data"></param>
        /// <param name="acqtime"></param>
        /// <returns></returns>
        public string GenerateAddValueSql(string tableName, SensorAcqResult senacqreslt, DateTime acqtime)
        {
            ISensorData data = senacqreslt.Data;

            double?[] values = tableName == RawDataTable?Double2NullableDouble(data.RawValues) :  data.ThemeValues.ToArray();

            if (values == null || values.Length == 0)
            {
                return(null);
            }
            TableInfo table = _tables.ContainsKey(tableName)
                ? _tables[tableName] : default(TableInfo);

            if (table == null)
            {
                string error = string.Format(" miss table {0} ;", tableName);
                try
                {
                    LogErrorData(senacqreslt);
                }
                catch (Exception ex)
                {
                    error += ex.Message;
                }
                throw new Exception(error);
            }
            string columnStr          = _tables[tableName].Colums;
            var    valueStr           = new StringBuilder();
            string tableCommonColumns = GetTableCommonColumns(tableName, senacqreslt.Sensor, acqtime);

            valueStr.Append(tableCommonColumns);
            int tableCommonColumnscount =
                tableCommonColumns.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length;
            int columscount = columnStr.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length;

            if (values.Length + tableCommonColumnscount > columscount)
            {
                string error = string.Format("values's count is out of {0}'s columns's count ",
                                             table.TableName);
                try
                {
                    LogErrorData(senacqreslt, tableName);
                }
                catch (Exception ex)
                {
                    error += ex.Message;
                }
                throw new Exception(error);
            }

            for (int i = tableCommonColumnscount; i < columscount; i++)
            {
                int index = i - tableCommonColumnscount;
                if (index >= values.Length || values[index] == null)
                {
                    valueStr.AppendFormat(",{0}", "null");
                }
                else
                {
                    valueStr.AppendFormat(",{0:0.######}", values[index].Value);
                }
            }
            string sql = string.Format(@"insert into {0} ({1}) values ({2})", table.TableName, table.Colums,
                                       valueStr);

            return(sql);
        }
Esempio n. 18
0
        /// <summary>
        /// 数据
        /// </summary>
        /// <param name="protocol"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public string GenerateAddValueSql(SensorAcqResult sr)
        {
            ISensorData data = sr.Data;

            double?[] values = MergeRawvaluesAndThemeValues(data.RawValues, data.ThemeValues.ToArray());
            if (values == null || values.Length == 0)
            {
                return(null);
            }
            TableInfo table = _tables.ContainsKey(sr.Sensor.ProtocolType)
                ? _tables[sr.Sensor.ProtocolType] : default(TableInfo);

            if (table == null)
            {
                // TODO 记录数据
                string error = string.Format(" miss protocol {0} ;", sr.Sensor.ProtocolType);
                try
                {
                    LogErrorData(sr, values);
                }
                catch (Exception ex)
                {
                    error += ex.Message;
                }
                throw new Exception(error);
            }
            string columnStr          = _tables[sr.Sensor.ProtocolType].Colums;
            var    valueStr           = new StringBuilder();
            string tableCommonColumns = GetTableCommonColumns(sr);

            valueStr.Append(tableCommonColumns);
            int tableCommonColumnscount =
                tableCommonColumns.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length;
            int columscount = columnStr.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length;

            try
            {
                for (int i = tableCommonColumnscount; i < columscount; i++)
                {
                    int index = i - tableCommonColumnscount;
                    if (index >= values.Length || values[index] == null)
                    {
                        valueStr.AppendFormat(",{0}", "null");
                    }
                    else
                    {
                        valueStr.AppendFormat(",{0:0.######}", values[index].Value);
                    }
                }
            }
            catch (Exception ex)
            {
                string error = string.Format(" {0} ;", ex.Message);
                try
                {
                    LogErrorData(sr, values, table.TableName);
                }
                catch (Exception e)
                {
                    error += e.Message;
                }
                throw new Exception(error);
            }


            string sql = string.Format(@"insert into {0} ({1}) values ({2})", table.TableName, table.Colums,
                                       valueStr);

            return(sql);
        }
Esempio n. 19
0
 public Value(Guid valueTypeId, ISensorData payload)
 {
     ValueTypeId = valueTypeId;
     DateTime    = payload.DateTime;
     Data        = payload.Data;
 }
Esempio n. 20
0
        //public IMvxCommand LoadFromConfigCommand { get; }
        #endregion

        #region Constructors
        public SensorInfoViewModel(ISensorData nSensor)//, IPiControlPublisher commandPublisher)
        {
            sensor = nSensor;
            //_commandPublisher = commandPublisher;
            //LoadFromConfigCommand = new MvxAsyncCommand(OnLoadFromConfig);
        }
Esempio n. 21
0
 public SensorControlViewModel(ISensorData nSensor, IPiControlPublisher commandPublisher)
 {
     sensor                = nSensor;
     _commandPublisher     = commandPublisher;
     LoadFromConfigCommand = new MvxAsyncCommand(OnLoadFromConfig);
 }
Esempio n. 22
0
 private void AssertThatResultItemIsValid(ISensorData item, DateTime expectedTimeStamp, float expectedValue)
 {
     Assert.That(item.TimeStamp, Is.EqualTo(expectedTimeStamp));
     Assert.That(item.Value, Is.EqualTo(expectedValue));
 }
Esempio n. 23
0
 public TiltMeDataService(IGravityData gravityData, ISensorData sensorData)
 {
     _gravityData = gravityData;
     _sensorData  = sensorData;
 }