Exemple #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);
        }
Exemple #2
0
 private void RequestWasProcessedAndReturnedExpectedValue(M2XResponse response, string expectedValue = "Accept")
 {
     Assert.IsNotNull(response);
     Assert.IsFalse(response.Error);
     Assert.IsFalse(response.ServerError);
     Assert.IsNull(response.WebError);
     Assert.IsTrue(string.IsNullOrWhiteSpace(response.Raw));
     Assert.IsNotNull(response.Headers);
     Assert.IsTrue(response.Headers.Any());
     Assert.IsNotNull(response.Headers.First().Value);
     Assert.IsTrue(response.Headers.First().Value.Any());
     Assert.AreEqual(expectedValue.ToLowerInvariant(), response.Headers.First().Value.First().ToLowerInvariant());
 }
Exemple #3
0
        private static void MyoEmgDataHandler(object sender, EmgDataEventArgs e)
        { //this function tells about actual activity of patient
            //communicates with M2X and surface in State of Patient table, where are 3 types of states
            //0 - low activity, possibly sleeping 1 - moderate activity 2 - high activity, patient may need some help
            for (int i = 0; i < 8; i++)
            {
                emgList[i].Add(Math.Abs(e.EmgData.GetDataForSensor(i)));
            }
            if (emgCounter == 1000 && !taskRunning)
            {
                taskRunning = true;
                emgCounter  = 0;
                List <List <int> > emgTask        = new List <List <int> >(emgList);
                double             averageCounter = 0;
                foreach (var list in emgTask)
                {
                    averageCounter += list.Average();
                }
                if (averageCounter <= 10)
                {
                    response = patientState.UpdateValue(new StreamValue {
                        value = "0"
                    }).Result;
                }
                if (averageCounter > 10 && averageCounter <= 70)
                {
                    response = patientState.UpdateValue(new StreamValue {
                        value = "1"
                    }).Result;
                }
                if (averageCounter > 70)
                {
                    response = patientState.UpdateValue(new StreamValue {
                        value = "2"
                    }).Result;
                }
                Console.WriteLine(averageCounter);
                taskRunning = false;

                foreach (var list in emgList)
                {
                    list.Clear();
                }
            }
            emgCounter++;
        }
Exemple #4
0
 protected void Delete(M2XClass entity)
 {
     response = entity.Delete().Result;
     Assert.AreEqual(HttpStatusCode.NoContent, response.Status, response.Raw);
 }
Exemple #5
0
 private static void Myo_Accelerometer(object sender, AccelerometerDataEventArgs e)
 { //This function monitors patients movement, writes if he is moving/falling
     //Console.Clear();
     //Console.WriteLine(e.Accelerometer.X + " " + e.Accelerometer.Y + " " + e.Accelerometer.Z);
     if (!isAccelerometerSet)
     {
         previous.Add(e.Accelerometer.X);
         previous.Add(e.Accelerometer.Y);
         previous.Add(e.Accelerometer.Z);
         isAccelerometerSet = true;
     }
     else
     {
         actual.Add(e.Accelerometer.X);
         actual.Add(e.Accelerometer.Y);
         actual.Add(e.Accelerometer.Z);
         for (int i = 0; i < 3; i++)
         {
             if ((actual[i] > 0 && previous[i] > 0) || (actual[i] < 0 && previous[i] < 0))
             {
                 var delta = Math.Abs(actual[i] - previous[i]);
                 deltaList[i].Add(delta);
                 if (criticalSpeed < delta && !fallFlag)
                 {
                     Console.WriteLine("Beware, patient may have fallen!.");
                     fallFlag = true;
                     response = streamFall.UpdateValue(new StreamValue {
                         value = "fall"
                     }).Result;
                 }
             }
             else
             {
                 var delta = Math.Abs(actual[i] + previous[i]);
                 deltaList[i].Add(delta);
                 if (criticalSpeed < delta && !fallFlag)
                 {
                     Console.WriteLine("Beware, patient may have fallen!.");
                     fallFlag = true;
                     response = streamFall.UpdateValue(new StreamValue {
                         value = "fall"
                     }).Result;
                 }
             }
             // Console.WriteLine(actual[i] + " " + previous[i] + " " + deltaList[i][deltaList[i].Count - 1]);
         }
         previous.Clear();
         previous.AddRange(actual);
         actual.Clear();
         if (deltaList[0].Count == 10)
         {
             Boolean isPatientMovingFlag = false;
             foreach (var list in deltaList)
             {
                 var average = list.Average();
                 if (average > 0.02)
                 {
                     isPatientMovingFlag = true;
                 }
                 list.Clear();
             }
             if (isPatientMovingFlag)
             {
                 isPatientMoving = true;
             }
             else
             {
                 isPatientMoving = false;
             }
             Console.WriteLine("Is patient moving? " + isPatientMoving);
             sendingCounter++;
         }
         if (sendingCounter == 15)
         {
             int resultInt;
             if (isPatientMoving)
             {
                 resultInt = 1;
             }
             else
             {
                 resultInt = 0;
             }
             response = movement.UpdateValue(new StreamValue {
                 value = resultInt.ToString()
             }).Result;
             sendingCounter = 0;
         }
     }
     if (fallFlag)
     {
         fallCounter++;
     }
     if (fallCounter == 200)
     {
         fallFlag = false; fallCounter = 0;
     }
 }
        public async Task CanAccess_MasterApiKey_ListOf_CommandsSent_WithFilters()
        {
            try
            {
                using (var client = new M2XClient(_masterKey))
                {
                    foreach (var filter in new[] { "limit", "page", "dir|desc", "dir|asc", "start", "end", "name" })
                    {
                        M2XResponse result = null;
                        switch (filter)
                        {
                        case "limit":
                            result = await client.Commands(new { limit = 2 });

                            break;

                        case "page":
                            result = await client.Commands(new { page = 1 });

                            break;

                        case "dir|desc":
                            result = await client.Commands(new { dir = "desc" });

                            break;

                        case "dir|asc":
                            result = await client.Commands(new { dir = "asc" });

                            break;

                        case "start":
                            result = await client.Commands(new { start = DateTime.UtcNow.AddMinutes(-60).ToString(Constants.ISO8601_DateStartFormat) });

                            break;

                        case "end":
                            result = await client.Commands(new { end = DateTime.UtcNow.AddMinutes(-10).ToString(Constants.ISO8601_DateStartFormat) });

                            break;

                        case "name":
                            result = await client.Commands(new { name = "PHONE_HOME" });

                            break;
                        }

                        Assert.IsNotNull(result);
                        Assert.IsFalse(result.Error);
                        Assert.IsFalse(result.ServerError);
                        Assert.IsNull(result.WebError);
                        Assert.IsFalse(string.IsNullOrWhiteSpace(result.Raw));
                        ProcessCommandSearchResult(result.Raw, null);
                    }
                }
            }
            catch (Exception)
            {
                DestroyTestDevice();
                throw;
            }
        }
        public async Task CanAccess_MasterApiKey_AndSendCommand_ToSingleDevice_ThenList_CommandsSent_WithFilters()
        {
            try
            {
                var commandName = "PHONE_HOME";
                using (var client = new M2XClient(_masterKey))
                {
                    var sendCommandParms = new StringBuilder($"{{ ");
                    sendCommandParms.Append($"\"name\": \"{commandName}\"");
                    sendCommandParms.Append($", ");
                    sendCommandParms.Append($"\"data\": {{ \"server_url\": \"https://m2x.att.com\" }}");
                    sendCommandParms.Append($", ");
                    sendCommandParms.Append($"\"targets\": {{ \"devices\": [\"{_testDevice.id}\"] }}");
                    sendCommandParms.Append($" }}");

                    var result = await client.SendCommand(sendCommandParms.ToString());

                    Assert.IsNotNull(result);
                    Assert.IsFalse(result.Error);
                    Assert.IsFalse(result.ServerError);
                    Assert.IsNull(result.WebError);
                    Assert.IsFalse(string.IsNullOrWhiteSpace(result.Raw));
                    Assert.AreEqual(Constants.M2X_Response_Success_Accepted, result.Raw);
                }

                System.Threading.Thread.Sleep(1000);
                using (var client = new M2XClient(_masterKey))
                {
                    var device = client.Device(_testDevice.id);
                    foreach (var filter in new[] { "limit", "page", "dir|desc", "dir|asc", "start", "end", "name", "status|pending", "status|processed", "status|rejected" })
                    {
                        M2XResponse result = null;
                        switch (filter)
                        {
                        case "limit":
                            result = await device.Commands(new { limit = 2 });

                            break;

                        case "page":
                            result = await device.Commands(new { page = 1 });

                            break;

                        case "dir|desc":
                            result = await device.Commands(new { dir = "desc" });

                            break;

                        case "dir|asc":
                            result = await device.Commands(new { dir = "asc" });

                            break;

                        case "start":
                            result = await device.Commands(new { start = DateTime.UtcNow.AddMinutes(-60).ToString(Constants.ISO8601_DateStartFormat) });

                            break;

                        case "end":
                            result = await device.Commands(new { end = DateTime.UtcNow.AddMinutes(-10).ToString(Constants.ISO8601_DateStartFormat) });

                            break;

                        case "name":
                            result = await device.Commands(new { name = "PHONE_HOME" });

                            break;

                        case "status|pending":
                            result = await device.Commands(new { status = "pending" });

                            break;

                        case "status|processed":
                            result = await device.Commands(new { status = "processed" });

                            break;

                        case "status|rejected":
                            result = await device.Commands(new { status = "rejected" });

                            break;
                        }

                        Assert.IsNotNull(result);
                        Assert.IsFalse(result.Error);
                        Assert.IsFalse(result.ServerError);
                        Assert.IsNull(result.WebError);
                        Assert.IsFalse(string.IsNullOrWhiteSpace(result.Raw));
                        ProcessCommandSearchResult(result.Raw, null);
                    }
                }
            }
            catch (Exception ex)
            {
                DestroyTestDevice();
                throw;
            }
        }