57 lines
1.4 KiB
Dart
57 lines
1.4 KiB
Dart
import 'position.dart';
|
|
|
|
enum SensorStatus { online, offline, provisioning }
|
|
|
|
class Sensor {
|
|
const Sensor({
|
|
required this.id,
|
|
required this.name,
|
|
required this.floorId,
|
|
required this.position,
|
|
required this.status,
|
|
this.lastSeen,
|
|
});
|
|
|
|
final String id;
|
|
final String name;
|
|
final String floorId;
|
|
final Position position;
|
|
final SensorStatus status;
|
|
final DateTime? lastSeen;
|
|
|
|
Sensor copyWith({
|
|
String? name,
|
|
Position? position,
|
|
SensorStatus? status,
|
|
DateTime? lastSeen,
|
|
}) =>
|
|
Sensor(
|
|
id: id,
|
|
name: name ?? this.name,
|
|
floorId: floorId,
|
|
position: position ?? this.position,
|
|
status: status ?? this.status,
|
|
lastSeen: lastSeen ?? this.lastSeen,
|
|
);
|
|
|
|
Map<String, dynamic> toJson() => {
|
|
'id': id,
|
|
'name': name,
|
|
'floor_id': floorId,
|
|
'position': position.toJson(),
|
|
'status': status.name,
|
|
'last_seen': lastSeen?.toIso8601String(),
|
|
};
|
|
|
|
factory Sensor.fromJson(Map<String, dynamic> json) => Sensor(
|
|
id: json['id'] as String,
|
|
name: json['name'] as String,
|
|
floorId: json['floor_id'] as String,
|
|
position: Position.fromJson(json['position'] as Map<String, dynamic>),
|
|
status: SensorStatus.values.byName(json['status'] as String),
|
|
lastSeen: json['last_seen'] == null
|
|
? null
|
|
: DateTime.parse(json['last_seen'] as String),
|
|
);
|
|
}
|