forked from amkovkov/GranuSightSoftware2
feat: минорые изменения после тестирования
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0" />
|
||||
<PackageReference Include="System.Device.Gpio" Version="4.0.1" />
|
||||
<PackageReference Include="Iot.Device.Bindings" Version="4.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -104,6 +104,7 @@ public class LightsService
|
||||
}
|
||||
|
||||
public void Ping(CancellationToken cancellationToken = default) => SendRequest(_client.Ping, new Empty(), cancellationToken);
|
||||
public void Disconnect(CancellationToken cancellationToken = default) => SendRequest(_client.Disconnect, new Empty(), cancellationToken);
|
||||
public void Off(CancellationToken cancellationToken = default) => SendRequest(_client.SetOff, new Empty(), cancellationToken);
|
||||
public void StaticColor(double brightness, Color color, CancellationToken cancellationToken = default) => SendRequest(_client.SetStaticColor, new StaticColorRequest
|
||||
{
|
||||
@@ -274,6 +275,7 @@ public class LightsService
|
||||
}, cancellationToken);
|
||||
|
||||
public async Task PingAsync(CancellationToken cancellationToken = default) => await SendRequestAsync(_client.PingAsync, new Empty(), cancellationToken);
|
||||
public async Task DisconnectAsync(CancellationToken cancellationToken = default) => await SendRequestAsync(_client.DisconnectAsync, new Empty(), cancellationToken);
|
||||
public async Task OffAsync(CancellationToken cancellationToken = default) => await SendRequestAsync(_client.SetOffAsync, new Empty(), cancellationToken);
|
||||
public async Task StaticColorAsync(double brightness, Color color, CancellationToken cancellationToken = default) => await SendRequestAsync(_client.SetStaticColorAsync, new StaticColorRequest
|
||||
{
|
||||
|
||||
@@ -9,8 +9,8 @@ public class TemperatureHumidityService : IDisposable
|
||||
{
|
||||
public static TemperatureHumidityServiceConfiguration Default => new TemperatureHumidityServiceConfiguration
|
||||
{
|
||||
Bus = 0,
|
||||
Address = 0x44
|
||||
Bus = 6,
|
||||
Address = 0x45
|
||||
};
|
||||
|
||||
public int Bus { get; set; }
|
||||
@@ -54,7 +54,7 @@ public class TemperatureHumidityService : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(double temperature, double relativeHumidity)> MeasureAsync(int measurementsCount = 1, CancellationToken cancellationToken = default)
|
||||
public (double temperature, double relativeHumidity) Measure(int measurementsCount = 1, bool checkCrc = true, CancellationToken cancellationToken = default)
|
||||
{
|
||||
// В соответствии с даташитом на SHT45-AD1B-R2 псевдокод измерения с высокой точностью следующий:
|
||||
// i2c_write(i2c_addr=0x44, tx_bytes=[0xFD])
|
||||
@@ -90,19 +90,19 @@ public class TemperatureHumidityService : IDisposable
|
||||
// Отправляем команду
|
||||
_sensor.Write(command);
|
||||
// 10 мс ожидания
|
||||
await Task.Delay(10, cancellationToken);
|
||||
Task.Delay(10, cancellationToken);
|
||||
// Читаем данные
|
||||
_sensor.Read(data);
|
||||
|
||||
// Распаковываем данные [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
|
||||
ushort temperatureTicks = BitConverter.ToUInt16(data.ToArray(), 0);
|
||||
byte temperatureChecksum = data[2];
|
||||
int relativeHumidityTicks = BitConverter.ToUInt16(data.ToArray(), 3);
|
||||
byte relativeHumidityChecksum = data[5];
|
||||
ushort temperatureTicks = BitConverter.ToUInt16(data.Slice(0, 2));
|
||||
int relativeHumidityTicks = BitConverter.ToUInt16(data.Slice(3, 2));
|
||||
|
||||
// Проверка по CRC
|
||||
if (!CheckCrc(data.Slice(0, 2), temperatureChecksum) ||
|
||||
!CheckCrc(data.Slice(3, 2), relativeHumidityChecksum))
|
||||
if (checkCrc && (!CheckCrc(data.Slice(0, 2), temperatureChecksum) ||
|
||||
!CheckCrc(data.Slice(3, 2), relativeHumidityChecksum)))
|
||||
{
|
||||
_logger.LogWarning("Temperature and humidity sensor CRC error");
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user