Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2ac16b12c1 | |||
| 44a98fb77a | |||
| 03d93bea34 | |||
| 9dbac9b033 | |||
| 9e86f0498b | |||
| 0d0d5c8c2c | |||
| c7d5f7698e | |||
| 9bbd61cbe4 | |||
| 7a7a164cb8 | |||
| 8379567636 | |||
| 9e59fc5d05 | |||
| 366e270e94 | |||
| f918d62571 | |||
| 18ce5092b4 | |||
| 7f7372198a | |||
| abe61c5529 | |||
| b231fa2616 | |||
| 336289d7e7 | |||
| 7a5e828f6b |
@@ -3,7 +3,7 @@
|
||||
|
||||
**Related issue (if applicable):** fixes #<home-assistant issue number goes here>
|
||||
|
||||
**Pull request in [home-assistant.github.io](https://github.com/home-assistant/home-assistant.github.io) with documentation (if applicable):** home-assistant/home-assistant.github.io#<home-assistant.github.io PR number goes here>
|
||||
**Pull request in [home-assistant.io](https://github.com/home-assistant/home-assistant.io) with documentation (if applicable):** home-assistant/home-assistant.io#<home-assistant.io PR number goes here>
|
||||
|
||||
## Example entry for `configuration.yaml` (if applicable):
|
||||
```yaml
|
||||
@@ -15,7 +15,7 @@
|
||||
- [ ] Local tests pass with `tox`. **Your PR cannot be merged unless tests pass**
|
||||
|
||||
If user exposed functionality or configuration variables are added/changed:
|
||||
- [ ] Documentation added/updated in [home-assistant.github.io](https://github.com/home-assistant/home-assistant.github.io)
|
||||
- [ ] Documentation added/updated in [home-assistant.io](https://github.com/home-assistant/home-assistant.io)
|
||||
|
||||
If the code communicates with devices, web services, or third-party tools:
|
||||
- [ ] New dependencies have been added to the `REQUIREMENTS` variable ([example][ex-requir]).
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"mfa_setup": {
|
||||
"totp": {
|
||||
"error": {
|
||||
"invalid_code": "Code invalide. S'il vous pla\u00eet essayez \u00e0 nouveau. Si cette erreur persiste, assurez-vous que l'horloge de votre syst\u00e8me Home Assistant est correcte."
|
||||
"invalid_code": "Code invalide. Veuillez essayez \u00e0 nouveau. Si cette erreur persiste, assurez-vous que l'horloge de votre syst\u00e8me Home Assistant est correcte."
|
||||
},
|
||||
"step": {
|
||||
"init": {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "No s'han trobat dispositius de Google Cast a la xarxa.",
|
||||
"single_instance_allowed": "Nom\u00e9s cal una \u00fanica configuraci\u00f3 de Google Cast."
|
||||
"single_instance_allowed": "Nom\u00e9s cal una sola configuraci\u00f3 de Google Cast."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "Aucun appareil Google Cast trouv\u00e9 sur le r\u00e9seau.",
|
||||
"single_instance_allowed": "Seulement une seule configuration de Google Cast est n\u00e9cessaire."
|
||||
"single_instance_allowed": "Une seule configuration de Google Cast est n\u00e9cessaire."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
|
||||
@@ -6,35 +6,25 @@ https://home-assistant.io/components/device_tracker.bluetooth_le_tracker/
|
||||
"""
|
||||
import logging
|
||||
|
||||
import voluptuous as vol
|
||||
from homeassistant.helpers.event import track_point_in_utc_time
|
||||
from homeassistant.components.device_tracker import (
|
||||
YAML_DEVICES, CONF_TRACK_NEW, CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL,
|
||||
PLATFORM_SCHEMA, load_config, SOURCE_TYPE_BLUETOOTH_LE
|
||||
load_config, SOURCE_TYPE_BLUETOOTH_LE
|
||||
)
|
||||
import homeassistant.util.dt as dt_util
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
REQUIREMENTS = ['gattlib==0.20150805']
|
||||
REQUIREMENTS = ['pygatt==3.2.0']
|
||||
|
||||
BLE_PREFIX = 'BLE_'
|
||||
MIN_SEEN_NEW = 5
|
||||
CONF_SCAN_DURATION = 'scan_duration'
|
||||
CONF_BLUETOOTH_DEVICE = 'device_id'
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Optional(CONF_SCAN_DURATION, default=10): cv.positive_int,
|
||||
vol.Optional(CONF_BLUETOOTH_DEVICE, default='hci0'): cv.string
|
||||
})
|
||||
|
||||
|
||||
def setup_scanner(hass, config, see, discovery_info=None):
|
||||
"""Set up the Bluetooth LE Scanner."""
|
||||
# pylint: disable=import-error
|
||||
from gattlib import DiscoveryService
|
||||
|
||||
import pygatt
|
||||
new_devices = {}
|
||||
|
||||
def see_device(address, name, new_device=False):
|
||||
@@ -61,17 +51,17 @@ def setup_scanner(hass, config, see, discovery_info=None):
|
||||
"""Discover Bluetooth LE devices."""
|
||||
_LOGGER.debug("Discovering Bluetooth LE devices")
|
||||
try:
|
||||
service = DiscoveryService(ble_dev_id)
|
||||
devices = service.discover(duration)
|
||||
adapter = pygatt.GATTToolBackend()
|
||||
devs = adapter.scan()
|
||||
|
||||
devices = {x['address']: x['name'] for x in devs}
|
||||
_LOGGER.debug("Bluetooth LE devices discovered = %s", devices)
|
||||
except RuntimeError as error:
|
||||
_LOGGER.error("Error during Bluetooth LE scan: %s", error)
|
||||
devices = []
|
||||
return {}
|
||||
return devices
|
||||
|
||||
yaml_path = hass.config.path(YAML_DEVICES)
|
||||
duration = config.get(CONF_SCAN_DURATION)
|
||||
ble_dev_id = config.get(CONF_BLUETOOTH_DEVICE)
|
||||
devs_to_track = []
|
||||
devs_donot_track = []
|
||||
|
||||
@@ -102,11 +92,11 @@ def setup_scanner(hass, config, see, discovery_info=None):
|
||||
"""Lookup Bluetooth LE devices and update status."""
|
||||
devs = discover_ble_devices()
|
||||
for mac in devs_to_track:
|
||||
_LOGGER.debug("Checking %s", mac)
|
||||
result = mac in devs
|
||||
if not result:
|
||||
# Could not lookup device name
|
||||
if mac not in devs:
|
||||
continue
|
||||
|
||||
if devs[mac] is None:
|
||||
devs[mac] = mac
|
||||
see_device(mac, devs[mac])
|
||||
|
||||
if track_new:
|
||||
@@ -119,5 +109,4 @@ def setup_scanner(hass, config, see, discovery_info=None):
|
||||
track_point_in_utc_time(hass, update_ble, dt_util.utcnow() + interval)
|
||||
|
||||
update_ble(dt_util.utcnow())
|
||||
|
||||
return True
|
||||
|
||||
@@ -80,7 +80,7 @@ def setup_scanner(hass, config, see, discovery_info=None):
|
||||
|
||||
request_rssi = config.get(CONF_REQUEST_RSSI, False)
|
||||
|
||||
def update_bluetooth():
|
||||
def update_bluetooth(_):
|
||||
"""Update Bluetooth and set timer for the next update."""
|
||||
update_bluetooth_once()
|
||||
track_point_in_utc_time(
|
||||
@@ -111,7 +111,7 @@ def setup_scanner(hass, config, see, discovery_info=None):
|
||||
"""Update bluetooth devices on demand."""
|
||||
update_bluetooth_once()
|
||||
|
||||
update_bluetooth()
|
||||
update_bluetooth(dt_util.utcnow())
|
||||
|
||||
hass.services.register(
|
||||
DOMAIN, "bluetooth_tracker_update", handle_update_bluetooth)
|
||||
|
||||
@@ -21,7 +21,7 @@ from homeassistant.helpers.event import async_track_point_in_utc_time
|
||||
from homeassistant.helpers.discovery import async_load_platform, async_discover
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
REQUIREMENTS = ['netdisco==2.0.0']
|
||||
REQUIREMENTS = ['netdisco==2.1.0']
|
||||
|
||||
DOMAIN = 'discovery'
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ from homeassistant.helpers.translation import async_get_translations
|
||||
from homeassistant.loader import bind_hass
|
||||
from homeassistant.util.yaml import load_yaml
|
||||
|
||||
REQUIREMENTS = ['home-assistant-frontend==20180912.0']
|
||||
REQUIREMENTS = ['home-assistant-frontend==20180916.0']
|
||||
|
||||
DOMAIN = 'frontend'
|
||||
DEPENDENCIES = ['api', 'websocket_api', 'http', 'system_log',
|
||||
|
||||
@@ -5,10 +5,15 @@
|
||||
"unknown": "Une erreur inconnue s'est produite"
|
||||
},
|
||||
"error": {
|
||||
"invalid_2fa": "Authentification \u00e0 2 facteurs invalide, veuillez r\u00e9essayer.",
|
||||
"invalid_2fa_method": "M\u00e9thode 2FA non valide (v\u00e9rifiez sur le t\u00e9l\u00e9phone).",
|
||||
"invalid_login": "Login invalide, veuillez r\u00e9essayer."
|
||||
},
|
||||
"step": {
|
||||
"2fa": {
|
||||
"data": {
|
||||
"2fa": "Code PIN d'authentification \u00e0 2 facteurs"
|
||||
},
|
||||
"title": "Authentification \u00e0 2 facteurs"
|
||||
},
|
||||
"user": {
|
||||
|
||||
@@ -4,12 +4,13 @@
|
||||
"already_configured": "Le point d'acc\u00e8s est d\u00e9j\u00e0 configur\u00e9",
|
||||
"conection_aborted": "Impossible de se connecter au serveur HMIP",
|
||||
"connection_aborted": "Impossible de se connecter au serveur HMIP",
|
||||
"unknown": "Une erreur inconnue s'est produite"
|
||||
"unknown": "Une erreur inconnue s'est produite."
|
||||
},
|
||||
"error": {
|
||||
"invalid_pin": "Code PIN invalide, veuillez r\u00e9essayer.",
|
||||
"press_the_button": "Veuillez appuyer sur le bouton bleu.",
|
||||
"register_failed": "\u00c9chec d'enregistrement. Veuillez r\u00e9essayer."
|
||||
"register_failed": "\u00c9chec d'enregistrement. Veuillez r\u00e9essayer.",
|
||||
"timeout_button": "D\u00e9lai d'attente expir\u00e9, veuillez r\u00e9\u00e9ssayer."
|
||||
},
|
||||
"step": {
|
||||
"init": {
|
||||
@@ -17,8 +18,14 @@
|
||||
"hapid": "ID du point d'acc\u00e8s (SGTIN)",
|
||||
"name": "Nom (facultatif, utilis\u00e9 comme pr\u00e9fixe de nom pour tous les p\u00e9riph\u00e9riques)",
|
||||
"pin": "Code PIN (facultatif)"
|
||||
}
|
||||
},
|
||||
"title": "Choisissez le point d'acc\u00e8s HomematicIP"
|
||||
},
|
||||
"link": {
|
||||
"description": "Appuyez sur le bouton bleu du point d'acc\u00e8s et sur le bouton Envoyer pour enregistrer HomematicIP avec Home Assistant. \n\n ",
|
||||
"title": "Lier le point d'acc\u00e8s"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "HomematicIP Cloud"
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,6 @@
|
||||
"title": "Hub de liaison"
|
||||
}
|
||||
},
|
||||
"title": "Pont Philips Hue"
|
||||
"title": "Philips Hue"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Nom\u00e9s cal una sola configuraci\u00f3 de Home Assistant iOS."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Voleu configurar el component Home Assistant iOS?",
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
},
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"confirm": {
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
},
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Seule une configuration de Home Assistant iOS est n\u00e9cessaire."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Voulez-vous configurer le composant Home Assistant iOS?",
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
},
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 Home Assistant iOS \uad6c\uc131\ub9cc \ud544\uc694\ud569\ub2c8\ub2e4."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Home Assistant iOS \ucef4\ud3ec\ub10c\ud2b8\uc758 \uc124\uc815\uc744 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
},
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Er is slechts \u00e9\u00e9n configuratie van Home Assistant iOS nodig."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Wilt u het Home Assistant iOS component instellen?",
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
},
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Wymagana jest tylko jedna konfiguracja Home Assistant iOS."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Czy chcesz skonfigurowa\u0107 Home Assistant iOS?",
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
},
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Home Assistant iOS \u53ea\u9700\u8981\u914d\u7f6e\u4e00\u6b21\u3002"
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "\u662f\u5426\u8981\u8bbe\u7f6e Home Assistant iOS \u7ec4\u4ef6\uff1f",
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
},
|
||||
"title": "Home Assistant iOS"
|
||||
}
|
||||
}
|
||||
@@ -62,6 +62,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
})
|
||||
|
||||
CONNECTION_RETRY = 3
|
||||
CONNECTION_RETRY_WAIT = 2
|
||||
CONNECTION_TIMEOUT = 10
|
||||
|
||||
|
||||
@attr.s(slots=True, frozen=True)
|
||||
class ChromecastInfo:
|
||||
@@ -365,19 +369,18 @@ class CastDevice(MediaPlayerDevice):
|
||||
|
||||
if self._chromecast is not None:
|
||||
if old_cast_info.host_port == cast_info.host_port:
|
||||
# Nothing connection-related updated
|
||||
_LOGGER.debug("No connection related update: %s",
|
||||
cast_info.host_port)
|
||||
return
|
||||
await self._async_disconnect()
|
||||
|
||||
# Failed connection will unfortunately never raise an exception, it
|
||||
# will instead just try connecting indefinitely.
|
||||
# pylint: disable=protected-access
|
||||
_LOGGER.debug("Connecting to cast device %s", cast_info)
|
||||
chromecast = await self.hass.async_add_job(
|
||||
pychromecast._get_chromecast_from_host, (
|
||||
cast_info.host, cast_info.port, cast_info.uuid,
|
||||
cast_info.model_name, cast_info.friendly_name
|
||||
))
|
||||
), CONNECTION_RETRY, CONNECTION_RETRY_WAIT, CONNECTION_TIMEOUT)
|
||||
self._chromecast = chromecast
|
||||
self._status_listener = CastStatusListener(self, chromecast)
|
||||
# Initialise connection status as connected because we can only
|
||||
@@ -401,7 +404,12 @@ class CastDevice(MediaPlayerDevice):
|
||||
|
||||
await self.hass.async_add_job(self._chromecast.disconnect)
|
||||
|
||||
# Invalidate some attributes
|
||||
self._invalidate()
|
||||
|
||||
self.async_schedule_update_ha_state()
|
||||
|
||||
def _invalidate(self):
|
||||
"""Invalidate some attributes."""
|
||||
self._chromecast = None
|
||||
self.cast_status = None
|
||||
self.media_status = None
|
||||
@@ -410,8 +418,6 @@ class CastDevice(MediaPlayerDevice):
|
||||
self._status_listener.invalidate()
|
||||
self._status_listener = None
|
||||
|
||||
self.async_schedule_update_ha_state()
|
||||
|
||||
# ========== Callbacks ==========
|
||||
def new_cast_status(self, cast_status):
|
||||
"""Handle updates of the cast status."""
|
||||
@@ -426,7 +432,16 @@ class CastDevice(MediaPlayerDevice):
|
||||
|
||||
def new_connection_status(self, connection_status):
|
||||
"""Handle updates of connection status."""
|
||||
from pychromecast.socket_client import CONNECTION_STATUS_CONNECTED
|
||||
from pychromecast.socket_client import CONNECTION_STATUS_CONNECTED, \
|
||||
CONNECTION_STATUS_DISCONNECTED
|
||||
|
||||
_LOGGER.debug("Received cast device connection status: %s",
|
||||
connection_status.status)
|
||||
if connection_status.status == CONNECTION_STATUS_DISCONNECTED:
|
||||
self._available = False
|
||||
self._invalidate()
|
||||
self.schedule_update_ha_state()
|
||||
return
|
||||
|
||||
new_available = connection_status.status == CONNECTION_STATUS_CONNECTED
|
||||
if new_available != self._available:
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Nom\u00e9s es permet una \u00fanica configuraci\u00f3 de MQTT."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "No es pot connectar amb el broker."
|
||||
},
|
||||
"step": {
|
||||
"broker": {
|
||||
"data": {
|
||||
"broker": "Broker",
|
||||
"password": "Contrasenya",
|
||||
"port": "Port",
|
||||
"username": "Nom d'usuari"
|
||||
},
|
||||
"description": "Introdu\u00efu la informaci\u00f3 de connexi\u00f3 del vostre broker MQTT.",
|
||||
"title": "MQTT"
|
||||
}
|
||||
},
|
||||
"title": "MQTT"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Une seule configuration de MQTT est autoris\u00e9e."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Impossible de se connecter au broker."
|
||||
},
|
||||
"step": {
|
||||
"broker": {
|
||||
"data": {
|
||||
"broker": "Broker",
|
||||
"password": "Mot de passe",
|
||||
"port": "Port",
|
||||
"username": "Nom d'utilisateur"
|
||||
},
|
||||
"description": "Veuillez entrer les informations de connexion de votre broker MQTT.",
|
||||
"title": "MQTT"
|
||||
}
|
||||
},
|
||||
"title": "MQTT"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 MQTT \ube0c\ub85c\ucee4\ub9cc \uad6c\uc131\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "MQTT \ube0c\ub85c\ucee4\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc74c"
|
||||
},
|
||||
"step": {
|
||||
"broker": {
|
||||
"data": {
|
||||
"broker": "\ube0c\ub85c\ucee4",
|
||||
"password": "\ube44\ubc00\ubc88\ud638",
|
||||
"port": "\ud3ec\ud2b8",
|
||||
"username": "\uc0ac\uc6a9\uc790 \uc774\ub984"
|
||||
},
|
||||
"description": "MQTT \ube0c\ub85c\ucee4\uc640\uc758 \uc5f0\uacb0 \uc815\ubcf4\ub97c \uc785\ub825\ud558\uc138\uc694.",
|
||||
"title": "MQTT"
|
||||
}
|
||||
},
|
||||
"title": "MQTT"
|
||||
}
|
||||
}
|
||||
@@ -2,18 +2,22 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_setup": "Vous ne pouvez configurer qu'un seul compte Nest.",
|
||||
"authorize_url_fail": "Erreur inconnue lors de la g\u00e9n\u00e9ration d'une URL d'autorisation.",
|
||||
"authorize_url_timeout": "D\u00e9lai de g\u00e9n\u00e9ration de l'URL d'authentification d\u00e9pass\u00e9.",
|
||||
"no_flows": "Vous devez configurer Nest avant de pouvoir vous authentifier avec celui-ci. [Veuillez lire les instructions] (https://www.home-assistant.io/components/nest/)."
|
||||
},
|
||||
"error": {
|
||||
"internal_error": "Erreur interne lors de la validation du code",
|
||||
"invalid_code": "Code invalide"
|
||||
"invalid_code": "Code invalide",
|
||||
"timeout": "D\u00e9lai de la validation du code expir\u00e9",
|
||||
"unknown": "Erreur inconnue lors de la validation du code"
|
||||
},
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"flow_impl": "Fournisseur"
|
||||
},
|
||||
"description": "S\u00e9lectionnez via quel fournisseur d'authentification vous souhaitez vous authentifier avec Nest.",
|
||||
"title": "Fournisseur d'authentification"
|
||||
},
|
||||
"link": {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"identifier_exists": "Co\u00f6rdinaten al geregistreerd",
|
||||
"invalid_api_key": "Ongeldige API-sleutel"
|
||||
},
|
||||
"step": {
|
||||
|
||||
@@ -182,7 +182,7 @@ class SnmpSensor(Entity):
|
||||
if value is None:
|
||||
value = STATE_UNKNOWN
|
||||
elif self._value_template is not None:
|
||||
value = self._value_template.render_with_possible_json_value(
|
||||
value = self._value_template.async_render_with_possible_json_value(
|
||||
value, STATE_UNKNOWN)
|
||||
|
||||
self._state = value
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "No s'han trobat dispositius Sonos a la xarxa.",
|
||||
"single_instance_allowed": "Nom\u00e9s cal una \u00fanica configuraci\u00f3 de Sonos."
|
||||
"single_instance_allowed": "Nom\u00e9s cal una sola configuraci\u00f3 de Sonos."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "Aucun p\u00e9riph\u00e9rique Sonos trouv\u00e9 sur le r\u00e9seau.",
|
||||
"single_instance_allowed": "Seulement une seule configuration de Sonos est n\u00e9cessaire."
|
||||
"single_instance_allowed": "Une seule configuration de Sonos est n\u00e9cessaire."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
|
||||
@@ -12,7 +12,7 @@ import voluptuous as vol
|
||||
from homeassistant import util
|
||||
from homeassistant.const import (EVENT_HOMEASSISTANT_STOP, __version__)
|
||||
|
||||
REQUIREMENTS = ['zeroconf==0.20.0']
|
||||
REQUIREMENTS = ['zeroconf==0.21.2']
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"""Constants used by Home Assistant components."""
|
||||
MAJOR_VERSION = 0
|
||||
MINOR_VERSION = 78
|
||||
PATCH_VERSION = '0b2'
|
||||
PATCH_VERSION = '2'
|
||||
__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION)
|
||||
__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION)
|
||||
REQUIRED_PYTHON_VER = (3, 5, 3)
|
||||
|
||||
@@ -385,9 +385,6 @@ fritzhome==1.0.4
|
||||
# homeassistant.components.tts.google
|
||||
gTTS-token==1.1.1
|
||||
|
||||
# homeassistant.components.device_tracker.bluetooth_le_tracker
|
||||
# gattlib==0.20150805
|
||||
|
||||
# homeassistant.components.sensor.gearbest
|
||||
gearbest_parser==1.0.7
|
||||
|
||||
@@ -452,7 +449,7 @@ hole==0.3.0
|
||||
holidays==0.9.6
|
||||
|
||||
# homeassistant.components.frontend
|
||||
home-assistant-frontend==20180912.0
|
||||
home-assistant-frontend==20180916.0
|
||||
|
||||
# homeassistant.components.homekit_controller
|
||||
# homekit==0.10
|
||||
@@ -614,7 +611,7 @@ ndms2_client==0.0.4
|
||||
netdata==0.1.2
|
||||
|
||||
# homeassistant.components.discovery
|
||||
netdisco==2.0.0
|
||||
netdisco==2.1.0
|
||||
|
||||
# homeassistant.components.sensor.neurio_energy
|
||||
neurio==0.3.1
|
||||
@@ -874,6 +871,7 @@ pyfritzhome==0.3.7
|
||||
# homeassistant.components.ifttt
|
||||
pyfttt==0.3
|
||||
|
||||
# homeassistant.components.device_tracker.bluetooth_le_tracker
|
||||
# homeassistant.components.sensor.skybeacon
|
||||
pygatt==3.2.0
|
||||
|
||||
@@ -1525,7 +1523,7 @@ youtube_dl==2018.09.10
|
||||
zengge==0.2
|
||||
|
||||
# homeassistant.components.zeroconf
|
||||
zeroconf==0.20.0
|
||||
zeroconf==0.21.2
|
||||
|
||||
# homeassistant.components.climate.zhong_hong
|
||||
zhong_hong_hvac==1.0.9
|
||||
|
||||
@@ -84,7 +84,7 @@ hbmqtt==0.9.4
|
||||
holidays==0.9.6
|
||||
|
||||
# homeassistant.components.frontend
|
||||
home-assistant-frontend==20180912.0
|
||||
home-assistant-frontend==20180916.0
|
||||
|
||||
# homeassistant.components.homematicip_cloud
|
||||
homematicip==0.9.8
|
||||
|
||||
@@ -19,7 +19,6 @@ COMMENT_REQUIREMENTS = (
|
||||
'bluepy',
|
||||
'opencv-python',
|
||||
'python-lirc',
|
||||
'gattlib',
|
||||
'pyuserinput',
|
||||
'evdev',
|
||||
'pycups',
|
||||
|
||||
Reference in New Issue
Block a user