Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """The rpi_camera component."""
2 
3 import voluptuous as vol
4 
5 from homeassistant.const import CONF_FILE_PATH, CONF_NAME, Platform
6 from homeassistant.core import HomeAssistant
7 from homeassistant.helpers import config_validation as cv, discovery
8 from homeassistant.helpers.typing import ConfigType
9 
10 from .const import (
11  CONF_HORIZONTAL_FLIP,
12  CONF_IMAGE_HEIGHT,
13  CONF_IMAGE_QUALITY,
14  CONF_IMAGE_ROTATION,
15  CONF_IMAGE_WIDTH,
16  CONF_OVERLAY_METADATA,
17  CONF_OVERLAY_TIMESTAMP,
18  CONF_TIMELAPSE,
19  CONF_VERTICAL_FLIP,
20  DEFAULT_HORIZONTAL_FLIP,
21  DEFAULT_IMAGE_HEIGHT,
22  DEFAULT_IMAGE_QUALITY,
23  DEFAULT_IMAGE_ROTATION,
24  DEFAULT_IMAGE_WIDTH,
25  DEFAULT_NAME,
26  DEFAULT_TIMELAPSE,
27  DEFAULT_VERTICAL_FLIP,
28  DOMAIN,
29 )
30 
31 CONFIG_SCHEMA = vol.Schema(
32  {
33  DOMAIN: vol.Schema(
34  {
35  vol.Optional(CONF_FILE_PATH): cv.isfile,
36  vol.Optional(
37  CONF_HORIZONTAL_FLIP, default=DEFAULT_HORIZONTAL_FLIP
38  ): vol.All(vol.Coerce(int), vol.Range(min=0, max=1)),
39  vol.Optional(
40  CONF_IMAGE_HEIGHT, default=DEFAULT_IMAGE_HEIGHT
41  ): vol.Coerce(int),
42  vol.Optional(
43  CONF_IMAGE_QUALITY, default=DEFAULT_IMAGE_QUALITY
44  ): vol.All(vol.Coerce(int), vol.Range(min=0, max=100)),
45  vol.Optional(
46  CONF_IMAGE_ROTATION, default=DEFAULT_IMAGE_ROTATION
47  ): vol.All(vol.Coerce(int), vol.Range(min=0, max=359)),
48  vol.Optional(CONF_IMAGE_WIDTH, default=DEFAULT_IMAGE_WIDTH): vol.Coerce(
49  int
50  ),
51  vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
52  vol.Optional(CONF_OVERLAY_METADATA): vol.All(
53  vol.Coerce(int), vol.Range(min=4, max=2056)
54  ),
55  vol.Optional(CONF_OVERLAY_TIMESTAMP): cv.string,
56  vol.Optional(CONF_TIMELAPSE, default=DEFAULT_TIMELAPSE): vol.Coerce(
57  int
58  ),
59  vol.Optional(
60  CONF_VERTICAL_FLIP, default=DEFAULT_VERTICAL_FLIP
61  ): vol.All(vol.Coerce(int), vol.Range(min=0, max=1)),
62  }
63  )
64  },
65  extra=vol.ALLOW_EXTRA,
66 )
67 
68 
69 def setup(hass: HomeAssistant, config: ConfigType) -> bool:
70  """Set up the rpi_camera integration."""
71  config_domain = config[DOMAIN]
72  hass.data[DOMAIN] = {
73  CONF_FILE_PATH: config_domain.get(CONF_FILE_PATH),
74  CONF_HORIZONTAL_FLIP: config_domain.get(CONF_HORIZONTAL_FLIP),
75  CONF_IMAGE_WIDTH: config_domain.get(CONF_IMAGE_WIDTH),
76  CONF_IMAGE_HEIGHT: config_domain.get(CONF_IMAGE_HEIGHT),
77  CONF_IMAGE_QUALITY: config_domain.get(CONF_IMAGE_QUALITY),
78  CONF_IMAGE_ROTATION: config_domain.get(CONF_IMAGE_ROTATION),
79  CONF_NAME: config_domain.get(CONF_NAME),
80  CONF_OVERLAY_METADATA: config_domain.get(CONF_OVERLAY_METADATA),
81  CONF_OVERLAY_TIMESTAMP: config_domain.get(CONF_OVERLAY_TIMESTAMP),
82  CONF_TIMELAPSE: config_domain.get(CONF_TIMELAPSE),
83  CONF_VERTICAL_FLIP: config_domain.get(CONF_VERTICAL_FLIP),
84  }
85 
86  discovery.load_platform(hass, Platform.CAMERA, DOMAIN, {}, config)
87 
88  return True
bool setup(HomeAssistant hass, ConfigType config)
Definition: __init__.py:69