Replace geofence polling with native Android geofence
This commit is contained in:
@@ -1,12 +1,15 @@
|
||||
/// Модель "дома" -- один физический сервер Ignis.
|
||||
/// Содержит только несекретные настройки. API-ключ хранится отдельно.
|
||||
class HomeConfig {
|
||||
static const int defaultGeofenceRadiusMeters = 500;
|
||||
|
||||
final String id; // уникальный идентификатор (uuid или timestamp)
|
||||
final String name; // человекочитаемое название ("Квартира", "Дача")
|
||||
final String url; // адрес сервера (например ignis.akokos.ru)
|
||||
final double? latitude; // GPS-широта дома (для гео-автоматизации)
|
||||
final double? longitude; // GPS-долгота дома (для гео-автоматизации)
|
||||
final bool geofenceEnabled; // автовыключение при уходе из дома
|
||||
final int geofenceRadiusMeters; // радиус geofence для автодействий
|
||||
|
||||
HomeConfig({
|
||||
required this.id,
|
||||
@@ -15,6 +18,7 @@ class HomeConfig {
|
||||
this.latitude,
|
||||
this.longitude,
|
||||
this.geofenceEnabled = false,
|
||||
this.geofenceRadiusMeters = defaultGeofenceRadiusMeters,
|
||||
});
|
||||
|
||||
/// Есть ли координаты у дома
|
||||
@@ -31,6 +35,7 @@ class HomeConfig {
|
||||
if (latitude != null) 'latitude': latitude,
|
||||
if (longitude != null) 'longitude': longitude,
|
||||
'geofenceEnabled': geofenceEnabled,
|
||||
'geofenceRadiusMeters': geofenceRadiusMeters,
|
||||
};
|
||||
|
||||
factory HomeConfig.fromJson(Map<String, dynamic> json) => HomeConfig(
|
||||
@@ -40,6 +45,10 @@ class HomeConfig {
|
||||
latitude: (json['latitude'] as num?)?.toDouble(),
|
||||
longitude: (json['longitude'] as num?)?.toDouble(),
|
||||
geofenceEnabled: json['geofenceEnabled'] as bool? ?? false,
|
||||
geofenceRadiusMeters:
|
||||
((json['geofenceRadiusMeters'] as num?)?.toInt() ??
|
||||
defaultGeofenceRadiusMeters)
|
||||
.clamp(100, 5000),
|
||||
);
|
||||
|
||||
/// Копирование с изменениями
|
||||
@@ -49,6 +58,7 @@ class HomeConfig {
|
||||
double? latitude,
|
||||
double? longitude,
|
||||
bool? geofenceEnabled,
|
||||
int? geofenceRadiusMeters,
|
||||
bool clearCoordinates = false,
|
||||
}) => HomeConfig(
|
||||
id: id,
|
||||
@@ -60,5 +70,6 @@ class HomeConfig {
|
||||
geofenceEnabled: clearCoordinates
|
||||
? false
|
||||
: (geofenceEnabled ?? this.geofenceEnabled),
|
||||
geofenceRadiusMeters: geofenceRadiusMeters ?? this.geofenceRadiusMeters,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user