1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-10 12:09:27 +01:00

Mijia LYWSD02: Fix battery drain on Mijia

This commit is contained in:
Davis Mosenkovs 2023-11-01 21:38:45 +02:00 committed by José Rebelo
parent 59b83b92c7
commit e6a0350197

View File

@ -60,6 +60,7 @@ public class MijiaLywsd02Support extends AbstractBTLEDeviceSupport {
private static final UUID UUID_TIME = UUID.fromString("ebe0ccb7-7a0a-4b0c-8a1a-6ff2997da3a6");
private static final UUID UUID_BATTERY = UUID.fromString("ebe0ccc4-7a0a-4b0c-8a1a-6ff2997da3a6");
private static final UUID UUID_SCALE = UUID.fromString("ebe0ccbe-7a0a-4b0c-8a1a-6ff2997da3a6");
private static final UUID UUID_CONN_INTERVAL = UUID.fromString("ebe0ccd8-7a0a-4b0c-8a1a-6ff2997da3a6");
private final DeviceInfoProfile<MijiaLywsd02Support> deviceInfoProfile;
private final GBDeviceEventVersionInfo versionCmd = new GBDeviceEventVersionInfo();
private final GBDeviceEventBatteryInfo batteryCmd = new GBDeviceEventBatteryInfo();
@ -94,6 +95,7 @@ public class MijiaLywsd02Support extends AbstractBTLEDeviceSupport {
}
getBatteryInfo(builder);
setConnectionInterval(builder);
setInitialized(builder);
return builder;
}
@ -102,7 +104,7 @@ public class MijiaLywsd02Support extends AbstractBTLEDeviceSupport {
BluetoothGattCharacteristic timeCharacteristc = getCharacteristic(MijiaLywsd02Support.UUID_TIME);
long ts = System.currentTimeMillis();
byte offsetHours = (byte) (SimpleTimeZone.getDefault().getOffset(ts) / (1000 * 60 * 60));
ts /= 1000;
ts = ( ts + 250 + 500 ) / 1000; // round to seconds with +250 ms to compensate for BLE connection interval
builder.write(timeCharacteristc, new byte[]{
(byte) (ts & 0xff),
(byte) ((ts >> 8) & 0xff),
@ -111,6 +113,11 @@ public class MijiaLywsd02Support extends AbstractBTLEDeviceSupport {
offsetHours});
}
private void setConnectionInterval(TransactionBuilder builder) {
BluetoothGattCharacteristic intervalCharacteristc = getCharacteristic(MijiaLywsd02Support.UUID_CONN_INTERVAL);
builder.write(intervalCharacteristc, new byte[]{ (byte) 0xf4, (byte) 0x01 }); // maximum interval of 500 ms
}
private void getBatteryInfo(TransactionBuilder builder) {
BluetoothGattCharacteristic batteryCharacteristc = getCharacteristic(MijiaLywsd02Support.UUID_BATTERY);
builder.read(batteryCharacteristc);