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); }
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()); }
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++; }
protected void Delete(M2XClass entity) { response = entity.Delete().Result; Assert.AreEqual(HttpStatusCode.NoContent, response.Status, response.Raw); }
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; } }