summaryrefslogtreecommitdiff
path: root/include/py/homekit/camera/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'include/py/homekit/camera/config.py')
-rw-r--r--include/py/homekit/camera/config.py51
1 files changed, 31 insertions, 20 deletions
diff --git a/include/py/homekit/camera/config.py b/include/py/homekit/camera/config.py
index c7dbc38..8aeb392 100644
--- a/include/py/homekit/camera/config.py
+++ b/include/py/homekit/camera/config.py
@@ -23,17 +23,13 @@ class IpcamConfig(ConfigUnit):
@classmethod
def schema(cls) -> Optional[dict]:
return {
- 'cams': {
+ 'cameras': {
'type': 'dict',
'keysrules': {'type': ['string', 'integer']},
'valuesrules': {
'type': 'dict',
'schema': {
'type': {'type': 'string', 'allowed': [t.value for t in CameraType], 'required': True},
- 'codec': {'type': 'string', 'allowed': [t.value for t in VideoCodecType], 'required': True},
- 'container': {'type': 'string', 'allowed': [t.value for t in VideoContainerType], 'required': True},
- 'server': {'type': 'string', 'allowed': list(_lbc.get().keys()), 'required': True},
- 'disk': {'type': 'integer', 'required': True},
'motion': {
'type': 'dict',
'schema': {
@@ -44,10 +40,18 @@ class IpcamConfig(ConfigUnit):
}
}
},
- 'rtsp_tcp': {'type': 'boolean'}
}
}
},
+ 'areas': {
+ 'type': 'dict',
+ 'keysrules': {'type': 'string'},
+ 'valuesrules': {
+ 'type': 'list',
+ 'schema': {'type': ['string', 'integer']} # same type as for 'cameras' keysrules
+ }
+ },
+ 'camera_ip_template': {'type': 'string', 'required': True},
'motion_padding': {'type': 'integer', 'required': True},
'motion_telegram': {'type': 'boolean', 'required': True},
'fix_interval': {'type': 'integer', 'required': True},
@@ -69,6 +73,15 @@ class IpcamConfig(ConfigUnit):
'login': {'type': 'string', 'required': True},
'password': {'type': 'string', 'required': True},
}
+ },
+
+ 'web_creds': {
+ 'required': True,
+ 'type': 'dict',
+ 'schema': {
+ 'login': {'type': 'string', 'required': True},
+ 'password': {'type': 'string', 'required': True},
+ }
}
}
@@ -94,6 +107,7 @@ class IpcamConfig(ConfigUnit):
}
}
+ # FIXME
def get_all_cam_names(self,
filter_by_server: Optional[str] = None,
filter_by_disk: Optional[int] = None) -> list[int]:
@@ -106,25 +120,22 @@ class IpcamConfig(ConfigUnit):
cams.append(int(cam))
return cams
- def get_all_cam_names_for_this_server(self,
- filter_by_disk: Optional[int] = None):
- return self.get_all_cam_names(filter_by_server=socket.gethostname(),
- filter_by_disk=filter_by_disk)
+ # def get_all_cam_names_for_this_server(self,
+ # filter_by_disk: Optional[int] = None):
+ # return self.get_all_cam_names(filter_by_server=socket.gethostname(),
+ # filter_by_disk=filter_by_disk)
- def get_cam_server_and_disk(self, cam: int) -> tuple[str, int]:
- return self['cams'][cam]['server'], self['cams'][cam]['disk']
+ # def get_cam_server_and_disk(self, cam: int) -> tuple[str, int]:
+ # return self['cams'][cam]['server'], self['cams'][cam]['disk']
- def get_camera_container(self, cam: int) -> VideoContainerType:
- return VideoContainerType(self['cams'][cam]['container'])
+ def get_camera_container(self, camera: int) -> VideoContainerType:
+ return self.get_camera_type(camera).get_container()
- def get_camera_type(self, cam: int) -> CameraType:
- return CameraType(self['cams'][cam]['type'])
+ def get_camera_type(self, camera: int) -> CameraType:
+ return CameraType(self['cams'][camera]['type'])
def get_rtsp_creds(self) -> tuple[str, str]:
return self['rtsp_creds']['login'], self['rtsp_creds']['password']
- def should_use_tcp_for_rtsp(self, cam: int) -> bool:
- return 'rtsp_tcp' in self['cams'][cam] and self['cams'][cam]['rtsp_tcp']
-
def get_camera_ip(self, camera: int) -> str:
- return f'192.168.5.{camera}'
+ return self['camera_ip_template'] % (str(camera),)