Пример #1
0
        public String getData()
        {
            stream = device.Stream("hasFallen");
            string a = "";

            response = stream.Values(new ATTM2X.Classes.StreamValuesFilter {
                start = M2XClient.DateTimeToString(DateTime.UtcNow.AddMinutes(-3))
            }, M2XStreamValuesFormat.Json).Result;
            var data = response.Json <StreamValues>();

            if (DateTime.Compare(limit, Convert.ToDateTime(data.end)) < 0)
            {
                if (data.values.Length != 0)
                {
                    TimeSpan span = (Convert.ToDateTime(data.values[0].timestamp) - lastFall);
                    if (span.Seconds > 30)
                    {
                        a = data.values[0].value;
                        if (a == "fall")
                        {
                            lastFall = Convert.ToDateTime(data.values[0].timestamp);
                        }
                        System.Console.WriteLine("FALLLL---------------------------------/////////");
                    }
                }
            }
            else
            {
                a = "";
            }

            limit = Convert.ToDateTime(data.end);

            return(a);
        }
Пример #2
0
        public void DeviceAPITest()
        {
            // device

            response = m2x.DeviceTags().Result;
            Assert.IsNotNull(m2x.LastResponse);
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            Assert.IsTrue(response.Success);
            Assert.IsFalse(response.Error);
            Assert.IsNotNull(response.Raw);

            response = m2x.DeviceCatalog(new DeviceListParams {
                page = 1, limit = 10, sort = M2XDeviceSortOrder.Name, dir = M2XSortDirection.Asc
            }).Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            var deviceList = response.Json <DeviceList>();

            Assert.IsNotNull(deviceList.devices);
            Assert.IsTrue(deviceList.devices.Length > 0);

            DeviceDetails deviceDetails = deviceList.devices.FirstOrDefault(d => d.location != null && d.location.latitude.HasValue && d.location.longitude.HasValue);

            Assert.IsNotNull(deviceDetails);
            response = m2x.DeviceCatalogSearch(null, new DeviceSearchBodyParamsBase
            {
                location = new LocationFilter
                {
                    within_circle = new WithinCircleFilter
                    {
                        center = new LocationPointParams
                        {
                            latitude  = deviceDetails.location.latitude.Value,
                            longitude = deviceDetails.location.longitude.Value,
                        },
                        radius = new RadiusParams {
                            km = 10
                        },
                    },
                },
            }).Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            deviceList = response.Json <DeviceList>();
            Assert.IsNotNull(deviceList.devices);
            // TODO: Assert.IsTrue(deviceList.devices.Length > 0);

            response = m2x.CreateDevice(new DeviceParams
            {
                name       = "TestDevice-" + this.TestId,
                visibility = M2XVisibility.Private,
            }).Result;
            Assert.AreEqual(HttpStatusCode.Created, response.Status, response.Raw);
            deviceDetails = response.Json <DeviceDetails>();
            Assert.IsNotNull(deviceDetails.id);
            this.device = m2x.Device(deviceDetails.id);
            Assert.AreEqual(M2XVisibility.Private, deviceDetails.visibility);

            Thread.Sleep(1000);

            response = device.Details().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            deviceDetails = response.Json <DeviceDetails>();
            Assert.AreEqual(M2XStatus.Enabled, deviceDetails.status);

            response = device.Update(new DeviceParams
            {
                name        = "TestDevice-" + this.TestId,
                visibility  = M2XVisibility.Private,
                description = "test",
            }).Result;
            Assert.AreEqual(HttpStatusCode.NoContent, response.Status, response.Raw);
            response = device.Details().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            deviceDetails = response.Json <DeviceDetails>();
            Assert.AreEqual("test", deviceDetails.description);

            response = device.UpdateLocation(new LocationParams
            {
                name      = "Test Location",
                latitude  = 12,
                longitude = -34,
            }).Result;
            Assert.AreEqual(HttpStatusCode.Accepted, response.Status, response.Raw);

            Thread.Sleep(2000);

            response = device.Location().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            var location = response.Json <LocationDetails>();

            Assert.AreEqual("Test Location", location.name);

            response = m2x.Devices(new { visibility = M2XVisibility.Private }).Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            deviceList = response.Json <DeviceList>();
            Assert.IsNotNull(deviceList.devices);
            Assert.IsTrue(deviceList.devices.Length > 0);

            response = m2x.SearchDevices(new DeviceSearchParams {
                visibility = M2XVisibility.Private
            }, new DeviceSearchBodyParamsBase
            {
                location = new LocationFilter
                {
                    within_circle = new WithinCircleFilter
                    {
                        center = new LocationPointParams
                        {
                            latitude  = location.latitude.Value,
                            longitude = location.longitude.Value,
                        },
                        radius = new RadiusParams {
                            km = 10
                        },
                    },
                },
            }).Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            deviceList = response.Json <DeviceList>();
            Assert.IsNotNull(deviceList.devices);
            Assert.IsTrue(deviceList.devices.Length > 0);

            response = device.Log().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            var requestList = response.Json <RequestList>();

            Assert.IsNotNull(requestList.requests);
            Assert.IsTrue(requestList.requests.Length > 0);

            // stream

            this.stream = device.Stream("testdevicestream");
            response    = stream.Update(new StreamParams
            {
                type = M2XStreamType.Numeric,
                unit = new StreamUnit {
                    label = "points", symbol = "pt"
                },
            }).Result;
            Assert.AreEqual(HttpStatusCode.Created, response.Status, response.Raw);

            Thread.Sleep(1000);

            response = device.Streams().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            var streamList = response.Json <StreamList>();

            Assert.IsNotNull(streamList.streams);
            Assert.AreEqual(1, streamList.streams.Length);
            Assert.AreEqual(stream.StreamName, streamList.streams[0].name);

            response = stream.UpdateValue(new StreamValue {
                value = "10"
            }).Result;
            Assert.AreEqual(HttpStatusCode.Accepted, response.Status, response.Raw);

            Thread.Sleep(1000);

            response = stream.Details().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            var streamDetails = response.Json <StreamDetails>();

            Assert.AreEqual("10", streamDetails.value);

            response = stream.Values(new StreamValuesFilter {
                start = M2XClient.DateTimeToString(this.UtcNow.AddHours(-1))
            }, M2XStreamValuesFormat.Json).Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            var streamValues = response.Json <StreamValues>();

            Assert.IsNotNull(streamValues.values);
            Assert.AreEqual(1, streamValues.values.Length);

            response = stream.UpdateValue(new StreamValue {
                value = "20"
            }).Result;
            Assert.AreEqual(HttpStatusCode.Accepted, response.Status, response.Raw);

            Thread.Sleep(1500);

            response = stream.Sampling(new StreamSamplingParams {
                type = M2XSamplingType.Sum, interval = 100
            }).Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            streamValues = response.Json <StreamValues>();
            Assert.IsNotNull(streamValues.values);
            Assert.AreEqual(1, streamValues.values.Length);
            Assert.AreEqual("30.0", streamValues.values[0].value);

            response = stream.Stats().Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            var streamStats = response.Json <StreamStatsInfo>();

            Assert.IsNotNull(streamStats.stats);
            Assert.AreEqual(2, streamStats.stats.count);
            Assert.AreEqual(15.0, streamStats.stats.avg);

            string from = M2XClient.DateTimeToString(this.UtcNow.AddMinutes(-2));
            string end  = M2XClient.DateTimeToString(this.UtcNow.AddMinutes(-1));

            response = stream.PostValues(new StreamValues
            {
                values = new StreamValue[]
                {
                    new StreamValue {
                        timestamp = from, value = "1",
                    },
                    new StreamValue {
                        timestamp = end, value = "2",
                    },
                }
            }).Result;
            Assert.AreEqual(HttpStatusCode.Accepted, response.Status, response.Raw);

            response = stream.DeleteValues(new DeleteValuesParams {
                from = from, end = end
            }).Result;
            Assert.AreEqual(HttpStatusCode.NoContent, response.Status, response.Raw);

            // values

            response = device.PostUpdate(new TestDeviceValue
            {
                timestamp = M2XClient.DateTimeToString(this.UtcNow.AddMinutes(-3)),
                values    = new TestDeviceStreamValue {
                    testdevicestream = 3
                },
            }).Result;
            Assert.AreEqual(HttpStatusCode.Accepted, response.Status, response.Raw);

            response = device.PostUpdates(new TestDeviceValues
            {
                values = new TestDeviceStreamValues
                {
                    testdevicestream = new StreamValue[]
                    {
                        new StreamValue {
                            timestamp = from, value = "1",
                        },
                        new StreamValue {
                            timestamp = end, value = "2",
                        },
                    },
                },
            }).Result;
            Assert.AreEqual(HttpStatusCode.Accepted, response.Status, response.Raw);

            Thread.Sleep(1000);

            response = device.Values(new DeviceValuesFilter {
                streams = "testdevicestream"
            }).Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            var values = response.Json <DeviceValueList <TestDeviceValue> >();

            Assert.IsNotNull(values);
            Assert.IsNotNull(values.values);
            Assert.IsTrue(values.values.Length >= 3);
            int count = values.values.Length;

            response = device.SearchValues(new DeviceValuesSearchParams <TestDeviceConditions>
            {
                start      = values.values.Min(v => v.timestamp),
                end        = values.values.Max(v => v.timestamp),
                streams    = new string[] { "testdevicestream" },
                conditions = new TestDeviceConditions {
                    testdevicestream = new ValueCondition {
                        gt = 1
                    }
                },
            }).Result;
            Assert.AreEqual(HttpStatusCode.OK, response.Status, response.Raw);
            values = response.Json <DeviceValueList <TestDeviceValue> >();
            Assert.IsNotNull(values);
            Assert.IsNotNull(values.values);
            Assert.IsTrue(values.values.Length > 0);
            Assert.IsTrue(values.values.Length < count);
        }