コード例 #1
0
        private async Task RunAsync()
        {
            _bleModuleConnection.Start("COM3");

            _logger?.LogInformation("Discover and connect to device");
            var flowerCareSmartMonitor = await _bleDeviceManager.ConnectByServiceUuidAsync("95FE".HexStringToByteArray());

            _logger?.LogInformation("Read device status");
            var status          = await flowerCareSmartMonitor.CharacteristicsByUuid[new Guid("00001a02-0000-1000-8000-00805f9b34fb")].ReadValueAsync();
            var batteryLevel    = status[0];
            var firmwareVersion = Encoding.ASCII.GetString(status.Skip(2).ToArray()).TrimEnd(new char[] { (char)0 });

            _logger?.LogInformation($"Battery level: {batteryLevel}%");
            _logger?.LogInformation($"Firmware version: {firmwareVersion}");

            _logger?.LogInformation("Read device sensor data");
            await flowerCareSmartMonitor.CharacteristicsByUuid[new Guid("00001a00-0000-1000-8000-00805f9b34fb")].WriteValueAsync(new byte[] { 0xa0, 0x1f });
            var sensorData     = await flowerCareSmartMonitor.CharacteristicsByUuid[new Guid("00001a01-0000-1000-8000-00805f9b34fb")].ReadValueAsync();
            var temperature    = BitConverter.ToInt16(sensorData.Take(2).ToArray(), 0) / 10f;
            var lightIntensity = BitConverter.ToInt32(sensorData.Skip(3).Take(4).ToArray(), 0);
            var soilMoisture   = sensorData[7];
            var soilFertility  = BitConverter.ToInt16(sensorData.Skip(8).Take(2).ToArray(), 0);

            _logger?.LogInformation($"Temperature: {temperature} °C");
            _logger?.LogInformation($"Light intensity: {lightIntensity} lux");
            _logger?.LogInformation($"Soil moisture: {soilMoisture}%");
            _logger?.LogInformation($"Soil fertility: {soilFertility} µS/cm");

            await flowerCareSmartMonitor.DisconnectAsync();

            await Task.Delay(10);

            _bleModuleConnection.Stop();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: BGLibExt/BGLibExt.NET
        private async Task RunAsync()
        {
            _bleModuleConnection.Start("COM3");

            _logger?.LogInformation("Discover and connect to device");
            var miTemperatureHumidityMonitor = await _bleDeviceManager.ConnectByServiceUuidAsync("0F180A18".HexStringToByteArray());

            _logger?.LogInformation("Read device status");
            var battery         = await miTemperatureHumidityMonitor.CharacteristicsByUuid[new Guid("00002a19-0000-1000-8000-00805f9b34fb")].ReadValueAsync();
            var batteryLevel    = battery[0];
            var firmware        = await miTemperatureHumidityMonitor.CharacteristicsByUuid[new Guid("00002a26-0000-1000-8000-00805f9b34fb")].ReadValueAsync();
            var firmwareVersion = Encoding.ASCII.GetString(firmware).TrimEnd(new char[] { (char)0 });

            _logger?.LogInformation($"Battery level: {batteryLevel}%");
            _logger?.LogInformation($"Firmware version: {firmwareVersion}");

            _logger?.LogInformation("Read device sensor data");
            miTemperatureHumidityMonitor.CharacteristicsByUuid[new Guid("226caa55-6476-4566-7562-66734470666d")].ValueChanged += (sender, args) =>
            {
                var dataString = Encoding.ASCII.GetString(args.Value).TrimEnd(new char[] { (char)0 });
                var match      = Regex.Match(dataString, @"T=([\d\.]*)\s+?H=([\d\.]*)");
                if (match.Success)
                {
                    var temperature = float.Parse(match.Groups[1].Captures[0].Value);
                    var airHumidity = float.Parse(match.Groups[2].Captures[0].Value);
                    _logger?.LogInformation($"Temperature: {temperature} °C");
                    _logger?.LogInformation($"Air humidity: {airHumidity}%");
                }
            };
            _logger?.LogInformation("Enable notifications");
            await miTemperatureHumidityMonitor.CharacteristicsByUuid[new Guid("226caa55-6476-4566-7562-66734470666d")].WriteCccAsync(BleCccValue.NotificationsEnabled);
            var ccc = await miTemperatureHumidityMonitor.CharacteristicsByUuid[new Guid("226caa55-6476-4566-7562-66734470666d")].ReadCccAsync();

            await Task.Delay(10000);

            await miTemperatureHumidityMonitor.DisconnectAsync();

            _bleModuleConnection.Stop();
        }