Esempio n. 1
0
        public void Parse_InvalidDataFormat_ExceptionThrown()
        {
            string rawData = "01-80-01-00-00-00-00-80-01-80-01-80-01-00-00-00-00-00-CB-B8-33-4C-88-4F";
            var    bytes   = ConvertStringBytesToByteArray(rawData);

            RuuviTag.Parse(bytes);
        }
Esempio n. 2
0
        public async Task ReadDeviceDataAsync_RuuviTagFound_ReturnData()
        {
            // Arrange
            var numberFormatInfo = new NumberFormatInfo()
            {
                NumberDecimalSeparator = "."
            };
            const string ruuviTagAddress = "testAddress";
            var          sensorDevice    = new SensorDevice
            {
                SensorDeviceTypeId = Type.SensorDeviceTypeId.RuuviTag,
                Id      = "SensorDevice1",
                Address = ruuviTagAddress
            };
            var ruuviTag = new RuuviTag()
            {
                AccelerationX             = 0.123,
                AccelerationY             = 0.564,
                AccelerationZ             = -0.153,
                AirPressure               = 1060,
                BatteryVoltage            = 2.11,
                DataFormat                = 5,
                Humidity                  = 77,
                MacAddress                = ruuviTagAddress,
                MeasurementSequenceNumber = 22,
                MovementCounter           = 123,
                Temperature               = 33.3,
                TxPower = 3
            };

            _bleReaderMock.Setup(b => b.GetManufacturerDataAsync <RuuviTag>(ruuviTagAddress)).ReturnsAsync(ruuviTag);
            var deviceDataReader = _serviceProvider.GetService <DeviceDataReader.DeviceDataReader>();

            // Act
            var measurementList = await deviceDataReader.ReadDeviceDataAsync(sensorDevice);

            // Assert
            Assert.AreEqual(8, measurementList.Count, "Amount of returned measurements is not correct");
            Assert.AreEqual(ruuviTag.AccelerationX.Value.ToString(numberFormatInfo), measurementList.First(m =>
                                                                                                           m.SensorId.Equals("AccelerationX", StringComparison.OrdinalIgnoreCase)).Value, "Value of AccelerationX is not correct");
            Assert.AreEqual(ruuviTag.AccelerationY.Value.ToString(numberFormatInfo), measurementList.First(m =>
                                                                                                           m.SensorId.Equals("AccelerationY", StringComparison.OrdinalIgnoreCase)).Value, "Value of AccelerationY is not correct");
            Assert.AreEqual(ruuviTag.AccelerationZ.Value.ToString(numberFormatInfo), measurementList.First(m =>
                                                                                                           m.SensorId.Equals("AccelerationZ", StringComparison.OrdinalIgnoreCase)).Value, "Value of AccelerationZ is not correct");
            Assert.AreEqual(ruuviTag.AirPressure.Value.ToString(numberFormatInfo), measurementList.First(m =>
                                                                                                         m.SensorId.Equals("Pressure", StringComparison.OrdinalIgnoreCase)).Value, "Value of Pressure is not correct");
            Assert.AreEqual(ruuviTag.BatteryVoltage.Value.ToString(numberFormatInfo), measurementList.First(m =>
                                                                                                            m.SensorId.Equals("BatteryVoltage", StringComparison.OrdinalIgnoreCase)).Value, "Value of BatteryVoltage is not correct");
            Assert.AreEqual(ruuviTag.Humidity.Value.ToString(numberFormatInfo), measurementList.First(m =>
                                                                                                      m.SensorId.Equals("Humidity", StringComparison.OrdinalIgnoreCase)).Value, "Value of Humidity is not correct");
            Assert.AreEqual(ruuviTag.Temperature.Value.ToString(numberFormatInfo), measurementList.First(m =>
                                                                                                         m.SensorId.Equals("Temperature", StringComparison.OrdinalIgnoreCase)).Value, "Value of Temperature is not correct");
            Assert.AreEqual(ruuviTag.MovementCounter.Value.ToString(numberFormatInfo), measurementList.First(m =>
                                                                                                             m.SensorId.Equals("MovementCounter", StringComparison.OrdinalIgnoreCase)).Value, "Value of MovementCounter is not correct");
        }
Esempio n. 3
0
        private void CheckV4Data(byte[] bytes, double temperature, double humidity, double airPressure)
        {
            var data = RuuviTag.Parse(bytes);

            Assert.AreEqual(temperature, data.Temperature, "Temperature");
            Assert.AreEqual(humidity, data.Humidity, "Humidity");
            Assert.AreEqual(airPressure, data.AirPressure, "AirPressure");
            Assert.IsNull(data.AccelerationX, "Acceleration X");
            Assert.IsNull(data.AccelerationY, "Acceleration Y");
            Assert.IsNull(data.AccelerationZ, "Acceleration Z");
            Assert.IsNull(data.BatteryVoltage, "Battery voltage");
            Assert.IsNull(data.TxPower, "TX power");
            Assert.IsNull(data.MovementCounter, "Movement counter");
            Assert.IsNull(data.MeasurementSequenceNumber, "Measurement sequence");
            Assert.IsNull(data.MacAddress, "MAC address");
        }
Esempio n. 4
0
        /// <inheritdoc cref="IBleReader"/>
        public async Task <T> GetManufacturerDataAsync <T>(string macAddress)
        {
            var manufacturerData = await ReadDeviceDataAsync(macAddress);

            if (manufacturerData != null)
            {
                if (typeof(T) == typeof(RuuviTag))
                {
                    return((T)Convert.ChangeType(RuuviTag.Parse(manufacturerData.Data), typeof(T)));
                }
                // Add support for parsing data of other device types
                else
                {
                    throw new UnsupportedDeviceTypeException($"Support for getting manufacturer data of type '{typeof(T).ToString()}' has not been implemented");
                }
            }

            return(default(T));
        }