Ejemplo n.º 1
0
        public IHttpActionResult PostSensorTag(SensorTag sensorTag)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.SensorTags.Add(sensorTag);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (SensorTagExists(sensorTag.id))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("DefaultApi", new { id = sensorTag.id }, sensorTag));
        }
Ejemplo n.º 2
0
        private void BluetoothLEDevices_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            string msg = string.Empty;

            lock (deviceListLock)
            {
                if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
                {
                    foreach (ObservableBluetoothLEDevice newDev in e.NewItems)
                    {
                        if (newDev.Name.Contains("ShokPod"))
                        {
                            SensorTag sensorTag = new SensorTag(newDev);
                            tiles.Add(new TileModel()
                            {
                                Caption = $"{sensorTag.AssignedToName}", Icon = new BitmapImage(new Uri("ms-appx:/Assets/shokpodSensorIcon150x150.png")), UserData = sensorTag
                            });
                        }
                    }
                }
                else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
                {
                    foreach (ObservableBluetoothLEDevice oldDev in e.OldItems)
                    {
                        //DeviceList.Remove(oldDev);
                    }
                }
                else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Reset)
                {
                    //DeviceList.Clear();
                }
            }
        }
Ejemplo n.º 3
0
        public static async Task <BLETISensor> Sensor(SensorTag sensorType)
        {
            switch (sensorType)
            {
            case SensorTag.CC2541:
                sensor            = new CC2541.CC2541Sensor();
                sensor.tagService = await Initialize(CC2541.SensorTagUuid.UUID_INF_SERV);

                sensor.manifactureName = await sensor.ReadCharacteristicStringAsync(CC2541.SensorTagUuid.UUID_INF_MANUF_NR);

                sensor.firmwareRevision = await sensor.ReadCharacteristicStringAsync(CC2541.SensorTagUuid.UUID_INF_FW_NR);

                Debug.Write("CC2541:" + sensor.manifactureName + "," + sensor.firmwareRevision);
                break;

            case SensorTag.CC2650:
                sensor            = new CC2650.CC2650Sensor();
                sensor.tagService = await Initialize(CC2650.SensorTagUuid.UUID_INF_SERV);

                sensor.manifactureName = await sensor.ReadCharacteristicStringAsync(CC2650.SensorTagUuid.UUID_INF_MANUF_NR);

                sensor.firmwareRevision = await sensor.ReadCharacteristicStringAsync(CC2650.SensorTagUuid.UUID_INF_FW_NR);

                Debug.Write("CC2650:" + sensor.manifactureName + "," + sensor.firmwareRevision);
                break;
            }
            return(sensor);
        }
Ejemplo n.º 4
0
        public IHttpActionResult PutSensorTag(string id, SensorTag sensorTag)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != sensorTag.id)
            {
                return(BadRequest());
            }

            db.Entry(sensorTag).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!SensorTagExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public TemperaturePage()
        {
            this.InitializeComponent();

            sensor  = SensorTag.SelectedSensor;
            celcius = Settings.Instance.Celcius;
            CelciusButton.IsChecked    = celcius;
            FahrenheitButton.IsChecked = !celcius;
        }
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            sensor = e.Parameter as SensorTag;

            SensorList.ItemsSource = tiles;

            base.OnNavigatedTo(e);
            await this.ConnectSensors();
        }
Ejemplo n.º 7
0
        private void OnItemClick(object sender, ItemClickEventArgs e)
        {
            TileModel tile      = e.ClickedItem as TileModel;
            SensorTag sensorTag = (SensorTag)tile.UserData;

            gattContext.SelectedBluetoothLEDevice = sensorTag.Device;
            Frame frame = Window.Current.Content as Frame;

            frame.Navigate(typeof(DevicePage), sensorTag);
        }
Ejemplo n.º 8
0
        public IHttpActionResult GetSensorTag(string id)
        {
            SensorTag sensorTag = db.SensorTags.Find(id);

            if (sensorTag == null)
            {
                return(NotFound());
            }

            return(Ok(sensorTag));
        }
Ejemplo n.º 9
0
        public IHttpActionResult DeleteSensorTag(string id)
        {
            SensorTag sensorTag = db.SensorTags.Find(id);

            if (sensorTag == null)
            {
                return(NotFound());
            }

            db.SensorTags.Remove(sensorTag);
            db.SaveChanges();

            return(Ok(sensorTag));
        }
        public static async Task <BLETISensor> Sensor(SensorTag sensorType)
        {
            string selector = null;

            switch (sensorType)
            {
            case SensorTag.CC2541:
                sensor            = new CC2541.CC2541Sensor();
                sensor.tagService = await Initialize(CC2541.SensorTagUuid.UUID_INF_SERV);

                if (sensor.tagService == null)
                {
                    sensor.ConnectionStatus = "Need Pairing";
                    throw new Exception("Need to make CC2541 Pairing before start!");
                }
                sensor.ManifactureName = await sensor.ReadCharacteristicStringAsync(CC2541.SensorTagUuid.UUID_INF_MANUF_NR);

                sensor.FirmwareRevision = await sensor.ReadCharacteristicStringAsync(CC2541.SensorTagUuid.UUID_INF_FW_NR);

                selector = GattDeviceService.GetDeviceSelectorFromUuid(new Guid(CC2541.SensorTagUuid.UUID_INF_SERV));
                Debug.WriteLine("CC2541:" + sensor.ManifactureName + "," + sensor.FirmwareRevision);
                break;

            case SensorTag.CC2650:
                sensor            = new CC2650.CC2650Sensor();
                sensor.tagService = await Initialize(CC2650.SensorTagUuid.UUID_INF_SERV);

                if (sensor.tagService == null)
                {
                    sensor.ConnectionStatus = "Need Pairing";
                    throw new Exception("Need to make CC2650 Pairing before start!");
                }
                sensor.ManifactureName = await sensor.ReadCharacteristicStringAsync(CC2650.SensorTagUuid.UUID_INF_MANUF_NR);

                sensor.FirmwareRevision = await sensor.ReadCharacteristicStringAsync(CC2650.SensorTagUuid.UUID_INF_FW_NR);

                selector = GattDeviceService.GetDeviceSelectorFromUuid(new Guid(CC2650.SensorTagUuid.UUID_INF_SERV));
                Debug.WriteLine("CC2650:" + sensor.ManifactureName + "," + sensor.FirmwareRevision);
                break;
            }
            sensor.ConnectionStatus = "Waiting to connect...";
            Debug.WriteLine(sensor.ConnectionStatus);

            sensor.deviceNameValue = await ReadDeviceNameAsync(selector);

            sensor.systemIdValue = await ReadDeviceIdAsync(selector);

            return(sensor);
        }
    public void SpawnSensorTags(List <RaspberryPi> allRaspberryPis)
    {
        _Rpi = Instantiate(Rpi, new Vector3(0, 0, 0), Quaternion.Euler(0, 0, 0)) as GameObject;
        _Rpi.transform.GetChild(0).GetComponentInChildren <Button> ().GetComponentInChildren <Text> ().text = allSnortData[0].sensor;
        _Rpi.transform.GetChild(0).GetChild(1).GetComponentInChildren <Text> ().text = "System is safe";
        _Rpi.GetComponent <Renderer> ().material.color = Color.green;
        currentColor = Color.green;

        float scew   = 1.0f;
        float offset = 0f;
        int   i      = 0;

        foreach (SensorTag sensortag in  allRaspberryPis[0].sensorTags)
        {
            if (i % 12 == 0)
            {
                scew   += 1.0f;
                offset += 30.0f;
            }
            var sinOfAngle = scew * 270 * Mathf.Sin(i * (360 / 12) * Mathf.Deg2Rad + offset);
            var cosOfAngle = scew * 270 * Mathf.Cos(i * (360 / 12) * Mathf.Deg2Rad + offset);

            GameObject _SensorTag = Instantiate(SensorTag, new Vector3(sinOfAngle, 0, cosOfAngle), Quaternion.Euler(0, 0, 0)) as GameObject;
            _SensorTag.transform.GetChild(0).GetComponentInChildren <Button> ().GetComponentInChildren <Text> ().text = allRaspberryPis[0].sensorTags [i].shortName;
            _SensorTag.transform.GetChild(0).GetChild(1).GetComponentInChildren <Text> ().text = sensortag.airtemp;
            _SensorTag.transform.GetChild(0).GetChild(2).GetComponentInChildren <Text> ().text = sensortag.airpressure;
            _SensorTag.transform.GetChild(0).GetChild(3).GetComponentInChildren <Text> ().text = sensortag.seq;
            _SensorTag.GetComponent <Renderer> ().material.color = Color.green;
            _SensorTag.transform.GetChild(1).GetComponent <ParticleSystem> ().GetComponent <ParticleMovement>().target = _Rpi.transform;
            float rotate = i * (360 / 12) + 100;
            _SensorTag.transform.GetChild(1).GetComponent <ParticleSystem> ().transform.rotation = Quaternion.Euler(0, rotate, 0);
            var em = _SensorTag.transform.GetChild(1).GetComponent <ParticleSystem> ().emission;
            em.enabled = false;
            //em.enabled = true;

            _SensorTag.transform.GetChild(0).GetComponentInChildren <Button> ().onClick.AddListener(delegate() {
                currentTag       = sensortag.tagNumber;
                currentSensorTag = sensortag;
                displayCanvas();
                displaySensorData();
            });

            sensorTags.Add(_SensorTag);
            i++;
        }

        InvokeRepeating("getData", 0f, 2f);
        InvokeRepeating("updateSystemColor", 0f, 5f);
    }
Ejemplo n.º 12
0
        private async Task FindSensors()
        {
            try
            {
                if (finding)
                {
                    return;
                }
                finding = true;

                HideHelp();

                tiles.Clear();

                // find a matching sensor
                // todo: let user choose which one to play with.
                foreach (SensorTag tag in await SensorTag.FindAllDevices())
                {
                    string icon = tag.Version == 1 ? "ms-appx:/Assets/SensorTag.png" : "ms-appx:/Assets/ti-sensortag-cc2650.png";

                    string name = Settings.Instance.FindName(tag.DeviceAddress);
                    if (string.IsNullOrEmpty(name))
                    {
                        name = tag.DeviceName;
                    }

                    tiles.Add(new TileModel()
                    {
                        Caption = name, Icon = new BitmapImage(new Uri(icon)), UserData = tag
                    });
                }

                if (tiles.Count == 0)
                {
                    ShowHelp();
                }
            }
            catch (Exception ex)
            {
                DisplayMessage("Finding devices failed, please make sure your Bluetooth radio is on.  Details: " + ex.Message);
                ShowHelp();
            }

            finding = false;
        }
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            SelectedSensorTag = e.Parameter as SensorTag;

            SensorList.ItemsSource = tiles;

            SelectedSensorTag.MovementDataChanged += OnMovementMeasurementValueChanged;

            ConnectionResult result = await SelectedSensorTag.Connect();

            if ((result.Result == null) && (result.Exception == null) && (result.Success == false))
            {
                MessageDialog dialog = new MessageDialog("No permission to access device", "Connection error");
                await dialog.ShowAsync();

                //device = null;
                return;
            }
            if (result.Result.Status == GattCommunicationStatus.Success)
            {
            }
            if (result.Result.Status == GattCommunicationStatus.ProtocolError)
            {
                Debug($"Connection protocol error: {result.Result.ProtocolError.Value.ToString()}. Connection failures");
            }
            else if (result.Result.Status == GattCommunicationStatus.Unreachable)
            {
                Debug($"Connection protocol error: Device unreachable");
            }
            else if (result.Exception != null)
            {
                string msg           = String.Format("Message:\n{0}\n\nInnerException:\n{1}\n\nStack:\n{2}", result.Exception.Message, result.Exception.InnerException, result.Exception.StackTrace);
                var    messageDialog = new MessageDialog(msg, "Exception");
                await messageDialog.ShowAsync();
            }

            InidicateConnectionStatus(result);

            this.displayAcceleration = ShokpodSettings.getSettings().Result.DisplayAcceleration;
            base.OnNavigatedTo(e);
        }
Ejemplo n.º 14
0
        public RegenViewModel(INavigationService nav)
        {
            this.nav = nav;
            Messenger.Default.Register <User>(this, (e) => User = e);

            if (nav != null)
            {
                sensorTag = new SensorTag();
            }

            getInfo = new RelayCommand(() =>
            {
                SendMessage.PostRequest <object, Humidity>("Somewhere", sensorTag.HumiditySensor.Humidity);
                SendMessage.PostRequest <object, Temperature>("Somewhere", sensorTag.TemperatureSensor.Temperature);
                Visible = true;
            }, () => sensorTag.HumiditySensor.Humidity.HumidityAmount != 0 && sensorTag.TemperatureSensor.Temperature.TemperatureAmount != 0);
            getTemp = new RelayCommand(() =>
            {
                double temp = sensorTag.TemperatureSensor.Temperature.TemperatureAmount;
                while (temp == 0)
                {
                    SensorTag.TemperatureSensor.GetTemperature();
                    temp = sensorTag.TemperatureSensor.Temperature.TemperatureAmount;
                }

                GetTemp.RaiseCanExecuteChanged();
                GetInfo.RaiseCanExecuteChanged();
            }, () => sensorTag.TemperatureSensor.Temperature.TemperatureAmount == 0);
            getHumidity = new RelayCommand(() =>
            {
                double humidity = sensorTag.HumiditySensor.Humidity.HumidityAmount;
                while (humidity <= 0.0 || humidity > 100.0)
                {
                    SensorTag.HumiditySensor.GetHumidity();
                    humidity = sensorTag.HumiditySensor.Humidity.HumidityAmount;
                }

                GetHumidity.RaiseCanExecuteChanged();
                GetInfo.RaiseCanExecuteChanged();
            }, () => sensorTag.HumiditySensor.Humidity.HumidityAmount == 0);
        }
Ejemplo n.º 15
0
        public PressurePage()
        {
            this.InitializeComponent();

            string[] units = new string[] { "hectopascal", "pascal", "bar", "millibar", "kilopascal", "Mercury (mm)", "Mercury (inches)", "psi" };
            UnitCombo.ItemsSource = units;

            selectedUnit = (PressureUnit)Settings.Instance.PressureUnit;
            // some sanity checks
            if (selectedUnit < PressureUnit.Hectopascal)
            {
                selectedUnit = PressureUnit.Hectopascal;
            }
            if (selectedUnit > PressureUnit.Psi)
            {
                selectedUnit = PressureUnit.Psi;
            }
            UnitCombo.SelectedIndex = (int)selectedUnit;

            sensor = SensorTag.SelectedSensor;
        }
Ejemplo n.º 16
0
 public static async Task<BLETISensor> Sensor(SensorTag sensorType)
 {
     switch (sensorType)
     {
         case SensorTag.CC2541:
             sensor = new CC2541.CC2541Sensor();
             sensor.tagService =  await Initialize(CC2541.SensorTagUuid.UUID_INF_SERV);
             sensor.manifactureName = await sensor.ReadCharacteristicStringAsync(CC2541.SensorTagUuid.UUID_INF_MANUF_NR);
             sensor.firmwareRevision = await sensor.ReadCharacteristicStringAsync(CC2541.SensorTagUuid.UUID_INF_FW_NR);
             Debug.Write("CC2541:" + sensor.manifactureName + "," + sensor.firmwareRevision);
             break;
         case SensorTag.CC2650:
             sensor = new CC2650.CC2650Sensor();
             sensor.tagService = await Initialize(CC2650.SensorTagUuid.UUID_INF_SERV);
             sensor.manifactureName = await sensor.ReadCharacteristicStringAsync(CC2650.SensorTagUuid.UUID_INF_MANUF_NR);
             sensor.firmwareRevision = await sensor.ReadCharacteristicStringAsync(CC2650.SensorTagUuid.UUID_INF_FW_NR);
             Debug.Write("CC2650:" + sensor.manifactureName + "," + sensor.firmwareRevision);
             break;
     }
     return sensor;
 }
Ejemplo n.º 17
0
 public HumidityPage()
 {
     this.InitializeComponent();
     sensor = SensorTag.SelectedSensor;
 }
Ejemplo n.º 18
0
 public GyroPage()
 {
     this.InitializeComponent();
     sensor = SensorTag.SelectedSensor;
 }
 public AccelerometerPage()
 {
     this.InitializeComponent();
     sensor = SensorTag.SelectedSensor;
 }
    public void getData()
    {
        var request = new ScanRequest
        {
            TableName = "SensorTag",
        };

        client.ScanAsync(request, (result) => {
            List <RaspberryPi> allRaspberryPis = new List <RaspberryPi>();
            RaspberryPi rpi = new RaspberryPi();
            List <SensorTag> allSensorTags = new List <SensorTag>();

            foreach (var item in result.Response.Items)
            {
                SensorTag sensorTag = new SensorTag();

                foreach (var kvp in item)
                {
                    string attributeName = kvp.Key;
                    AttributeValue value = kvp.Value;
                    if (attributeName == "defRoute")
                    {
                        rpi.defRoute = value.S;
                    }
                    else if (attributeName == "myName")
                    {
                        rpi.myName = value.S;
                    }
                    if (value.IsMSet)
                    {
                        foreach (var key in value.M.Keys)
                        {
                            foreach (var val in value.M.Values)
                            {
                                if (val.IsMSet)
                                {
                                    foreach (var k in val.M)
                                    {
                                        AttributeValue valu;
                                        val.M.TryGetValue(k.Key, out valu);

                                        if (k.Key.Trim() == "Air Pressure (hPa)")
                                        {
                                            sensorTag.airpressure = k.Key + ": " + valu.N;
                                            //Debug.Log(sensorTag.airpressure);
                                        }
                                        else if (k.Key.Trim() == "RSSI (dBm)")
                                        {
                                            sensorTag.rssi = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.rssi);
                                        }
                                        else if (k.Key.Trim() == "Light (lux)")
                                        {
                                            sensorTag.light = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.light);
                                        }
                                        else if (k.Key.Trim() == "Seq #")
                                        {
                                            sensorTag.seq = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.seq);
                                        }
                                        else if (k.Key.Trim() == "Air Temp (C)")
                                        {
                                            sensorTag.airtemp = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.airtemp);
                                        }
                                        else if (k.Key.Trim() == "Object Temp (C)")
                                        {
                                            sensorTag.objecttemp = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.objecttemp);
                                        }
                                        else if (k.Key.Trim() == "Acc Y (G)")
                                        {
                                            sensorTag.accy = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.accy);
                                        }
                                        else if (k.Key.Trim() == "Gyro Z (deg per sec)")
                                        {
                                            sensorTag.gyroz = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.gyroz);
                                        }
                                        else if (k.Key.Trim() == "Gyro X (deg per sec)")
                                        {
                                            sensorTag.gyrox = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.gyrox);
                                        }
                                        else if (k.Key.Trim() == "HDC Humidity (%RH)")
                                        {
                                            sensorTag.hdchumidity = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.hdchumidity);
                                        }
                                        else if (k.Key.Trim() == "Uptime (sec)")
                                        {
                                            sensorTag.uptime = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.uptime);
                                        }
                                        else if (k.Key.Trim() == "defRoute")
                                        {
                                            sensorTag.defroute = k.Key + ": " + valu.S;

                                            //Debug.Log(sensorTag.defroute);
                                        }
                                        else if (k.Key.Trim() == "Battery Temp (C)")
                                        {
                                            sensorTag.batterytemp = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.batterytemsp);
                                        }
                                        else if (k.Key.Trim() == "HDC Temp (C)")
                                        {
                                            sensorTag.hdctemp = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.hdctemp);
                                        }
                                        else if (k.Key.Trim() == "Ambient Temp (C)")
                                        {
                                            sensorTag.ambienttemp = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.ambienttemp);
                                        }
                                        else if (k.Key.Trim() == "Gyro Y (deg per sec)")
                                        {
                                            sensorTag.gyroy = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.gyroy);
                                        }
                                        else if (k.Key.Trim() == "myName")
                                        {
                                            sensorTag.shortName = valu.S + "";
                                            sensorTag.name      = k.Key + ": " + sensorTag.shortName;

                                            //Debug.Log(sensorTag.name);
                                        }
                                        else if (k.Key.Trim() == "Acc X (G)")
                                        {
                                            sensorTag.accx = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.accx);
                                        }
                                        else if (k.Key.Trim() == "Battery Volt (mV)")
                                        {
                                            sensorTag.batteryvolt = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.batteryvolt);
                                        }
                                        else if (k.Key.Trim() == "Acc Z (G)")
                                        {
                                            sensorTag.accz = k.Key + ": " + valu.N;

                                            //Debug.Log(sensorTag.accz);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                allSensorTags.Add(sensorTag);
            }
            List <SensorTag> oldSensorTags = rpi.sensorTags;
            rpi.sensorTags = allSensorTags;
            allRaspberryPis.Add(rpi);
            if (!canvas.isActiveAndEnabled)
            {
                updateSensorTags(allRaspberryPis, oldSensorTags);
            }
            else
            {
                //displaySensorData(currentSensorTag);
                test(allRaspberryPis);
            }
        });
    }