Example #1
0
        public void Execute(IApiTransport transport)
        {
            if (transport == null)
            {
                throw new ArgumentNullException("transport");
            }

            ApiCallCallback callback = delegate(string response, int code)
            {
                TResponse result;
                Error     error;

                ResultContainer <TResponse> .HandleResults(response, code, out result, out error);

                if (error != null && _errorCallback != null)
                {
                    _errorCallback(error);
                    return;
                }

                if (_resultCallback != null)
                {
                    _resultCallback(result, Params);
                }
            };

            transport.MakeCall(GetMethod(), GetPath(), GetBodyString(), GetHeaders(), callback);
        }
Example #2
0
        /// <summary>
        /// 上传控制指令
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <param name="facilitySerialnum"></param>
        /// <returns></returns>
        public dynamic UploadControlResult(AwEntity entity, IApiTransport transport, ControlResult controlResult)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            //if (controlResult.FacilityCode.IsNullOrWhiteSpace()) throw new ArgumentNullException("facilitySerialnum");
            Guard(entity);

            entity.Description = "上传控制指令";
            entity.DataBlockObject.DataContentRequest.ControlDataBlock = new ControlDataBlock()
            {
                ControlResults = new[]
                {
                    new ControlResult()
                    {
                        Serialnum = controlResult.Serialnum,
                        Result    = controlResult.Result,
                        Time      = controlResult.Time
                    }
                }.ToList()
            };

            var response = transport.Process(entity);

            //if (response.Success == ErrorType.NoError)
            //{
            //    if (response.Data != null && response.Data != null)
            //        return response.Data;
            //}
            //return null;

            return(response.Success == ErrorType.NoError);
        }
Example #3
0
        public async Task ReAuthorizeAsync(IApiTransport transport, OnehubCredentials credentials)
        {
            var onehubAuthToken = await _transport.RequestAuthToken(credentials);

            await _tokenStore.StoreTokenAsync(credentials, onehubAuthToken);

            transport.ApplyAuthentication(onehubAuthToken);
        }
Example #4
0
 public void ApplyCustomProtocol(T apiSettings, IApiTransport apiTransport)
 {
     if (ApiTransport != null)
     {
         ApiTransport.Dispose();
     }
     ApiSettings  = apiSettings;
     ApiTransport = apiTransport;
     ApiTransport.Initialize(apiSettings);
 }
Example #5
0
        /// <summary>
        /// 删除设备
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <returns></returns>
        public bool DeleteDevice(AwEntity entity, IApiTransport transport)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            Guard(entity);

            throw new NotImplementedException("DeleteDevice");
        }
Example #6
0
        public Default()
        {
            Name         = "农业气象物联网数据同步插件";
            EnableDelete = true;

            _farmApi     = new FarmApi();
            _facilityApi = new FacilityApi();
            _deviceApi   = new DeviceApi();

            _transport = ApiTransportHelper.GetTransport();
            SyncAll();
        }
Example #7
0
        public ControlCollectWork(IApiTransport transport)
        {
            _transport  = transport;
            DisplayName = "控制设备状态检测组件";
            Sort        = 2;

            if (Setting.Current.CollectEnable)
            {
                JobInterval = Setting.Current.ControlCollectInterval;
            }
            else
            {
                JobInterval = -1; //禁用此组件
            }
        }
Example #8
0
        public bool UploadFarmStatus(AwEntity entity, IApiTransport transport, FarmStatus fs)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            Guard(entity);

            entity.Description = "上传基地运行记录";
            entity.DataBlockObject.DataContentRequest.RuntimeDataBlock = new RuntimeDataBlock()
            {
                UploadFarmStatus = fs
            };

            var response = transport.Process(entity);

            return(response.Success == ErrorType.NoError);
        }
Example #9
0
        /// <summary>
        /// 获取基地下所有设施
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <returns></returns>
        public IEnumerable <FacilityModel> GetFacilities(AwEntity entity, IApiTransport transport)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            Guard(entity);

            //entity.Description = "获取所有设施类型";
            entity.Description = "获取所有设施";
            entity.DataBlockObject.DataContentRequest.QueryDataBlock = new QueryDataBlock()
            {
                FarmCode = new QueryFacilitys()
                {
                    Farm = entity.DataBlockObject.Source.FarmCode
                }
            };

            var response = transport.Process(entity);

            if (response.Success != ErrorType.NoError)
            {
                return(new List <FacilityModel>());
            }
            if (response.Data == null || response.Data.QueryFacilitys == null)
            {
                return(new List <FacilityModel>());
            }
            try
            {
                string str = response.Data.QueryFacilitys.ToString();
                var    ie  =
                    ObjectContainer.Current.Resolve <FormatterBase>(DataProtocalType.Json.ToString())
                    .Deserialize <IEnumerable <FacilityModel> >(str);
                return(ie);
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
            }
            return(new List <FacilityModel>());
        }
Example #10
0
        /// <summary>
        /// 获取控制指令
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <param name="facilitySerialnum"></param>
        /// <returns></returns>
        public IEnumerable <ControlCmd> GetControlCommand(AwEntity entity, IApiTransport transport,
                                                          string facilitySerialnum)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            if (facilitySerialnum.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException(nameof(facilitySerialnum));
            }
            Guard(entity);

            entity.Description = "获取控制设备指令";
            entity.DataBlockObject.DataContentRequest.ControlDataBlock = new ControlDataBlock()
            {
                ControlQueries = new[]
                {
                    new ControlQuery()
                    {
                        FacilityCode = facilitySerialnum,
                        Time         = DateTime.Now
                    }
                }.ToList()
            };
            ; //使用ControlData基础数据块

            var response = transport.Process(entity);

            if (response.Success == ErrorType.NoError && response.Data != null)
            {
                string str = response.Data.ToString();
                var    cmd =
                    ObjectContainer.Current.Resolve <FormatterBase>(DataProtocalType.Json.ToString())
                    .Deserialize <IEnumerable <ControlCmd> >(str);
                return(cmd);
            }
            else
            {
                return(Enumerable.Empty <ControlCmd>());
            }
        }
Example #11
0
        /// <summary>
        /// 添加设施信息
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <param name="addData"></param>
        /// <returns></returns>
        public bool AddFacility(AwEntity entity, IApiTransport transport, FacilityModel addData)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            if (addData == null)
            {
                throw new ArgumentNullException(nameof(addData));
            }
            Guard(entity);
            entity.Description = "添加设施信息";
            entity.DataBlockObject.DataContentRequest.ManageDataBlock = new ManageDataBlock()
            {
                FacilityAdd = addData
            };

            var response = transport.Process(entity);

            return(response.Success == ErrorType.NoError);
        }
Example #12
0
        /// <summary>
        /// 查询设备(采集、控制)信息
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <param name="deviceCode"></param>
        /// <returns></returns>
        public XResponseMessage QueryDevice(AwEntity entity, IApiTransport transport, string deviceCode)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            if (deviceCode == null)
            {
                throw new ArgumentNullException(nameof(deviceCode));
            }
            Guard(entity);

            entity.Description = "查询设备信息";
            entity.DataBlockObject.DataContentRequest.QueryDataBlock = new QueryDataBlock()
            {
                DeviceCode = deviceCode
            };

            var response = transport.Process(entity);

            return(response);
        }
Example #13
0
        /// <summary>
        /// 添加设备(多媒体设备)信息
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <param name="addDevice"></param>
        /// <returns></returns>
        public bool AddMedia(AwEntity entity, IApiTransport transport, MediaData addDevice)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            if (addDevice == null)
            {
                throw new ArgumentNullException(nameof(addDevice));
            }
            Guard(entity);

            entity.Description = "添加多媒体设备信息";
            entity.DataBlockObject.DataContentRequest.ManageDataBlock = new ManageDataBlock()
            {
                MediaAdd = addDevice
            };

            var response = transport.Process(entity);

            return(response.Success == ErrorType.NoError);
        }
Example #14
0
        /// <summary>
        /// 更新设备(采集、控制)信息
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <param name="updateDevice"></param>
        /// <returns></returns>
        public bool UpdateDevice(AwEntity entity, IApiTransport transport, DeviceModel updateDevice)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            if (updateDevice == null)
            {
                throw new ArgumentNullException(nameof(updateDevice));
            }
            Guard(entity);

            entity.Description = "更新设备信息";
            entity.DataBlockObject.DataContentRequest.ManageDataBlock = new ManageDataBlock()
            {
                DeviceUpdate = updateDevice
            };

            var response = transport.Process(entity);

            return(response.Success == ErrorType.NoError);
        }
Example #15
0
        //public bool UploadDeviceData(AwEntity entity, IApiTransport transport, List<DeviceModel> devices)
        //{
        //    if (transport == null) throw new ArgumentNullException("transport");
        //    Guard(entity);
        //    if (devices == null || !devices.Any()) return false;

        //    entity.Description = "上传设备数据";
        //    var sds = devices.Select(dev => new SensorData
        //    {
        //        //FacilityCode = dev.FacilitySerialnum,
        //        DeviceCode = dev.Serialnum,
        //        //DeviceType = dev.DeviceTypeSerialnum,
        //        Value = dev.ProcessedValue,
        //        ShowValue = dev.ShowValue,
        //        //Unit = dev.Unit,
        //        Time = dev.UpdateTime
        //    });
        //    entity.DataBlockObject.DataContentRequest.CollectDataBlock = new CollectDataBlock
        //    {
        //        SensorDatas = sds.ToList()
        //    };

        //    var response = transport.Process(entity);
        //    return response.Success == ErrorType.NoError;
        //}

        /// <summary>
        /// 上传采集、控制、摄像机设备数据
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <param name="collectData"></param>
        /// <returns></returns>
        public bool UploadDeviceData(AwEntity entity, IApiTransport transport, CollectDataBlock collectData)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            if (collectData == null)
            {
                throw new ArgumentNullException(nameof(collectData));
            }
            Guard(entity);

            entity.Description = "上传设备数据";
            entity.DataBlockObject.DataContentRequest.CollectDataBlock = new CollectDataBlock()
            {
                SensorDatas = collectData.SensorDatas,
                MediaDatas  = collectData.MediaDatas
            };
            var response = transport.Process(entity);

            return(response.Success == ErrorType.NoError);
        }
Example #16
0
        /// <summary>
        /// 获取所有设施类型
        /// </summary>
        /// <param name="entity"></param>
        ///
        /// <param name="transport"></param>
        /// <returns></returns>
        /// <summary>
        /// 获取设施下所有设备
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="transport"></param>
        /// <param name="facilitySerialnum"></param>
        /// <returns></returns>
        public dynamic GetFacilityDevices(AwEntity entity, IApiTransport transport, string facilitySerialnum)
        {
            if (transport == null)
            {
                throw new ArgumentNullException(nameof(transport));
            }
            if (facilitySerialnum.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException(nameof(facilitySerialnum));
            }
            Guard(entity);

            entity.Description = "获取设施下所有设备";
            entity.DataBlockObject.DataContentRequest.QueryDataBlock = new QueryDataBlock()
            {
                Facility = new QueryFacilityDevices()
                {
                    Facility = facilitySerialnum
                }
            };
            var sw = new Stopwatch();

            sw.Start();
            var response = transport.Process(entity);

            sw.Stop();
            var time = sw.ElapsedMilliseconds;

            if (response.Success != ErrorType.NoError)
            {
                return(null);
            }
            if (response.Data != null && response.Data.QueryFacilityDevices != null)
            {
                return(response.Data.QueryFacilityDevices);
            }
            return(null);
        }
Example #17
0
 public override bool Start()
 {
     _transport = ApiTransportHelper.GetTransport();
     return(base.Start());
 }
Example #18
0
 public OnehubClient(IOnehubAuthorization authorization, IApiTransport transport, OnehubCredentials credentials)
 {
     _authorization = authorization ?? throw new ArgumentNullException(nameof(authorization));
     _transport     = transport ?? throw new ArgumentNullException(nameof(transport));
     _credentials   = credentials ?? throw new ArgumentNullException(nameof(credentials));
 }