mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-06-24 10:56:30 +00:00
Try to fetch timezone on startup (#70)
This commit is contained in:
parent
544c009b9c
commit
df7d988d2f
@ -20,7 +20,7 @@ from .dock.supervisor import DockerSupervisor
|
|||||||
from .tasks import (
|
from .tasks import (
|
||||||
hassio_update, homeassistant_watchdog, homeassistant_setup,
|
hassio_update, homeassistant_watchdog, homeassistant_setup,
|
||||||
api_sessions_cleanup)
|
api_sessions_cleanup)
|
||||||
from .tools import get_arch_from_image, get_local_ip
|
from .tools import get_arch_from_image, get_local_ip, fetch_timezone
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -60,13 +60,17 @@ class HassIO(object):
|
|||||||
# set api endpoint
|
# set api endpoint
|
||||||
self.config.api_endpoint = await get_local_ip(self.loop)
|
self.config.api_endpoint = await get_local_ip(self.loop)
|
||||||
|
|
||||||
|
# update timezone
|
||||||
|
if self.config.timezone == 'UTC':
|
||||||
|
self.config.timezone = await fetch_timezone(self.websession)
|
||||||
|
|
||||||
# hostcontrol
|
# hostcontrol
|
||||||
await self.host_control.load()
|
await self.host_control.load()
|
||||||
|
|
||||||
# schedule update info tasks
|
# schedule update info tasks
|
||||||
self.scheduler.register_task(
|
self.scheduler.register_task(
|
||||||
self.host_control.load, RUN_UPDATE_INFO_TASKS)
|
|
||||||
|
|
||||||
|
self.host_control.load, RUN_UPDATE_INFO_TASKS)
|
||||||
# rest api views
|
# rest api views
|
||||||
self.api.register_host(self.host_control)
|
self.api.register_host(self.host_control)
|
||||||
self.api.register_network(self.host_control)
|
self.api.register_network(self.host_control)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
"""Tools file for HassIO."""
|
"""Tools file for HassIO."""
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from contextlib import suppress
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
@ -14,6 +15,8 @@ from .const import URL_HASSIO_VERSION, URL_HASSIO_VERSION_BETA
|
|||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
FREEGEOIP_URL = "https://freegeoip.io/json/"
|
||||||
|
|
||||||
_RE_VERSION = re.compile(r"VERSION=(.*)")
|
_RE_VERSION = re.compile(r"VERSION=(.*)")
|
||||||
_IMAGE_ARCH = re.compile(r".*/([a-z0-9]*)-hassio-supervisor")
|
_IMAGE_ARCH = re.compile(r".*/([a-z0-9]*)-hassio-supervisor")
|
||||||
|
|
||||||
@ -105,3 +108,15 @@ def validate_timezone(timezone):
|
|||||||
from None
|
from None
|
||||||
|
|
||||||
return timezone
|
return timezone
|
||||||
|
|
||||||
|
|
||||||
|
async def fetch_timezone(websession):
|
||||||
|
"""Read timezone from freegeoip."""
|
||||||
|
data = {}
|
||||||
|
with suppress(aiohttp.ClientError, asyncio.TimeoutError,
|
||||||
|
json.JSONDecodeError, KeyError):
|
||||||
|
with async_timeout.timeout(10, loop=websession.loop):
|
||||||
|
async with websession.get(FREEGEOIP_URL) as request:
|
||||||
|
data = await request.json()
|
||||||
|
|
||||||
|
return data.get('time_zone', 'UTC')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user