def add_latest_picture_url(camera_id: str, url: str) -> None: cameras = gcameras = get_camera_config() for camera in cameras: if camera['camera_id'] == camera_id: camera['latest_picture_url'] = url set_camera_config(new_camera_config = cameras) return
def create_camera(name: str, camera_device_id: int, timer: list, resolution: dict, trimming: dict) -> None: cameras = get_camera_config() tank_id = get_config_item('TANK_ID') camera_id = generate_camera_id(tank_id) new_camera = { 'camera_id': camera_id, 'name': name, 'camera_device_id': camera_device_id, 'resolution': { 'x': resolution['x'], 'y': resolution['y'], }, 'timer': list(timer), 'trimming': { 'top': trimming['top'], 'bottom': trimming['bottom'], 'left': trimming['left'], 'right': trimming['right'], }, 'latest_picture_url': '' } cameras.append(new_camera) set_camera_config(cameras) logger( INFO, 'Create new camera 📸\n' + json.dumps(new_camera), True, False ) return
def update_camera( camera_id: str, name: str, camera_device_id: int, resolution: dict, timer: list, trimming: dict ) -> None: cameras = get_camera_config() updated_camera = { 'camera_id': camera_id, 'name': name, 'camera_device_id': camera_device_id, 'resolution': { 'x': resolution['x'], 'y': resolution['y'], }, 'timer': list(timer), 'trimming': { 'top': trimming['top'], 'bottom': trimming['bottom'], 'left': trimming['left'], 'right': trimming['right'], }, 'latest_picture_url': '' } for camera in cameras: if camera['camera_id'] == camera_id: camera['name'] = name camera['camera_device_id'] = camera_device_id camera['resolution'] = resolution camera['timer'] = timer camera['trimming'] = trimming updated_camera['latest_picture_url'] = camera['latest_picture_url'] set_camera_config(cameras) logger( INFO, f'Update camera 📸\ncamera_id = {camera_id}\n' + json.dumps(updated_camera), True, False ) return
def main(): now = datetime.datetime.now() hour, minute = now.hour, now.minute cameras = get_camera_config() target_camera_ids = [] # 全てのカメラをチェック for camera in cameras: # timerがなかったら次へ if 'timer' not in camera: continue timers = camera['timer'] # 対象のカメラが今写真を取るべきかチェック for timer in timers: if timer['hour'] == hour and timer['minute'] == minute: target_camera_ids.append(camera['camera_id']) continue take_pictures(target_camera_ids)
def get_camera_config_by_id(camera_id: str) -> dict: cameras = get_camera_config() for camera in cameras: if camera['camera_id'] == camera_id: return camera return {}
def get_cameras() -> list: cameras = get_camera_config() return cameras