Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """Support for Mythic Beasts Dynamic DNS service."""
2 
3 from datetime import timedelta
4 
5 import mbddns
6 import voluptuous as vol
7 
8 from homeassistant.const import (
9  CONF_DOMAIN,
10  CONF_HOST,
11  CONF_PASSWORD,
12  CONF_SCAN_INTERVAL,
13 )
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers.aiohttp_client import async_get_clientsession
17 from homeassistant.helpers.event import async_track_time_interval
18 from homeassistant.helpers.typing import ConfigType
19 
20 DOMAIN = "mythicbeastsdns"
21 
22 DEFAULT_INTERVAL = timedelta(minutes=10)
23 
24 CONFIG_SCHEMA = vol.Schema(
25  {
26  DOMAIN: vol.Schema(
27  {
28  vol.Required(CONF_DOMAIN): cv.string,
29  vol.Required(CONF_HOST): cv.string,
30  vol.Required(CONF_PASSWORD): cv.string,
31  vol.Optional(CONF_SCAN_INTERVAL, default=DEFAULT_INTERVAL): vol.All(
32  cv.time_period, cv.positive_timedelta
33  ),
34  }
35  )
36  },
37  extra=vol.ALLOW_EXTRA,
38 )
39 
40 
41 async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
42  """Initialize the Mythic Beasts component."""
43  domain = config[DOMAIN][CONF_DOMAIN]
44  password = config[DOMAIN][CONF_PASSWORD]
45  host = config[DOMAIN][CONF_HOST]
46  update_interval = config[DOMAIN][CONF_SCAN_INTERVAL]
47 
48  session = async_get_clientsession(hass)
49 
50  result = await mbddns.update(domain, password, host, session=session)
51 
52  if not result:
53  return False
54 
55  async def update_domain_interval(now):
56  """Update the DNS entry."""
57  await mbddns.update(domain, password, host, session=session)
58 
59  async_track_time_interval(hass, update_domain_interval, update_interval)
60 
61  return True
bool async_setup(HomeAssistant hass, ConfigType config)
Definition: __init__.py:41
aiohttp.ClientSession async_get_clientsession(HomeAssistant hass, bool verify_ssl=True, socket.AddressFamily family=socket.AF_UNSPEC, ssl_util.SSLCipherList ssl_cipher=ssl_util.SSLCipherList.PYTHON_DEFAULT)
CALLBACK_TYPE async_track_time_interval(HomeAssistant hass, Callable[[datetime], Coroutine[Any, Any, None]|None] action, timedelta interval, *str|None name=None, bool|None cancel_on_shutdown=None)
Definition: event.py:1679