Exemple #1
0
        private void computeStatus(IList <DataItem> list)
        {
            int freq = 20;

            for (int i = 0; i < list.Count; i = i + freq)
            {
                string     result = GetActivityForRange(list, i, i + freq);
                StatusData sd     = new StatusData();
                sd.Id     = statusResult.Count.ToString();
                sd.Status = result;
                statusResult.Add(sd);
                Console.WriteLine("+--- Computed status: " + result);
            }
        }
Exemple #2
0
        public void AddData(EventData ed)
        {
            Console.WriteLine("+-- Aggiungo evento: " + ed);
            String deviceId = (String)ed.SystemProperties["iothub-connection-device-id"].ToString();

            Console.WriteLine("+-- DeviceId " + deviceId);
            if (deviceId != null)
            {
                Console.WriteLine("+-- DeviceId not null");
                Object currentList = null;
                if (!mainDictionary.ContainsKey(deviceId))
                {
                    Console.WriteLine("+-- creo la lista");
                    if (deviceId.Equals(sensor))
                    {
                        currentList = new List <DataItem>();
                        mainDictionary.Add(deviceId, currentList);
                    }
                    else if (deviceId.Equals(edgeSensor))
                    {
                        currentList = new List <string>();
                        mainDictionary.Add(deviceId, currentList);
                    }
                }
                else
                {
                    currentList = mainDictionary[deviceId];
                }
                DataItem lastDataItem = null;
                if (deviceId.Equals(sensor))
                {
                    List <DataItem> curr = (List <DataItem>)currentList;
                    if (curr.Count > 0)
                    {
                        lastDataItem = curr[curr.Count - 1];
                    }
                    IList <DataItem> newValues = GenerateDataItem(ed);
                    foreach (var item in newValues)
                    {
                        double Magnitude = Math.Sqrt(item.X * item.X + item.Y * item.Y + item.Z * item.Z);
                        item.Magnitude = Magnitude;
                        if (lastDataItem != null)
                        {
                            item.Delta = Magnitude - lastDataItem.Magnitude;
                        }
                        curr.Add(item);
                        if (curr.Count > 200)
                        {
                            curr.RemoveAt(0);
                        }
                    }
                    computeStatus(newValues);
                }
                if (deviceId.Equals(edgeSensor))
                {
                    List <string> allItems = (List <string>)currentList;
                    List <string> newItems = JsonConvert.DeserializeObject <List <string> >(Encoding.UTF8.GetString(ed.Body.Array));
                    allItems.AddRange(newItems);
                    int i = statusResultEdge.Count;
                    foreach (var item in newItems)
                    {
                        StatusData sd = new StatusData();
                        sd.Id     = i.ToString();
                        sd.Status = item;
                        statusResultEdge.Add(sd);
                        i++;
                    }
                    Console.WriteLine("+-- added: " + Encoding.UTF8.GetString(ed.Body.Array));
                }
            }
            Console.WriteLine("+-- AddData end");
        }