Add cameras, fix bugs
[python_utils.git] / smart_home / cameras.py
1 #!/usr/bin/env python3
2
3 """Utilities for dealing with the webcams."""
4
5 from abc import abstractmethod
6 import datetime
7 import json
8 import logging
9 import os
10 import re
11 import subprocess
12 import sys
13 from typing import Any, Dict, List, Optional, Set
14
15 import argparse_utils
16 import config
17 import logging_utils
18 import smart_home.device as dev
19 from google_assistant import ask_google, GoogleResponse
20 from decorator_utils import timeout, memoized
21
22 logger = logging.getLogger(__name__)
23
24 class BaseCamera(dev.Device):
25     camera_mapping = {
26         'cabin_drivewaycam': 'cabin_driveway',
27         'outside_backyard_camera': 'backyard',
28         'outside_driveway_camera': 'driveway',
29         'outside_doorbell_camera': 'doorbell',
30         'outside_front_door_camera': 'frontdoor',
31     }
32
33     def __init__(self, name: str, mac: str, keywords: str = "") -> None:
34         super().__init__(name.strip(), mac.strip(), keywords)
35         self.camera_name = BaseCamera.camera_mapping.get(name, None)
36
37     def get_stream_url(self) -> str:
38         assert self.camera_name is not None
39         return f'http://10.0.0.56:81/mjpg/{self.camera_name}/video.mjpg?h=1024&q=99'