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 toJson() => { 'id': id, 'name': name, 'floor_id': floorId, 'position': position.toJson(), 'status': status.name, 'last_seen': lastSeen?.toIso8601String(), }; factory Sensor.fromJson(Map 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), status: SensorStatus.values.byName(json['status'] as String), lastSeen: json['last_seen'] == null ? null : DateTime.parse(json['last_seen'] as String), ); }