mirror of
https://github.com/home-assistant/core.git
synced 2026-01-05 23:35:24 +01:00
Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
becc120ad9 | ||
|
|
ade4e36da7 | ||
|
|
38f9559348 | ||
|
|
d974e64a8b | ||
|
|
6f20a4a181 | ||
|
|
6b2a006fea | ||
|
|
88c755518f | ||
|
|
e2475e67c6 | ||
|
|
d891810e95 | ||
|
|
98bff965f5 | ||
|
|
d391b87227 | ||
|
|
5f7711e7a6 | ||
|
|
3bf1cf4f85 | ||
|
|
6d9aafd3b0 | ||
|
|
81a2fb9615 | ||
|
|
405062d2df | ||
|
|
50144e883e | ||
|
|
e7e0f049d1 | ||
|
|
dad0109eca | ||
|
|
1e23019df8 | ||
|
|
0bb83e5b7c | ||
|
|
aca1c5a5f8 | ||
|
|
a3d048e9c0 | ||
|
|
66d938fcea | ||
|
|
72d805d458 | ||
|
|
1a2e6eae8e | ||
|
|
d634ed0bbb | ||
|
|
bdbeb1d68f | ||
|
|
e8314e1d86 | ||
|
|
bf424caf4a | ||
|
|
996af94bb8 | ||
|
|
f47055a1b0 | ||
|
|
e416e0a9e9 | ||
|
|
fd690db01f | ||
|
|
e03df37417 | ||
|
|
3f232f3dbd | ||
|
|
28a4af89d9 | ||
|
|
77cec174b8 | ||
|
|
511366f329 | ||
|
|
e4d320d5f5 | ||
|
|
79fdac6674 | ||
|
|
73535200c2 | ||
|
|
f3de26444e |
10
build.json
10
build.json
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"image": "homeassistant/{arch}-homeassistant",
|
||||
"build_from": {
|
||||
"aarch64": "homeassistant/aarch64-homeassistant-base:7.1.0",
|
||||
"armhf": "homeassistant/armhf-homeassistant-base:7.1.0",
|
||||
"armv7": "homeassistant/armv7-homeassistant-base:7.1.0",
|
||||
"amd64": "homeassistant/amd64-homeassistant-base:7.1.0",
|
||||
"i386": "homeassistant/i386-homeassistant-base:7.1.0"
|
||||
"aarch64": "homeassistant/aarch64-homeassistant-base:7.2.0",
|
||||
"armhf": "homeassistant/armhf-homeassistant-base:7.2.0",
|
||||
"armv7": "homeassistant/armv7-homeassistant-base:7.2.0",
|
||||
"amd64": "homeassistant/amd64-homeassistant-base:7.2.0",
|
||||
"i386": "homeassistant/i386-homeassistant-base:7.2.0"
|
||||
},
|
||||
"labels": {
|
||||
"io.hass.type": "core"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 Abode \ub9cc \uad6c\uc131 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 Abode \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "Abode \uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"adguard_home_addon_outdated": "\uc774 \ud1b5\ud569 \uad6c\uc131\uc694\uc18c\ub294 AdGuard Home {minimal_version} \uc774\uc0c1\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \ud604\uc7ac \ubc84\uc804\uc740 {current_version} \uc785\ub2c8\ub2e4. Hass.io AdGuard Home \uc560\ub4dc\uc628\uc744 \uc5c5\ub370\uc774\ud2b8 \ud574\uc8fc\uc138\uc694.",
|
||||
"adguard_home_outdated": "\uc774 \ud1b5\ud569 \uad6c\uc131\uc694\uc18c\ub294 AdGuard Home {minimal_version} \uc774\uc0c1\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \ud604\uc7ac \ubc84\uc804\uc740 {current_version} \uc785\ub2c8\ub2e4.",
|
||||
"existing_instance_updated": "\uae30\uc874 \uad6c\uc131\uc744 \uc5c5\ub370\uc774\ud2b8\ud588\uc2b5\ub2c8\ub2e4.",
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 AdGuard Home \ub9cc \uad6c\uc131 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 AdGuard Home \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"password": "Has\u0142o",
|
||||
"port": "Port",
|
||||
"ssl": "AdGuard Home u\u017cywa certyfikatu SSL",
|
||||
|
||||
@@ -4,15 +4,37 @@
|
||||
"already_configured": "Aquesta clau API ja est\u00e0 sent utilitzada."
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "Clau API inv\u00e0lida"
|
||||
"general_error": "S'ha produ\u00eft un error desconegut.",
|
||||
"invalid_api_key": "Clau API inv\u00e0lida",
|
||||
"unable_to_connect": "No s'ha pogut connectar a la unitat Node/Pro."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "Clau API",
|
||||
"latitude": "Latitud",
|
||||
"longitude": "Longitud"
|
||||
},
|
||||
"description": "Utilitza l'API d'AirVisual per monitoritzar una ubicaci\u00f3 geogr\u00e0fica.",
|
||||
"title": "Configuraci\u00f3 localitzaci\u00f3 geogr\u00e0fica"
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "Adre\u00e7a IP o amfitri\u00f3 de la unitat",
|
||||
"password": "Contrasenya de la unitat"
|
||||
},
|
||||
"description": "Monitoritza una unitat personal d'AirVisual. Pots obtenir la contrasenya des de la interf\u00edcie d'usuari (UI) de la unitat.",
|
||||
"title": "Configuraci\u00f3 d'AirVisual Node/Pro"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "Clau API",
|
||||
"cloud_api": "Ubicaci\u00f3 geogr\u00e0fica",
|
||||
"latitude": "Latitud",
|
||||
"longitude": "Longitud",
|
||||
"node_pro": "AirVisual Node Pro",
|
||||
"type": "Tipus d'integraci\u00f3"
|
||||
},
|
||||
"description": "Monitoritzaci\u00f3 de la qualitat de l'aire per ubicaci\u00f3 geogr\u00e0fica.",
|
||||
"title": "Configura AirVisual"
|
||||
}
|
||||
|
||||
@@ -1,19 +1,39 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Diese Koordinaten wurden bereits registriert."
|
||||
"already_configured": "Diese Koordinaten oder Node/Pro ID sind bereits registriert."
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel"
|
||||
"general_error": "Es gab einen unbekannten Fehler.",
|
||||
"invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel bereitgestellt.",
|
||||
"unable_to_connect": "Verbindung zum Node/Pro-Ger\u00e4t nicht m\u00f6glich."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "API-Schl\u00fcssel",
|
||||
"latitude": "Breitengrad",
|
||||
"longitude": "L\u00e4ngengrad"
|
||||
}
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "IP-Adresse/Hostname des Ger\u00e4ts",
|
||||
"password": "Ger\u00e4tekennwort"
|
||||
},
|
||||
"description": "\u00dcberwachen Sie die Luftqualit\u00e4t an einem geografischen Ort.",
|
||||
"description": "\u00dcberwachen Sie eine pers\u00f6nliche AirVisual-Einheit. Das Passwort kann von der Benutzeroberfl\u00e4che des Ger\u00e4ts abgerufen werden.",
|
||||
"title": "Konfigurieren Sie einen AirVisual Node/Pro"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API-Schl\u00fcssel",
|
||||
"cloud_api": "Geografische Position",
|
||||
"latitude": "Breitengrad",
|
||||
"longitude": "L\u00e4ngengrad",
|
||||
"node_pro": "AirVisual Node Pro",
|
||||
"type": "Integrationstyp"
|
||||
},
|
||||
"description": "W\u00e4hlen Sie aus, welche Art von AirVisual-Daten Sie \u00fcberwachen m\u00f6chten.",
|
||||
"title": "Konfigurieren Sie AirVisual"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,15 +4,37 @@
|
||||
"already_configured": "Esta clave API ya est\u00e1 en uso."
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "Clave API inv\u00e1lida"
|
||||
"general_error": "Se ha producido un error desconocido.",
|
||||
"invalid_api_key": "Clave API inv\u00e1lida",
|
||||
"unable_to_connect": "No se puede conectar a la unidad Node/Pro."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "Clave API",
|
||||
"latitude": "Latitud",
|
||||
"longitude": "Longitud"
|
||||
},
|
||||
"description": "Utilizar la API en la nube de AirVisual para monitorizar una ubicaci\u00f3n geogr\u00e1fica.",
|
||||
"title": "Configurar una Geograf\u00eda"
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "Direcci\u00f3n IP/Nombre de host de la Unidad",
|
||||
"password": "Contrase\u00f1a de la Unidad"
|
||||
},
|
||||
"description": "Monitorizar una unidad personal AirVisual. La contrase\u00f1a puede ser recuperada desde la interfaz de la unidad.",
|
||||
"title": "Configurar un AirVisual Node/Pro"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "Clave API",
|
||||
"cloud_api": "Ubicaci\u00f3n Geogr\u00e1fica",
|
||||
"latitude": "Latitud",
|
||||
"longitude": "Longitud",
|
||||
"node_pro": "AirVisual Node Pro",
|
||||
"type": "Tipo de Integraci\u00f3n"
|
||||
},
|
||||
"description": "Monitorizar la calidad del aire en una ubicaci\u00f3n geogr\u00e1fica.",
|
||||
"title": "Configurar AirVisual"
|
||||
}
|
||||
|
||||
@@ -7,6 +7,13 @@
|
||||
"invalid_api_key": "Cl\u00e9 API invalide"
|
||||
},
|
||||
"step": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "Cl\u00e9 d'API",
|
||||
"latitude": "Latitude",
|
||||
"longitude": "Longitude"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "Cl\u00e9 API",
|
||||
|
||||
34
homeassistant/components/airvisual/translations/hi.json
Normal file
34
homeassistant/components/airvisual/translations/hi.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"general_error": "\u0915\u094b\u0908 \u0905\u091c\u094d\u091e\u093e\u0924 \u0924\u094d\u0930\u0941\u091f\u093f \u0925\u0940\u0964",
|
||||
"unable_to_connect": "\u0928\u094b\u0921 / \u092a\u094d\u0930\u094b \u0907\u0915\u093e\u0908 \u0938\u0947 \u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0905\u0938\u092e\u0930\u094d\u0925\u0964"
|
||||
},
|
||||
"step": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "\u090f\u092a\u0940\u0906\u0908 \u0915\u0941\u0902\u091c\u0940",
|
||||
"latitude": "\u0905\u0915\u094d\u0937\u093e\u0902\u0936",
|
||||
"longitude": "\u0926\u0947\u0936\u093e\u0928\u094d\u0924\u0930"
|
||||
},
|
||||
"description": "\u092d\u094c\u0917\u094b\u0932\u093f\u0915 \u0938\u094d\u0925\u093f\u0924\u093f \u0915\u0940 \u0928\u093f\u0917\u0930\u093e\u0928\u0940 \u0915\u0947 \u0932\u093f\u090f \u090f\u092f\u0930\u0935\u093f\u091c\u0941\u0905\u0932 \u0915\u094d\u0932\u093e\u0909\u0921 \u090f\u092a\u0940\u0906\u0908 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902\u0964",
|
||||
"title": "\u092d\u0942\u0917\u094b\u0932 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930 \u0915\u0930\u0947\u0902"
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "\u0907\u0915\u093e\u0908 \u0915\u0947 \u0906\u0908\u092a\u0940 \u092a\u0924\u0947/\u0939\u094b\u0938\u094d\u091f\u0928\u093e\u092e",
|
||||
"password": "\u0907\u0915\u093e\u0908 \u092a\u093e\u0938\u0935\u0930\u094d\u0921"
|
||||
},
|
||||
"description": "\u090f\u0915 \u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u090f\u092f\u0930\u0935\u093f\u091c\u0941\u0905\u0932 \u0907\u0915\u093e\u0908 \u0915\u0940 \u0928\u093f\u0917\u0930\u093e\u0928\u0940 \u0915\u0930\u0947\u0902\u0964 \u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u092f\u0942\u0928\u093f\u091f \u0915\u0947 \u092f\u0942\u0906\u0908 \u0938\u0947 \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0915\u093f\u092f\u093e \u091c\u093e \u0938\u0915\u0924\u093e \u0939\u0948\u0964",
|
||||
"title": "\u090f\u092f\u0930\u0935\u093f\u091c\u0941\u0905\u0932 \u0928\u094b\u0921 \u092a\u094d\u0930\u094b"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"cloud_api": "\u092d\u094c\u0917\u094b\u0932\u093f\u0915 \u0938\u094d\u0925\u093f\u0924\u093f",
|
||||
"node_pro": "\u090f\u092f\u0930\u0935\u093f\u091c\u0941\u0905\u0932 \u0928\u094b\u0921 \u092a\u094d\u0930\u094b",
|
||||
"type": "\u090f\u0915\u0940\u0915\u0930\u0923 \u092a\u094d\u0930\u0915\u093e\u0930"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,40 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "D\u00ebs Koordinate si schon registr\u00e9iert."
|
||||
"already_configured": "D\u00ebs Koordinate oder ode/Pro ID si schon registr\u00e9iert."
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "Ong\u00ebltegen API Schl\u00ebssel"
|
||||
"general_error": "Onbekannten Feeler",
|
||||
"invalid_api_key": "Ong\u00ebltegen API Schl\u00ebssel uginn",
|
||||
"unable_to_connect": "Kann sech net mat der Node/Pri verbannen."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "API Schl\u00ebssel",
|
||||
"latitude": "Breedegrad",
|
||||
"longitude": "L\u00e4ngegrad"
|
||||
},
|
||||
"description": "Benotz Airvisual cloud API fir eng geografescher Lag z'iwwerwaachen.",
|
||||
"title": "Geografie ariichten"
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "IP Adresse / Numm vun der Unit\u00e9it",
|
||||
"password": "Passwuert vun der Unit\u00e9it"
|
||||
},
|
||||
"description": "Pers\u00e9inlech Airvisual Unit\u00e9it iwwerwaachen. Passwuert kann vum UI vum Apparat ausgelies ginn.",
|
||||
"title": "Airvisual Node/Pro ariichten"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API Schl\u00ebssel",
|
||||
"cloud_api": "Geografesche Standuert",
|
||||
"latitude": "Breedegrad",
|
||||
"longitude": "L\u00e4ngegrad",
|
||||
"node_pro": "Airvisual Node Pro",
|
||||
"type": "Typ vun der Integratioun"
|
||||
},
|
||||
"description": "Loft Qualit\u00e9it an enger geografescher Lag iwwerwaachen.",
|
||||
"title": "AirVisual konfigur\u00e9ieren"
|
||||
}
|
||||
|
||||
@@ -1,19 +1,41 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Disse koordinatene er allerede registrert."
|
||||
"already_configured": "Disse koordinatene eller Node / Pro ID er allerede registrert."
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "Ugyldig API-n\u00f8kkel"
|
||||
"general_error": "Det oppstod en ukjent feil.",
|
||||
"invalid_api_key": "Ugyldig API-n\u00f8kkel",
|
||||
"unable_to_connect": "Kan ikke koble til Node / Pro-enheten."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "API-n\u00f8kkel",
|
||||
"latitude": "Breddegrad",
|
||||
"longitude": "Lengdegrad"
|
||||
},
|
||||
"description": "Overv\u00e5k luftkvaliteten p\u00e5 et geografisk sted.",
|
||||
"description": "Bruk AirVisual cloud API til \u00e5 overv\u00e5ke en geografisk plassering.",
|
||||
"title": "Konfigurer en geografi"
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "Enhetens IP-adresse / vertsnavn",
|
||||
"password": "Passord for enhet"
|
||||
},
|
||||
"description": "Overv\u00e5ke en personlig AirVisual-enhet. Passordet kan hentes fra enhetens brukergrensesnitt.",
|
||||
"title": "Konfigurer en AirVisual Node / Pro"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API-n\u00f8kkel",
|
||||
"cloud_api": "Geografisk plassering",
|
||||
"latitude": "Breddegrad",
|
||||
"longitude": "Lengdegrad",
|
||||
"node_pro": "AirVisual Node Pro",
|
||||
"type": "Integrasjonstype"
|
||||
},
|
||||
"description": "Velg hvilken type AirVisual-data du vil overv\u00e5ke.",
|
||||
"title": "Konfigurer AirVisual"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,15 +4,36 @@
|
||||
"already_configured": "Ten klucz API jest ju\u017c w u\u017cyciu."
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "Nieprawid\u0142owy klucz API"
|
||||
"general_error": "Nieznany b\u0142\u0105d",
|
||||
"invalid_api_key": "Nieprawid\u0142owy klucz API",
|
||||
"unable_to_connect": "Nie mo\u017cna po\u0142\u0105czy\u0107 si\u0119 z jednostk\u0105 Node/Pro."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "Klucz API",
|
||||
"latitude": "Szeroko\u015b\u0107 geograficzna",
|
||||
"longitude": "D\u0142ugo\u015b\u0107 geograficzna"
|
||||
},
|
||||
"title": "Konfiguracja Geography"
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "Nazwa hosta lub adres IP jednostki",
|
||||
"password": "Has\u0142o jednostki"
|
||||
},
|
||||
"description": "Has\u0142o",
|
||||
"title": "Konfiguracja AirVisual Node/Pro"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "Klucz API",
|
||||
"cloud_api": "Lokalizacja geograficzna",
|
||||
"latitude": "Szeroko\u015b\u0107 geograficzna",
|
||||
"longitude": "D\u0142ugo\u015b\u0107 geograficzna",
|
||||
"node_pro": "AirVisual Node Pro",
|
||||
"type": "Typ integracji"
|
||||
},
|
||||
"description": "Monitoruj jako\u015b\u0107 powietrza w okre\u015blonej lokalizacji geograficznej.",
|
||||
"title": "Konfiguracja AirVisual"
|
||||
}
|
||||
|
||||
@@ -1,19 +1,41 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b."
|
||||
"already_configured": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e."
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API."
|
||||
"general_error": "\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430.",
|
||||
"invalid_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API.",
|
||||
"unable_to_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "\u041a\u043b\u044e\u0447 API",
|
||||
"latitude": "\u0428\u0438\u0440\u043e\u0442\u0430",
|
||||
"longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430"
|
||||
},
|
||||
"description": "\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u0430 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438.",
|
||||
"description": "\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e API AirVisual.",
|
||||
"title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f"
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "IP-\u0430\u0434\u0440\u0435\u0441/\u0418\u043c\u044f \u0445\u043e\u0441\u0442\u0430",
|
||||
"password": "\u041f\u0430\u0440\u043e\u043b\u044c"
|
||||
},
|
||||
"description": "\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 AirVisual. \u041f\u0430\u0440\u043e\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432.",
|
||||
"title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 AirVisual Node / Pro"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "\u041a\u043b\u044e\u0447 API",
|
||||
"cloud_api": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435",
|
||||
"latitude": "\u0428\u0438\u0440\u043e\u0442\u0430",
|
||||
"longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430",
|
||||
"node_pro": "AirVisual Node Pro",
|
||||
"type": "\u0422\u0438\u043f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438"
|
||||
},
|
||||
"description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 AirVisual, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c.",
|
||||
"title": "AirVisual"
|
||||
}
|
||||
}
|
||||
|
||||
11
homeassistant/components/airvisual/translations/vi.json
Normal file
11
homeassistant/components/airvisual/translations/vi.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"type": "Lo\u1ea1i t\u00edch h\u1ee3p"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,41 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u6b64\u4e9b\u5ea7\u6a19\u5df2\u8a3b\u518a\u3002"
|
||||
"already_configured": "\u6b64\u5ea7\u6a19\u6216 Node/Pro ID \u5df2\u8a3b\u518a\u3002"
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "API \u5bc6\u78bc\u7121\u6548"
|
||||
"general_error": "\u767c\u751f\u672a\u77e5\u932f\u8aa4\u3002",
|
||||
"invalid_api_key": "API \u5bc6\u78bc\u7121\u6548\u3002",
|
||||
"unable_to_connect": "\u7121\u6cd5\u9023\u7dda\u81f3 Node/Pro \u8a2d\u5099\u3002"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "API \u5bc6\u9470",
|
||||
"latitude": "\u7def\u5ea6",
|
||||
"longitude": "\u7d93\u5ea6"
|
||||
},
|
||||
"description": "\u4f9d\u5730\u7406\u4f4d\u7f6e\u76e3\u63a7\u7a7a\u6c23\u54c1\u8cea\u3002",
|
||||
"description": "\u4f7f\u7528 AirVisual \u96f2\u7aef API \u4ee5\u76e3\u63a7\u5730\u7406\u5ea7\u6a19\u3002",
|
||||
"title": "\u8a2d\u5b9a\u5730\u7406\u5ea7\u6a19"
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "\u8a2d\u5099 IP \u4f4d\u5740/\u4e3b\u6a5f\u540d\u7a31",
|
||||
"password": "\u8a2d\u5099\u5bc6\u78bc"
|
||||
},
|
||||
"description": "\u76e3\u63a7\u500b\u4eba AirVisual \u8a2d\u5099\uff0c\u5bc6\u78bc\u53ef\u4ee5\u900f\u904e\u8a2d\u5099 UI \u7372\u5f97\u3002",
|
||||
"title": "\u8a2d\u5b9a AirVisual Node/Pro"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API \u5bc6\u9470",
|
||||
"cloud_api": "\u5730\u7406\u5ea7\u6a19",
|
||||
"latitude": "\u7def\u5ea6",
|
||||
"longitude": "\u7d93\u5ea6",
|
||||
"node_pro": "AirVisual Node Pro",
|
||||
"type": "\u6574\u5408\u985e\u578b"
|
||||
},
|
||||
"description": "\u9078\u64c7\u6240\u8981\u76e3\u63a7\u7684 AirVisual \u8cc7\u6599\u985e\u578b\u3002",
|
||||
"title": "\u8a2d\u5b9a AirVisual"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_setup": "\ud558\ub098\uc758 Almond \uacc4\uc815\ub9cc \uad6c\uc131 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
|
||||
"already_setup": "\ud558\ub098\uc758 Almond \uacc4\uc815\ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
|
||||
"cannot_connect": "Almond \uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
|
||||
"missing_configuration": "Almond \uc124\uc815 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc124\uba85\uc11c\ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694."
|
||||
},
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
"name": "Atag",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/atag/",
|
||||
"requirements": ["pyatag==0.2.18"],
|
||||
"requirements": ["pyatag==0.2.19"],
|
||||
"codeowners": ["@MatsNL"]
|
||||
}
|
||||
|
||||
20
homeassistant/components/atag/translations/de.json
Normal file
20
homeassistant/components/atag/translations/de.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Nur ein Atag-Ger\u00e4t kann mit Home Assistant verbunden werden."
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "Verbindung fehlgeschlagen, versuchen Sie es erneut"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"port": "Port (10000)"
|
||||
},
|
||||
"title": "Stellen Sie eine Verbindung zum Ger\u00e4t her"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Atag"
|
||||
}
|
||||
20
homeassistant/components/atag/translations/es.json
Normal file
20
homeassistant/components/atag/translations/es.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "S\u00f3lo se puede a\u00f1adir un dispositivo Atag a Home Assistant"
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "No se pudo conectar, por favor, int\u00e9ntalo de nuevo"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"port": "Puerto (10000)"
|
||||
},
|
||||
"title": "Conectarse al dispositivo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Atag"
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "H\u00f4te",
|
||||
"port": "Port (10000)"
|
||||
},
|
||||
"title": "Se connecter \u00e0 l'appareil"
|
||||
|
||||
17
homeassistant/components/atag/translations/hi.json
Normal file
17
homeassistant/components/atag/translations/hi.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"connection_error": "\u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932, \u0915\u0943\u092a\u092f\u093e \u092a\u0941\u0928\u0903 \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"port": "\u092a\u094b\u0930\u094d\u091f (10000)"
|
||||
},
|
||||
"title": "\u0921\u093f\u0935\u093e\u0907\u0938 \u0938\u0947 \u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0947\u0902"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "A\u091f\u0948\u0917"
|
||||
}
|
||||
20
homeassistant/components/atag/translations/lb.json
Normal file
20
homeassistant/components/atag/translations/lb.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "N\u00ebmmen 1 Atag Apparat kann am Home Assistant dob\u00e4igesat ginn"
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "Feeler beim verbannen, prob\u00e9ier w.e.g. nach emol."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Apparat",
|
||||
"port": "Port (10000)"
|
||||
},
|
||||
"title": "Mam Apparat verbannen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Atag"
|
||||
}
|
||||
20
homeassistant/components/atag/translations/nl.json
Normal file
20
homeassistant/components/atag/translations/nl.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Er kan slechts \u00e9\u00e9n Atag-apparaat worden toegevoegd aan Home Assistant "
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "Verbinding mislukt, probeer het opnieuw"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"port": "Poort (10000)"
|
||||
},
|
||||
"title": "Verbinding maken met het apparaat"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Atag"
|
||||
}
|
||||
20
homeassistant/components/atag/translations/no.json
Normal file
20
homeassistant/components/atag/translations/no.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Bare en Atag-enhet kan legges til Home Assistant"
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "Klarte ikke \u00e5 koble til, vennligst pr\u00f8v igjen"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Vert",
|
||||
"port": "Port (10000)"
|
||||
},
|
||||
"title": "Koble til enheten"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Atag "
|
||||
}
|
||||
20
homeassistant/components/atag/translations/pl.json
Normal file
20
homeassistant/components/atag/translations/pl.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Do Home Assistant mo\u017cna doda\u0107 tylko jedno urz\u0105dzenie Atag"
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"port": "Port (10000)"
|
||||
},
|
||||
"title": "Po\u0142\u0105cz z urz\u0105dzeniem"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Atag"
|
||||
}
|
||||
20
homeassistant/components/atag/translations/ru.json
Normal file
20
homeassistant/components/atag/translations/ru.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e."
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "\u0425\u043e\u0441\u0442",
|
||||
"port": "\u041f\u043e\u0440\u0442 (10000)"
|
||||
},
|
||||
"title": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Atag"
|
||||
}
|
||||
20
homeassistant/components/atag/translations/zh-Hant.json
Normal file
20
homeassistant/components/atag/translations/zh-Hant.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u50c5\u80fd\u65b0\u589e\u4e00\u7d44 Atag \u8a2d\u5099\u81f3 Home Assistant"
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "\u9023\u7dda\u5931\u6557\uff0c\u8acb\u518d\u8a66\u4e00\u6b21"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "\u4e3b\u6a5f\u7aef",
|
||||
"port": "\u901a\u8a0a\u57e0\uff0810000\uff09"
|
||||
},
|
||||
"title": "\u9023\u7dda\u81f3\u8a2d\u5099"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Atag"
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"password": "Has\u0142o",
|
||||
"port": "Port",
|
||||
"username": "Nazwa u\u017cytkownika"
|
||||
|
||||
@@ -5,7 +5,7 @@ from bravia_tv import BraviaRC
|
||||
|
||||
from homeassistant.const import CONF_HOST, CONF_MAC
|
||||
|
||||
from .const import DOMAIN
|
||||
from .const import BRAVIARC, DOMAIN, UNDO_UPDATE_LISTENER
|
||||
|
||||
PLATFORMS = ["media_player"]
|
||||
|
||||
@@ -20,8 +20,13 @@ async def async_setup_entry(hass, config_entry):
|
||||
host = config_entry.data[CONF_HOST]
|
||||
mac = config_entry.data[CONF_MAC]
|
||||
|
||||
undo_listener = config_entry.add_update_listener(update_listener)
|
||||
|
||||
hass.data.setdefault(DOMAIN, {})
|
||||
hass.data[DOMAIN][config_entry.entry_id] = BraviaRC(host, mac)
|
||||
hass.data[DOMAIN][config_entry.entry_id] = {
|
||||
BRAVIARC: BraviaRC(host, mac),
|
||||
UNDO_UPDATE_LISTENER: undo_listener,
|
||||
}
|
||||
|
||||
for component in PLATFORMS:
|
||||
hass.async_create_task(
|
||||
@@ -41,7 +46,15 @@ async def async_unload_entry(hass, config_entry):
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
hass.data[DOMAIN][config_entry.entry_id][UNDO_UPDATE_LISTENER]()
|
||||
|
||||
if unload_ok:
|
||||
hass.data[DOMAIN].pop(config_entry.entry_id)
|
||||
|
||||
return unload_ok
|
||||
|
||||
|
||||
async def update_listener(hass, config_entry):
|
||||
"""Handle options update."""
|
||||
await hass.config_entries.async_reload(config_entry.entry_id)
|
||||
|
||||
@@ -15,6 +15,7 @@ from .const import ( # pylint:disable=unused-import
|
||||
ATTR_CID,
|
||||
ATTR_MAC,
|
||||
ATTR_MODEL,
|
||||
BRAVIARC,
|
||||
CLIENTID_PREFIX,
|
||||
CONF_IGNORED_SOURCES,
|
||||
DOMAIN,
|
||||
@@ -152,7 +153,7 @@ class BraviaTVOptionsFlowHandler(config_entries.OptionsFlow):
|
||||
|
||||
async def async_step_init(self, user_input=None):
|
||||
"""Manage the options."""
|
||||
self.braviarc = self.hass.data[DOMAIN][self.config_entry.entry_id]
|
||||
self.braviarc = self.hass.data[DOMAIN][self.config_entry.entry_id][BRAVIARC]
|
||||
if not self.braviarc.is_connected():
|
||||
await self.hass.async_add_executor_job(
|
||||
self.braviarc.connect, self.pin, CLIENTID_PREFIX, NICKNAME,
|
||||
|
||||
@@ -6,8 +6,10 @@ ATTR_MODEL = "model"
|
||||
|
||||
CONF_IGNORED_SOURCES = "ignored_sources"
|
||||
|
||||
BRAVIARC = "braviarc"
|
||||
BRAVIA_CONFIG_FILE = "bravia.conf"
|
||||
CLIENTID_PREFIX = "HomeAssistant"
|
||||
DEFAULT_NAME = f"{ATTR_MANUFACTURER} Bravia TV"
|
||||
DOMAIN = "braviatv"
|
||||
NICKNAME = "Home Assistant"
|
||||
UNDO_UPDATE_LISTENER = "undo_update_listener"
|
||||
|
||||
@@ -30,6 +30,7 @@ from homeassistant.util.json import load_json
|
||||
from .const import (
|
||||
ATTR_MANUFACTURER,
|
||||
BRAVIA_CONFIG_FILE,
|
||||
BRAVIARC,
|
||||
CLIENTID_PREFIX,
|
||||
CONF_IGNORED_SOURCES,
|
||||
DEFAULT_NAME,
|
||||
@@ -103,7 +104,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
|
||||
"model": config_entry.title,
|
||||
}
|
||||
|
||||
braviarc = hass.data[DOMAIN][config_entry.entry_id]
|
||||
braviarc = hass.data[DOMAIN][config_entry.entry_id][BRAVIARC]
|
||||
|
||||
ignored_sources = config_entry.options.get(CONF_IGNORED_SOURCES, [])
|
||||
|
||||
|
||||
9
homeassistant/components/braviatv/translations/hi.json
Normal file
9
homeassistant/components/braviatv/translations/hi.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"authorize": {
|
||||
"description": "\u0938\u094b\u0928\u0940 \u092c\u094d\u0930\u093e\u0935\u093f\u092f\u093e \u091f\u0940\u0935\u0940 \u092a\u0930 \u0926\u093f\u0916\u093e\u092f\u093e \u0917\u092f\u093e \u092a\u093f\u0928 \u0915\u094b\u0921 \u0921\u093e\u0932\u0947\u0902\u0964 \n\n \u092f\u0926\u093f \u092a\u093f\u0928 \u0915\u094b\u0921 \u0928\u0939\u0940\u0902 \u0926\u093f\u0916\u093e\u092f\u093e \u0917\u092f\u093e \u0939\u0948, \u0924\u094b \u0906\u092a\u0915\u094b \u0905\u092a\u0928\u0947 \u091f\u0940\u0935\u0940 \u092a\u0930 \u0939\u094b\u092e \u0905\u0938\u093f\u0938\u094d\u091f\u0947\u0902\u091f \u0915\u094b \u0905\u092a\u0902\u091c\u0940\u0915\u0943\u0924 \u0915\u0930\u0928\u093e \u0939\u094b\u0917\u093e, \u0907\u0938\u0915\u0947 \u0932\u093f\u090f \u091c\u093e\u090f\u0902: \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 - > \u0928\u0947\u091f\u0935\u0930\u094d\u0915 - > \u0926\u0942\u0930\u0938\u094d\u0925 \u0921\u093f\u0935\u093e\u0907\u0938 \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 - > \u0905\u092a\u0902\u091c\u0940\u0915\u0943\u0924 \u0930\u093f\u092e\u094b\u091f \u0921\u093f\u0935\u093e\u0907\u0938\u0964"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
38
homeassistant/components/braviatv/translations/ko.json
Normal file
38
homeassistant/components/braviatv/translations/ko.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\uc774 TV \ub294 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ud638\uc2a4\ud2b8 \ub610\ub294 PIN \ucf54\ub4dc\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
|
||||
"invalid_host": "\ud638\uc2a4\ud2b8 \uc774\ub984 \ub610\ub294 IP \uc8fc\uc18c\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
|
||||
"unsupported_model": "\uc774 TV \ubaa8\ub378\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."
|
||||
},
|
||||
"step": {
|
||||
"authorize": {
|
||||
"data": {
|
||||
"pin": "PIN \ucf54\ub4dc"
|
||||
},
|
||||
"description": "Sony Bravia TV \uc5d0 \ud45c\uc2dc\ub41c PIN \ucf54\ub4dc\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694.\n\nPIN \ucf54\ub4dc\uac00 \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc73c\uba74 TV \uc5d0\uc11c Home Assistant \ub97c \ub4f1\ub85d \ud574\uc81c\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4. Settings -> Network -> Remote device settings -> Unregister remote device \ub85c \uc774\ub3d9\ud558\uc5ec \ub4f1\ub85d\uc744 \ud574\uc81c\ud574\uc8fc\uc138\uc694.",
|
||||
"title": "Sony Bravia TV \uc2b9\uc778\ud558\uae30"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "TV \ud638\uc2a4\ud2b8 \uc774\ub984 \ub610\ub294 IP \uc8fc\uc18c"
|
||||
},
|
||||
"description": "Sony Bravia TV \ud1b5\ud569 \uad6c\uc131\uc694\uc18c\ub97c \uc124\uc815\ud574\uc8fc\uc138\uc694. \uad6c\uc131\uc5d0 \ubb38\uc81c\uac00 \uc788\ub294 \uacbd\uc6b0 https://www.home-assistant.io/integrations/braviatv \ub97c \ucc38\uace0\ud574\uc8fc\uc138\uc694.\n\nTV \uac00 \ucf1c\uc838 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc8fc\uc138\uc694.",
|
||||
"title": "Sony Bravia TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"ignored_sources": "\ubb34\uc2dc\ub41c \uc785\ub825 \uc18c\uc2a4 \ubaa9\ub85d"
|
||||
},
|
||||
"title": "Sony Bravia TV \uc635\uc158"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
"already_configured": "D\u00ebse Fernseh ass scho konfigur\u00e9iert."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Feeler beim verbannen, ong\u00ebltege Numm oder PIN code.",
|
||||
"invalid_host": "Ong\u00ebltege Numm oder IP Adresse.",
|
||||
"unsupported_model": "D\u00e4in TV Modell g\u00ebtt net \u00ebnnerst\u00ebtzt."
|
||||
},
|
||||
@@ -12,12 +13,14 @@
|
||||
"data": {
|
||||
"pin": "PIN Code"
|
||||
},
|
||||
"description": "G\u00ebff de PIN code an deen op der Sony Bravia TV ugewise g\u00ebtt.\n\nFalls kee PIN code ugewise g\u00ebtt muss den Home Assistant um Fernseh ofgemellt ginn, um TV: Settings -> Network -> Remote device settings -> Unregister remote device.",
|
||||
"title": "Sony Bravia TV erlaaben"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "TV Host Numm oder IP Adresse"
|
||||
},
|
||||
"description": "Sony Bravia TV Integratioun ariichten. Falls et Problemer mat der Konfiguratioun g\u00ebtt g\u00e9i op:\nhttps://www.home-assistant.io/integrations/braviatv\nStell s\u00e9cher dass d\u00e4in Fernseh un ass.",
|
||||
"title": "Sony Bravia TV"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "\u092c\u0902\u0926"
|
||||
"off": "\u092c\u0902\u0926",
|
||||
"on": "\u091a\u093e\u0932\u0942"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"recording": "\u0930\u093f\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917"
|
||||
"recording": "\u0930\u093f\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917",
|
||||
"streaming": "\u0938\u094d\u091f\u094d\u0930\u0940\u092e\u093f\u0902\u0917"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "Google \uce90\uc2a4\ud2b8 \uae30\uae30\uac00 \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \ubc1c\uacac\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.",
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 Google \uce90\uc2a4\ud2b8\ub9cc \uad6c\uc131 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 Google \uce90\uc2a4\ud2b8\ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
|
||||
@@ -16,7 +16,12 @@
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"heat": "Varme"
|
||||
"auto": "Auto",
|
||||
"cool": "Kj\u00f8le",
|
||||
"dry": "T\u00f8rr",
|
||||
"fan_only": "Kun vifte",
|
||||
"heat": "Varme",
|
||||
"heat_cool": "Varme/kj\u00f8lig"
|
||||
}
|
||||
},
|
||||
"title": "Klima"
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"configure": "Konfigurer",
|
||||
"configured": "Konfigurert"
|
||||
}
|
||||
},
|
||||
"title": "Konfigurator"
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
"fan_only": "Obs\u0142uga trybu \"tylko wentylator\"",
|
||||
"heat": "Obs\u0142uga trybu grzania",
|
||||
"heat_cool": "Obs\u0142uga automatycznego trybu grzanie/ch\u0142odzenie",
|
||||
"host": "Host",
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"off": "Mo\u017ce by\u0107 wy\u0142\u0105czone"
|
||||
},
|
||||
"title": "Skonfiguruj szczeg\u00f3\u0142y po\u0142\u0105czenia CoolMasterNet."
|
||||
|
||||
15
homeassistant/components/coronavirus/translations/nl.json
Normal file
15
homeassistant/components/coronavirus/translations/nl.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Dit land is al geconfigureerd."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"country": "Land"
|
||||
},
|
||||
"title": "Kies een land om te monitoren"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,5 +25,12 @@
|
||||
"tilt_position": "{entity_name} endringer i vippeposisjon"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"closing": "Lukker",
|
||||
"opening": "\u00c5pner",
|
||||
"stopped": "Stoppet"
|
||||
}
|
||||
},
|
||||
"title": "Dekke"
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host"
|
||||
"host": "Nazwa hosta lub adres IP"
|
||||
},
|
||||
"description": "Wprowad\u017a adres IP Daikin AC.",
|
||||
"title": "Konfiguracja Daikin AC"
|
||||
|
||||
@@ -29,6 +29,12 @@
|
||||
"host": "H\u00f4te",
|
||||
"port": "Port"
|
||||
}
|
||||
},
|
||||
"manual_input": {
|
||||
"data": {
|
||||
"host": "H\u00f4te",
|
||||
"port": "Port"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -29,12 +29,19 @@
|
||||
"host": "\ud638\uc2a4\ud2b8",
|
||||
"port": "\ud3ec\ud2b8"
|
||||
}
|
||||
},
|
||||
"manual_input": {
|
||||
"data": {
|
||||
"host": "\ud638\uc2a4\ud2b8",
|
||||
"port": "\ud3ec\ud2b8"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"device_automation": {
|
||||
"trigger_subtype": {
|
||||
"both_buttons": "\ub450 \uac1c",
|
||||
"bottom_buttons": "\ud558\ub2e8 \ubc84\ud2bc",
|
||||
"button_1": "\uccab \ubc88\uc9f8",
|
||||
"button_2": "\ub450 \ubc88\uc9f8",
|
||||
"button_3": "\uc138 \ubc88\uc9f8",
|
||||
@@ -51,6 +58,7 @@
|
||||
"side_4": "\uba74 4",
|
||||
"side_5": "\uba74 5",
|
||||
"side_6": "\uba74 6",
|
||||
"top_buttons": "\uc0c1\ub2e8 \ubc84\ud2bc",
|
||||
"turn_off": "\ub044\uae30",
|
||||
"turn_on": "\ucf1c\uae30"
|
||||
},
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
"device_automation": {
|
||||
"trigger_subtype": {
|
||||
"both_buttons": "B\u00e9id Kn\u00e4ppchen",
|
||||
"bottom_buttons": "\u00cbnnescht Kn\u00e4ppchen",
|
||||
"button_1": "\u00c9ischte Kn\u00e4ppchen",
|
||||
"button_2": "Zweete Kn\u00e4ppchen",
|
||||
"button_3": "Dr\u00ebtte Kn\u00e4ppchen",
|
||||
@@ -64,6 +65,7 @@
|
||||
"side_4": "S\u00e4it 4",
|
||||
"side_5": "S\u00e4it 5",
|
||||
"side_6": "S\u00e4it 6",
|
||||
"top_buttons": "Iewescht Kn\u00e4ppchen",
|
||||
"turn_off": "Ausschalten",
|
||||
"turn_on": "Uschalten"
|
||||
},
|
||||
|
||||
@@ -34,7 +34,14 @@
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"port": "Poort"
|
||||
}
|
||||
},
|
||||
"title": "Configureer deCONZ gateway"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Selecteer gevonden deCONZ gateway"
|
||||
},
|
||||
"title": "Selecteer DeCONZ gateway"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -97,7 +104,8 @@
|
||||
"allow_clip_sensor": "DeCONZ CLIP sensoren toestaan",
|
||||
"allow_deconz_groups": "Sta deCONZ-lichtgroepen toe"
|
||||
},
|
||||
"description": "Configureer de zichtbaarheid van deCONZ-apparaattypen"
|
||||
"description": "Configureer de zichtbaarheid van deCONZ-apparaattypen",
|
||||
"title": "deCONZ opties"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,15 +26,29 @@
|
||||
},
|
||||
"manual_confirm": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"port": "Port"
|
||||
}
|
||||
},
|
||||
"manual_input": {
|
||||
"data": {
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"port": "Port"
|
||||
},
|
||||
"title": "Konfiguracja bramki deCONZ"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Wybierz znalezion\u0105 bramk\u0119 deCONZ"
|
||||
},
|
||||
"title": "Wybierz bramk\u0119 deCONZ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"device_automation": {
|
||||
"trigger_subtype": {
|
||||
"both_buttons": "oba przyciski",
|
||||
"bottom_buttons": "Dolne przyciski",
|
||||
"button_1": "pierwszy przycisk",
|
||||
"button_2": "drugi przycisk",
|
||||
"button_3": "trzeci przycisk",
|
||||
@@ -51,6 +65,7 @@
|
||||
"side_4": "strona 4",
|
||||
"side_5": "strona 5",
|
||||
"side_6": "strona 6",
|
||||
"top_buttons": "G\u00f3rne przyciski",
|
||||
"turn_off": "nast\u0105pi wy\u0142\u0105czenie",
|
||||
"turn_on": "nast\u0105pi w\u0142\u0105czenie"
|
||||
},
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"init": {
|
||||
"data": {
|
||||
"one": "Een",
|
||||
"other": "Aner"
|
||||
"other": "M\u00e9i"
|
||||
}
|
||||
},
|
||||
"options_1": {
|
||||
|
||||
@@ -37,7 +37,6 @@ SERVICE_KONNECTED = "konnected"
|
||||
SERVICE_MOBILE_APP = "hass_mobile_app"
|
||||
SERVICE_NETGEAR = "netgear_router"
|
||||
SERVICE_OCTOPRINT = "octoprint"
|
||||
SERVICE_ROKU = "roku"
|
||||
SERVICE_SABNZBD = "sabnzbd"
|
||||
SERVICE_SAMSUNG_PRINTER = "samsung_printer"
|
||||
SERVICE_TELLDUSLIVE = "tellstick"
|
||||
@@ -59,7 +58,6 @@ SERVICE_HANDLERS = {
|
||||
SERVICE_HASSIO: ("hassio", None),
|
||||
SERVICE_APPLE_TV: ("apple_tv", None),
|
||||
SERVICE_ENIGMA2: ("media_player", "enigma2"),
|
||||
SERVICE_ROKU: ("roku", None),
|
||||
SERVICE_WINK: ("wink", None),
|
||||
SERVICE_XIAOMI_GW: ("xiaomi_aqara", None),
|
||||
SERVICE_SABNZBD: ("sabnzbd", None),
|
||||
@@ -71,7 +69,6 @@ SERVICE_HANDLERS = {
|
||||
"panasonic_viera": ("media_player", "panasonic_viera"),
|
||||
"yamaha": ("media_player", "yamaha"),
|
||||
"logitech_mediaserver": ("media_player", "squeezebox"),
|
||||
"directv": ("media_player", "directv"),
|
||||
"denonavr": ("media_player", "denonavr"),
|
||||
"frontier_silicon": ("media_player", "frontier_silicon"),
|
||||
"openhome": ("media_player", "openhome"),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Ce DoorBird est d\u00e9j\u00e0 configur\u00e9"
|
||||
"already_configured": "Ce DoorBird est d\u00e9j\u00e0 configur\u00e9",
|
||||
"not_doorbird_device": "Cet appareil n'est pas un DoorBird"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Impossible de se connecter, veuillez r\u00e9essayer",
|
||||
|
||||
36
homeassistant/components/doorbird/translations/pl.json
Normal file
36
homeassistant/components/doorbird/translations/pl.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "BoorBird jest ju\u017c skonfigurowany.",
|
||||
"link_local_address": "Po\u0142\u0105czenie lokalnego adresu nie jest obs\u0142ugiwane",
|
||||
"not_doorbird_device": "To urz\u0105dzenie nie jest urz\u0105dzeniem DoorBird"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie.",
|
||||
"invalid_auth": "Niepoprawne uwierzytelnienie.",
|
||||
"unknown": "Niespodziewany b\u0142\u0105d."
|
||||
},
|
||||
"flow_title": "DoorBird {name} ({host})",
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"name": "Nazwa urz\u0105dzenia",
|
||||
"password": "Has\u0142o",
|
||||
"username": "Nazwa u\u017cytkownika"
|
||||
},
|
||||
"title": "Po\u0142\u0105czenie z DoorBird"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"events": "Lista wydarze\u0144 oddzielona przecinkami"
|
||||
},
|
||||
"description": "Dodaj nazwy wydarze\u0144 oddzielonych przecinkami, kt\u00f3re chcesz \u015bledzi\u0107. Po wprowadzeniu ich tutaj u\u017cyj aplikacji DoorBird, aby przypisa\u0107 je do okre\u015blonych zdarze\u0144. Zapoznaj si\u0119 z dokumentacj\u0105 na stronie https://www.home-assistant.io/integrations/doorbird/#events.\nPrzyk\u0142ad: nacisnienie_przycisku, ruch"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,9 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"address_already_configured": "Un ElkM1 avec cette adresse est d\u00e9j\u00e0 configur\u00e9",
|
||||
"already_configured": "Un ElkM1 avec ce pr\u00e9fixe est d\u00e9j\u00e0 configur\u00e9"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Impossible de se connecter, veuillez r\u00e9essayer",
|
||||
"invalid_auth": "Authentification non valide",
|
||||
|
||||
27
homeassistant/components/elkm1/translations/pl.json
Normal file
27
homeassistant/components/elkm1/translations/pl.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"address_already_configured": "ElkM1 z tym adresem jest ju\u017c skonfigurowany.",
|
||||
"already_configured": "ElkM1 z tym prefiksem jest ju\u017c skonfigurowany."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie.",
|
||||
"invalid_auth": "Niepoprawne uwierzytelnienie.",
|
||||
"unknown": "Niespodziewany b\u0142\u0105d."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"address": "Adres IP, domena lub port szeregowy w przypadku po\u0142\u0105czenia szeregowego.",
|
||||
"password": "Has\u0142o (tylko bezpieczne).",
|
||||
"prefix": "Unikatowy prefiks (pozostaw pusty, je\u015bli masz tylko jeden ElkM1).",
|
||||
"protocol": "Protok\u00f3\u0142",
|
||||
"temperature_unit": "Jednostka temperatury u\u017cywanej przez ElkM1.",
|
||||
"username": "Nazwa u\u017cytkownika (tylko bezpieczne)"
|
||||
},
|
||||
"description": "Adres musi by\u0107 w postaci 'adres[:port]' dla tryb\u00f3w 'zabezpieczony' i 'niezabezpieczony'. Przyk\u0142ad: '192.168.1.1'. Port jest opcjonalny i domy\u015blnie ustawiony na 2101 dla po\u0142\u0105cze\u0144 'niezabezpieczonych' i 2601 dla 'zabezpieczonych'. W przypadku protoko\u0142u szeregowego adres musi by\u0107 w formie 'tty[:baudrate]'. Przyk\u0142ad: '/dev/ttyS1'. Warto\u015b\u0107 transmisji jest opcjonalna i domy\u015blnie wynosi 115200.",
|
||||
"title": "Pod\u0142\u0105czenie do sterownika Elk-M1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,5 +17,5 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "EmulatedRoku"
|
||||
"title": "Emul\u00e9ierte Roku"
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
"data": {
|
||||
"advertise_ip": "IP rozg\u0142aszania",
|
||||
"advertise_port": "Port rozg\u0142aszania",
|
||||
"host_ip": "IP hosta",
|
||||
"host_ip": "Adres IP",
|
||||
"listen_port": "Port nas\u0142uchu",
|
||||
"name": "Nazwa",
|
||||
"upnp_bind_multicast": "Powi\u0105\u017c multicast (prawda/fa\u0142sz)"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"port": "Port"
|
||||
},
|
||||
"description": "Gitt Verbindungs Informatioune vun \u00e4rem [ESPHome](https://esphomelib.com/) an.",
|
||||
"title": "[%key:component::esphome::title%]"
|
||||
"title": "ESPHome"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"port": "Port"
|
||||
},
|
||||
"description": "Wprowad\u017a ustawienia po\u0142\u0105czenia [ESPHome](https://esphomelib.com/) w\u0119z\u0142a.",
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Mot de passe",
|
||||
"username": "Nom d'utilisateur"
|
||||
},
|
||||
"description": "Pour acc\u00e9der \u00e0 l'API personnel Flume, vous devez demander un \"Client ID\" et un \"Client Secret\" \u00e0 l'adresse https://portal.flumetech.com/settings#token",
|
||||
"title": "Se connecter \u00e0 votre compte Flume"
|
||||
}
|
||||
|
||||
24
homeassistant/components/flume/translations/ko.json
Normal file
24
homeassistant/components/flume/translations/ko.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\uc774 \uacc4\uc815\uc740 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694.",
|
||||
"invalid_auth": "\uc778\uc99d\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
|
||||
"unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"client_id": "\ud074\ub77c\uc774\uc5b8\ud2b8 ID",
|
||||
"client_secret": "\ud074\ub77c\uc774\uc5b8\ud2b8 \uc2dc\ud06c\ub9bf",
|
||||
"password": "\ube44\ubc00\ubc88\ud638",
|
||||
"username": "\uc0ac\uc6a9\uc790 \uc774\ub984"
|
||||
},
|
||||
"description": "Flume Personal API \uc5d0 \uc561\uc138\uc2a4 \ud558\ub824\uba74 https://portal.flumetech.com/settings#token \uc5d0\uc11c '\ud074\ub77c\uc774\uc5b8\ud2b8 ID'\ubc0f '\ud074\ub77c\uc774\uc5b8\ud2b8 \uc2dc\ud06c\ub9bf'\uc744 \uc694\uccad\ud574\uc57c \ud569\ub2c8\ub2e4.",
|
||||
"title": "Flume \uacc4\uc815\uc5d0 \uc5f0\uacb0\ud558\uae30"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,9 @@
|
||||
"client_secret": "Client Schl\u00ebssel",
|
||||
"password": "Passwuert",
|
||||
"username": "Benotzernumm"
|
||||
}
|
||||
},
|
||||
"description": "Fir k\u00ebnnen op Flume Personal API z'acc\u00e9d\u00e9ieren muss du eng 'Client ID' an eng 'Client Secret' op https://portal.flumetech.com/settings#token ufroen.",
|
||||
"title": "Verbann dech mat dengem Flume Kont."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
24
homeassistant/components/flume/translations/pl.json
Normal file
24
homeassistant/components/flume/translations/pl.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "To konto jest ju\u017c skonfigurowane."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia, spr\u00f3buj ponownie.",
|
||||
"invalid_auth": "Niepoprawne uwierzytelnienie.",
|
||||
"unknown": "Niespodziewany b\u0142\u0105d."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"client_id": "Identyfikator klienta",
|
||||
"client_secret": "Has\u0142o klienta",
|
||||
"password": "Has\u0142o",
|
||||
"username": "Nazwa u\u017cytkownika"
|
||||
},
|
||||
"description": "Aby uzyska\u0107 dost\u0119p do API Flume, musisz poprosi\u0107 o 'ID klienta\u201d i 'klucz tajny klienta' na stronie https://portal.flumetech.com/settings#token",
|
||||
"title": "Po\u0142\u0105cz z kontem Flume"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -131,15 +131,6 @@ class FluNearYouData:
|
||||
self.latitude = latitude
|
||||
self.longitude = longitude
|
||||
|
||||
self._api_coros = {
|
||||
CATEGORY_CDC_REPORT: self._client.cdc_reports.status_by_coordinates(
|
||||
latitude, longitude
|
||||
),
|
||||
CATEGORY_USER_REPORT: self._client.user_reports.status_by_coordinates(
|
||||
latitude, longitude
|
||||
),
|
||||
}
|
||||
|
||||
self._api_category_count = {
|
||||
CATEGORY_CDC_REPORT: 0,
|
||||
CATEGORY_USER_REPORT: 0,
|
||||
@@ -155,8 +146,17 @@ class FluNearYouData:
|
||||
if self._api_category_count[api_category] == 0:
|
||||
return
|
||||
|
||||
if api_category == CATEGORY_CDC_REPORT:
|
||||
api_coro = self._client.cdc_reports.status_by_coordinates(
|
||||
self.latitude, self.longitude
|
||||
)
|
||||
else:
|
||||
api_coro = self._client.user_reports.status_by_coordinates(
|
||||
self.latitude, self.longitude
|
||||
)
|
||||
|
||||
try:
|
||||
self.data[api_category] = await self._api_coros[api_category]
|
||||
self.data[api_category] = await api_coro
|
||||
except FluNearYouError as err:
|
||||
LOGGER.error("Unable to get %s data: %s", api_category, err)
|
||||
self.data[api_category] = None
|
||||
@@ -200,7 +200,7 @@ class FluNearYouData:
|
||||
"""Update Flu Near You data."""
|
||||
tasks = [
|
||||
self._async_get_data_from_api(api_category)
|
||||
for api_category in self._api_coros
|
||||
for api_category in self._api_category_count
|
||||
]
|
||||
|
||||
await asyncio.gather(*tasks)
|
||||
|
||||
18
homeassistant/components/flunearyou/translations/pl.json
Normal file
18
homeassistant/components/flunearyou/translations/pl.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Wsp\u00f3\u0142rz\u0119dne s\u0105 ju\u017c zarejestrowane."
|
||||
},
|
||||
"error": {
|
||||
"general_error": "Nieznany b\u0142\u0105d"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"latitude": "Szeroko\u015b\u0107 geograficzna",
|
||||
"longitude": "D\u0142ugo\u015b\u0107 geograficzna"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"port": "Port"
|
||||
},
|
||||
"title": "Freebox"
|
||||
|
||||
@@ -2,10 +2,15 @@
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from pyfritzhome import Fritzhome, LoginError
|
||||
from requests.exceptions import HTTPError
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant import config_entries
|
||||
from homeassistant.components.ssdp import ATTR_SSDP_LOCATION, ATTR_UPNP_FRIENDLY_NAME
|
||||
from homeassistant.components.ssdp import (
|
||||
ATTR_SSDP_LOCATION,
|
||||
ATTR_UPNP_FRIENDLY_NAME,
|
||||
ATTR_UPNP_UDN,
|
||||
)
|
||||
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
|
||||
|
||||
# pylint:disable=unused-import
|
||||
@@ -28,6 +33,7 @@ DATA_SCHEMA_CONFIRM = vol.Schema(
|
||||
|
||||
RESULT_AUTH_FAILED = "auth_failed"
|
||||
RESULT_NOT_FOUND = "not_found"
|
||||
RESULT_NOT_SUPPORTED = "not_supported"
|
||||
RESULT_SUCCESS = "success"
|
||||
|
||||
|
||||
@@ -63,12 +69,15 @@ class FritzboxConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
)
|
||||
try:
|
||||
fritzbox.login()
|
||||
fritzbox.get_device_elements()
|
||||
fritzbox.logout()
|
||||
return RESULT_SUCCESS
|
||||
except OSError:
|
||||
return RESULT_NOT_FOUND
|
||||
except LoginError:
|
||||
return RESULT_AUTH_FAILED
|
||||
except HTTPError:
|
||||
return RESULT_NOT_SUPPORTED
|
||||
except OSError:
|
||||
return RESULT_NOT_FOUND
|
||||
|
||||
async def async_step_import(self, user_input=None):
|
||||
"""Handle configuration by yaml file."""
|
||||
@@ -82,10 +91,6 @@ class FritzboxConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
|
||||
for entry in self.hass.config_entries.async_entries(DOMAIN):
|
||||
if entry.data[CONF_HOST] == user_input[CONF_HOST]:
|
||||
if entry.data != user_input:
|
||||
self.hass.config_entries.async_update_entry(
|
||||
entry, data=user_input
|
||||
)
|
||||
return self.async_abort(reason="already_configured")
|
||||
|
||||
self._host = user_input[CONF_HOST]
|
||||
@@ -110,16 +115,26 @@ class FritzboxConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
host = urlparse(user_input[ATTR_SSDP_LOCATION]).hostname
|
||||
self.context[CONF_HOST] = host
|
||||
|
||||
uuid = user_input.get(ATTR_UPNP_UDN)
|
||||
if uuid:
|
||||
if uuid.startswith("uuid:"):
|
||||
uuid = uuid[5:]
|
||||
await self.async_set_unique_id(uuid)
|
||||
self._abort_if_unique_id_configured({CONF_HOST: host})
|
||||
|
||||
for progress in self._async_in_progress():
|
||||
if progress.get("context", {}).get(CONF_HOST) == host:
|
||||
return self.async_abort(reason="already_in_progress")
|
||||
|
||||
# update old and user-configured config entries
|
||||
for entry in self.hass.config_entries.async_entries(DOMAIN):
|
||||
if entry.data[CONF_HOST] == host:
|
||||
if uuid and not entry.unique_id:
|
||||
self.hass.config_entries.async_update_entry(entry, unique_id=uuid)
|
||||
return self.async_abort(reason="already_configured")
|
||||
|
||||
self._host = host
|
||||
self._name = user_input[ATTR_UPNP_FRIENDLY_NAME]
|
||||
self._name = user_input.get(ATTR_UPNP_FRIENDLY_NAME) or host
|
||||
|
||||
self.context["title_placeholders"] = {"name": self._name}
|
||||
return await self.async_step_confirm()
|
||||
|
||||
@@ -21,7 +21,8 @@
|
||||
"abort": {
|
||||
"already_in_progress": "AVM FRITZ!Box configuration is already in progress.",
|
||||
"already_configured": "This AVM FRITZ!Box is already configured.",
|
||||
"not_found": "No supported AVM FRITZ!Box found on the network."
|
||||
"not_found": "No supported AVM FRITZ!Box found on the network.",
|
||||
"not_supported": "Connected to AVM FRITZ!Box but it's unable to control Smart Home devices."
|
||||
},
|
||||
"error": {
|
||||
"auth_failed": "Username and/or password are incorrect."
|
||||
|
||||
32
homeassistant/components/fritzbox/translations/de.json
Normal file
32
homeassistant/components/fritzbox/translations/de.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Diese AVM FRITZ! Box ist bereits konfiguriert.",
|
||||
"already_in_progress": "Die Konfiguration der AVM FRITZ! Box ist bereits in Bearbeitung.",
|
||||
"not_found": "Keine unterst\u00fctzte AVM FRITZ! Box im Netzwerk gefunden."
|
||||
},
|
||||
"error": {
|
||||
"auth_failed": "Benutzername und/oder Passwort sind falsch."
|
||||
},
|
||||
"flow_title": "AVM FRITZ! Box: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"password": "Passwort",
|
||||
"username": "Benutzername"
|
||||
},
|
||||
"description": "M\u00f6chten Sie {name} einrichten?",
|
||||
"title": "AVM FRITZ! Box"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host oder IP-Adresse",
|
||||
"password": "Passwort",
|
||||
"username": "Benutzername"
|
||||
},
|
||||
"description": "Geben Sie Ihre AVM FRITZ! Box-Informationen ein.",
|
||||
"title": "AVM FRITZ! Box"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,8 @@
|
||||
"abort": {
|
||||
"already_configured": "This AVM FRITZ!Box is already configured.",
|
||||
"already_in_progress": "AVM FRITZ!Box configuration is already in progress.",
|
||||
"not_found": "No supported AVM FRITZ!Box found on the network."
|
||||
"not_found": "No supported AVM FRITZ!Box found on the network.",
|
||||
"not_supported": "Connected to AVM FRITZ!Box but it's unable to control Smart Home devices."
|
||||
},
|
||||
"error": {
|
||||
"auth_failed": "Username and/or password are incorrect."
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
"abort": {
|
||||
"already_configured": "Este AVM FRITZ!Box ya est\u00e1 configurado.",
|
||||
"already_in_progress": "La configuraci\u00f3n del AVM FRITZ!Box ya est\u00e1 en progreso.",
|
||||
"not_found": "No se encontr\u00f3 ning\u00fan AVM FRITZ!Box compatible en la red."
|
||||
"not_found": "No se encontr\u00f3 ning\u00fan AVM FRITZ!Box compatible en la red.",
|
||||
"not_supported": "Conectado a AVM FRITZ!Box pero no es capaz de controlar dispositivos Smart Home."
|
||||
},
|
||||
"error": {
|
||||
"auth_failed": "Usuario y/o contrase\u00f1a incorrectos."
|
||||
|
||||
@@ -8,10 +8,12 @@
|
||||
"data": {
|
||||
"password": "Mot de passe",
|
||||
"username": "Nom d'utilisateur"
|
||||
}
|
||||
},
|
||||
"description": "Voulez-vous configurer {name} ?"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "H\u00f4te ou adresse IP",
|
||||
"password": "Mot de passe",
|
||||
"username": "Nom d'utilisateur"
|
||||
}
|
||||
|
||||
7
homeassistant/components/fritzbox/translations/hi.json
Normal file
7
homeassistant/components/fritzbox/translations/hi.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"not_found": "\u0915\u094b\u0908 \u0938\u092e\u0930\u094d\u0925\u093f\u0924 AVM FRITZ! \u092c\u0949\u0915\u094d\u0938 \u0928\u0947\u091f\u0935\u0930\u094d\u0915 \u092a\u0930 \u0928\u0939\u0940\u0902 \u092e\u093f\u0932\u093e\u0964"
|
||||
}
|
||||
}
|
||||
}
|
||||
32
homeassistant/components/fritzbox/translations/it.json
Normal file
32
homeassistant/components/fritzbox/translations/it.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Questo AVM FRITZ!Box \u00e8 gi\u00e0 configurato.",
|
||||
"already_in_progress": "La configurazione di AVM FRITZ!Box \u00e8 gi\u00e0 in corso.",
|
||||
"not_found": "Nessun AVM FRITZ!Box supportato trovato sulla rete."
|
||||
},
|
||||
"error": {
|
||||
"auth_failed": "Nome utente e/o password non sono corretti."
|
||||
},
|
||||
"flow_title": "AVM FRITZ!Box: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"password": "Password",
|
||||
"username": "Nome utente"
|
||||
},
|
||||
"description": "Vuoi impostare {name}?",
|
||||
"title": "AVM FRITZ!Box"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host o indirizzo IP",
|
||||
"password": "Password",
|
||||
"username": "Nome utente"
|
||||
},
|
||||
"description": "Inserisci le informazioni del tuo AVM FRITZ!Box .",
|
||||
"title": "AVM FRITZ!Box"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,20 +1,31 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Deze AVM FRITZ!Box is al geconfigureerd.",
|
||||
"already_in_progress": "AVM FRITZ!Box configuratie is al bezig.",
|
||||
"not_found": "Geen ondersteunde AVM FRITZ!Box gevonden op het netwerk."
|
||||
},
|
||||
"error": {
|
||||
"auth_failed": "Ongeldige gebruikersnaam of wachtwoord"
|
||||
},
|
||||
"flow_title": "AVM FRITZ!Box: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"password": "Wachtwoord",
|
||||
"username": "Gebruikersnaam"
|
||||
}
|
||||
},
|
||||
"description": "Wilt u {name} instellen?",
|
||||
"title": "AVM FRITZ!Box"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host- of IP-adres",
|
||||
"password": "Wachtwoord",
|
||||
"username": "Gebruikersnaam"
|
||||
}
|
||||
},
|
||||
"description": "Voer uw AVM FRITZ!Box informatie in.",
|
||||
"title": "AVM FRITZ!Box"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"error": {
|
||||
"auth_failed": "Brukernavn og/eller passord er feil."
|
||||
},
|
||||
"flow_title": "AVM FRITZ!Box: {name}",
|
||||
"flow_title": "",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
@@ -16,7 +16,7 @@
|
||||
"username": "Brukernavn"
|
||||
},
|
||||
"description": "Vil du sette opp {name} ?",
|
||||
"title": "AVM FRITZ!Box"
|
||||
"title": ""
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
@@ -25,7 +25,7 @@
|
||||
"username": "Brukernavn"
|
||||
},
|
||||
"description": "Skriv inn AVM FRITZ!Box informasjonen.",
|
||||
"title": "AVM FRITZ!Box"
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
33
homeassistant/components/fritzbox/translations/pl.json
Normal file
33
homeassistant/components/fritzbox/translations/pl.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Ten AVM FRITZ!Box jest ju\u017c skonfigurowany.",
|
||||
"already_in_progress": "Konfiguracja AVM FRITZ!Box jest ju\u017c w toku.",
|
||||
"not_found": "W sieci nie znaleziono obs\u0142ugiwanego urz\u0105dzenia AVM FRITZ!Box.",
|
||||
"not_supported": "Po\u0142\u0105czony z AVM FRITZ! Box, ale nie jest w stanie kontrolowa\u0107 urz\u0105dze\u0144 Smart Home."
|
||||
},
|
||||
"error": {
|
||||
"auth_failed": "Nazwa u\u017cytkownika i/lub has\u0142o s\u0105 nieprawid\u0142owe."
|
||||
},
|
||||
"flow_title": "AVM FRITZ!Box: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"password": "Has\u0142o",
|
||||
"username": "Nazwa u\u017cytkownika"
|
||||
},
|
||||
"description": "Czy chcesz skonfigurowa\u0107 {name}?",
|
||||
"title": "AVM FRITZ! Box"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"password": "Has\u0142o",
|
||||
"username": "Nazwa u\u017cytkownika"
|
||||
},
|
||||
"description": "Wprowad\u017a informacje o urz\u0105dzeniu AVM FRITZ! Box.",
|
||||
"title": "AVM FRITZ! Box"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"domain": "frontend",
|
||||
"name": "Home Assistant Frontend",
|
||||
"documentation": "https://www.home-assistant.io/integrations/frontend",
|
||||
"requirements": ["home-assistant-frontend==20200427.0"],
|
||||
"requirements": ["home-assistant-frontend==20200427.1"],
|
||||
"dependencies": [
|
||||
"api",
|
||||
"auth",
|
||||
|
||||
@@ -86,6 +86,7 @@ class GarminConnectData:
|
||||
|
||||
def __init__(self, hass, client):
|
||||
"""Initialize."""
|
||||
self.hass = hass
|
||||
self.client = client
|
||||
self.data = None
|
||||
|
||||
@@ -95,7 +96,9 @@ class GarminConnectData:
|
||||
today = date.today()
|
||||
|
||||
try:
|
||||
self.data = self.client.get_stats_and_body(today.isoformat())
|
||||
self.data = await self.hass.async_add_executor_job(
|
||||
self.client.get_stats_and_body, today.isoformat()
|
||||
)
|
||||
except (
|
||||
GarminConnectAuthenticationError,
|
||||
GarminConnectTooManyRequestsError,
|
||||
|
||||
@@ -325,7 +325,7 @@ class GenericThermostat(ClimateDevice, RestoreEntity):
|
||||
_LOGGER.error("Unrecognized hvac mode: %s", hvac_mode)
|
||||
return
|
||||
# Ensure we update the current operation after changing the mode
|
||||
self.schedule_update_ha_state()
|
||||
self.async_write_ha_state()
|
||||
|
||||
async def async_set_temperature(self, **kwargs):
|
||||
"""Set new target temperature."""
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Locatie is al geconfigureerd."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"host": "Nazwa hosta lub adres IP",
|
||||
"name": "Nazwa",
|
||||
"password": "Has\u0142o",
|
||||
"port": "Port",
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"closed": "\u092c\u0902\u0926",
|
||||
"home": "\u0918\u0930",
|
||||
"locked": "\u0924\u093e\u0932\u093e \u092c\u0902\u0926 \u0939\u0948",
|
||||
"off": "\u092c\u0902\u0926",
|
||||
"ok": "\u0920\u0940\u0915",
|
||||
"on": "\u091a\u093e\u0932\u0942",
|
||||
"problem": "\u0938\u092e\u0938\u094d\u092f\u093e"
|
||||
"open": "\u0916\u0941\u0932\u093e",
|
||||
"problem": "\u0938\u092e\u0938\u094d\u092f\u093e",
|
||||
"unlocked": "\u0924\u093e\u0932\u093e \u0916\u0941\u0932\u093e \u0939\u0948"
|
||||
}
|
||||
},
|
||||
"title": "\u0938\u092e\u0942\u0939"
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
"unlocked": "Net gespaart"
|
||||
}
|
||||
},
|
||||
"title": "Gruppe"
|
||||
"title": "Grupp"
|
||||
}
|
||||
24
homeassistant/components/harmony/translations/nl.json
Normal file
24
homeassistant/components/harmony/translations/nl.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Apparaat is al geconfigureerd"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Verbinding mislukt, probeer het opnieuw"
|
||||
},
|
||||
"flow_title": "Logitech Harmony Hub {name}",
|
||||
"step": {
|
||||
"link": {
|
||||
"description": "Wil je {name} ({host}) instellen?",
|
||||
"title": "Logitech Harmony Hub instellen"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Hostnaam of IP-adres",
|
||||
"name": "Naam van hub"
|
||||
},
|
||||
"title": "Logitech Harmony Hub instellen"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,8 +9,8 @@
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"access_token": "Host",
|
||||
"host": "Host"
|
||||
"access_token": "Nazwa hosta lub adres IP",
|
||||
"host": "Nazwa hosta lub adres IP"
|
||||
},
|
||||
"description": "Wprowad\u017a nazw\u0119 hosta lub adres IP urz\u0105dzenia Heos (najlepiej pod\u0142\u0105czonego przewodowo do sieci).",
|
||||
"title": "Po\u0142\u0105czenie z Heos"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "Hisense AEH-W4A1 \uae30\uae30\uac00 \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \ubc1c\uacac\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.",
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 Hisense AEH-W4A1 \ub9cc \uad6c\uc131 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 Hisense AEH-W4A1 \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
|
||||
@@ -99,6 +99,9 @@ class HomeAccessory(Accessory):
|
||||
self.entity_id = entity_id
|
||||
self.hass = hass
|
||||
self.debounce = {}
|
||||
self._char_battery = None
|
||||
self._char_charging = None
|
||||
self._char_low_battery = None
|
||||
self.linked_battery_sensor = self.config.get(CONF_LINKED_BATTERY_SENSOR)
|
||||
self.linked_battery_charging_sensor = self.config.get(
|
||||
CONF_LINKED_BATTERY_CHARGING_SENSOR
|
||||
@@ -247,6 +250,10 @@ class HomeAccessory(Accessory):
|
||||
|
||||
Only call this function if self._support_battery_level is True.
|
||||
"""
|
||||
if not self._char_battery:
|
||||
# Battery appeared after homekit was started
|
||||
return
|
||||
|
||||
battery_level = convert_to_float(battery_level)
|
||||
if battery_level is not None:
|
||||
if self._char_battery.value != battery_level:
|
||||
@@ -258,7 +265,8 @@ class HomeAccessory(Accessory):
|
||||
"%s: Updated battery level to %d", self.entity_id, battery_level
|
||||
)
|
||||
|
||||
if battery_charging is None:
|
||||
# Charging state can appear after homekit was started
|
||||
if battery_charging is None or not self._char_charging:
|
||||
return
|
||||
|
||||
hk_charging = HK_CHARGING if battery_charging else HK_NOT_CHARGING
|
||||
|
||||
@@ -94,13 +94,13 @@ class Fan(HomeAccessory):
|
||||
_LOGGER.debug("Fan _set_chars: %s", char_values)
|
||||
if CHAR_ACTIVE in char_values:
|
||||
if char_values[CHAR_ACTIVE]:
|
||||
is_on = False
|
||||
state = self.hass.states.get(self.entity_id)
|
||||
if state and state.state == STATE_ON:
|
||||
is_on = True
|
||||
# Only set the state to active if we
|
||||
# did not get a rotation speed or its off
|
||||
if not is_on or CHAR_ROTATION_SPEED not in char_values:
|
||||
# If the device supports set speed we
|
||||
# do not want to turn on as it will take
|
||||
# the fan to 100% than to the desired speed.
|
||||
#
|
||||
# Setting the speed will take care of turning
|
||||
# on the fan if SUPPORT_SET_SPEED is set.
|
||||
if not self.char_speed or CHAR_ROTATION_SPEED not in char_values:
|
||||
self.set_state(1)
|
||||
else:
|
||||
# Its off, nothing more to do as setting the
|
||||
|
||||
@@ -117,12 +117,15 @@ class Thermostat(HomeAccessory):
|
||||
"""Initialize a Thermostat accessory object."""
|
||||
super().__init__(*args, category=CATEGORY_THERMOSTAT)
|
||||
self._unit = self.hass.config.units.temperature_unit
|
||||
self._state_updates = 0
|
||||
self.hc_homekit_to_hass = None
|
||||
self.hc_hass_to_homekit = None
|
||||
min_temp, max_temp = self.get_temperature_range()
|
||||
|
||||
# Homekit only supports 10-38, overwriting
|
||||
# the max to appears to work, but less than 10 causes
|
||||
# the max to appears to work, but less than 0 causes
|
||||
# a crash on the home app
|
||||
hc_min_temp = max(min_temp, HC_MIN_TEMP)
|
||||
hc_min_temp = max(min_temp, 0)
|
||||
hc_max_temp = max_temp
|
||||
|
||||
min_humidity = self.hass.states.get(self.entity_id).attributes.get(
|
||||
@@ -149,48 +152,17 @@ class Thermostat(HomeAccessory):
|
||||
CHAR_CURRENT_HEATING_COOLING, value=0
|
||||
)
|
||||
|
||||
# Target mode characteristics
|
||||
hc_modes = state.attributes.get(ATTR_HVAC_MODES)
|
||||
if hc_modes is None:
|
||||
_LOGGER.error(
|
||||
"%s: HVAC modes not yet available. Please disable auto start for homekit.",
|
||||
self.entity_id,
|
||||
)
|
||||
hc_modes = (
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT_COOL,
|
||||
HVAC_MODE_OFF,
|
||||
)
|
||||
|
||||
# Determine available modes for this entity,
|
||||
# Prefer HEAT_COOL over AUTO and COOL over FAN_ONLY, DRY
|
||||
#
|
||||
# HEAT_COOL is preferred over auto because HomeKit Accessory Protocol describes
|
||||
# heating or cooling comes on to maintain a target temp which is closest to
|
||||
# the Home Assistant spec
|
||||
#
|
||||
# HVAC_MODE_HEAT_COOL: The device supports heating/cooling to a range
|
||||
self.hc_homekit_to_hass = {
|
||||
c: s
|
||||
for s, c in HC_HASS_TO_HOMEKIT.items()
|
||||
if (
|
||||
s in hc_modes
|
||||
and not (
|
||||
(s == HVAC_MODE_AUTO and HVAC_MODE_HEAT_COOL in hc_modes)
|
||||
or (
|
||||
s in (HVAC_MODE_DRY, HVAC_MODE_FAN_ONLY)
|
||||
and HVAC_MODE_COOL in hc_modes
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
hc_valid_values = {k: v for v, k in self.hc_homekit_to_hass.items()}
|
||||
|
||||
self._configure_hvac_modes(state)
|
||||
# Must set the value first as setting
|
||||
# valid_values happens before setting
|
||||
# the value and if 0 is not a valid
|
||||
# value this will throw
|
||||
self.char_target_heat_cool = serv_thermostat.configure_char(
|
||||
CHAR_TARGET_HEATING_COOLING, valid_values=hc_valid_values,
|
||||
CHAR_TARGET_HEATING_COOLING, value=list(self.hc_homekit_to_hass)[0]
|
||||
)
|
||||
self.char_target_heat_cool.override_properties(
|
||||
valid_values=self.hc_hass_to_homekit
|
||||
)
|
||||
|
||||
# Current and target temperature characteristics
|
||||
|
||||
self.char_current_temp = serv_thermostat.configure_char(
|
||||
@@ -249,7 +221,7 @@ class Thermostat(HomeAccessory):
|
||||
CHAR_CURRENT_HUMIDITY, value=50
|
||||
)
|
||||
|
||||
self.update_state(state)
|
||||
self._update_state(state)
|
||||
|
||||
serv_thermostat.setter_callback = self._set_chars
|
||||
|
||||
@@ -356,6 +328,46 @@ class Thermostat(HomeAccessory):
|
||||
if CHAR_TARGET_HUMIDITY in char_values:
|
||||
self.set_target_humidity(char_values[CHAR_TARGET_HUMIDITY])
|
||||
|
||||
def _configure_hvac_modes(self, state):
|
||||
"""Configure target mode characteristics."""
|
||||
hc_modes = state.attributes.get(ATTR_HVAC_MODES)
|
||||
if not hc_modes:
|
||||
# This cannot be none OR an empty list
|
||||
_LOGGER.error(
|
||||
"%s: HVAC modes not yet available. Please disable auto start for homekit.",
|
||||
self.entity_id,
|
||||
)
|
||||
hc_modes = (
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT_COOL,
|
||||
HVAC_MODE_OFF,
|
||||
)
|
||||
|
||||
# Determine available modes for this entity,
|
||||
# Prefer HEAT_COOL over AUTO and COOL over FAN_ONLY, DRY
|
||||
#
|
||||
# HEAT_COOL is preferred over auto because HomeKit Accessory Protocol describes
|
||||
# heating or cooling comes on to maintain a target temp which is closest to
|
||||
# the Home Assistant spec
|
||||
#
|
||||
# HVAC_MODE_HEAT_COOL: The device supports heating/cooling to a range
|
||||
self.hc_homekit_to_hass = {
|
||||
c: s
|
||||
for s, c in HC_HASS_TO_HOMEKIT.items()
|
||||
if (
|
||||
s in hc_modes
|
||||
and not (
|
||||
(s == HVAC_MODE_AUTO and HVAC_MODE_HEAT_COOL in hc_modes)
|
||||
or (
|
||||
s in (HVAC_MODE_DRY, HVAC_MODE_FAN_ONLY)
|
||||
and HVAC_MODE_COOL in hc_modes
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
self.hc_hass_to_homekit = {k: v for v, k in self.hc_homekit_to_hass.items()}
|
||||
|
||||
def get_temperature_range(self):
|
||||
"""Return min and max temperature range."""
|
||||
max_temp = self.hass.states.get(self.entity_id).attributes.get(ATTR_MAX_TEMP)
|
||||
@@ -382,14 +394,46 @@ class Thermostat(HomeAccessory):
|
||||
|
||||
def update_state(self, new_state):
|
||||
"""Update thermostat state after state changed."""
|
||||
if self._state_updates < 3:
|
||||
# When we get the first state updates
|
||||
# we recheck valid hvac modes as the entity
|
||||
# may not have been fully setup when we saw it the
|
||||
# first time
|
||||
original_hc_hass_to_homekit = self.hc_hass_to_homekit
|
||||
self._configure_hvac_modes(new_state)
|
||||
if self.hc_hass_to_homekit != original_hc_hass_to_homekit:
|
||||
if self.char_target_heat_cool.value not in self.hc_homekit_to_hass:
|
||||
# We must make sure the char value is
|
||||
# in the new valid values before
|
||||
# setting the new valid values or
|
||||
# changing them with throw
|
||||
self.char_target_heat_cool.set_value(
|
||||
list(self.hc_homekit_to_hass)[0], should_notify=False
|
||||
)
|
||||
self.char_target_heat_cool.override_properties(
|
||||
valid_values=self.hc_hass_to_homekit
|
||||
)
|
||||
self._state_updates += 1
|
||||
|
||||
self._update_state(new_state)
|
||||
|
||||
def _update_state(self, new_state):
|
||||
"""Update state without rechecking the device features."""
|
||||
features = new_state.attributes.get(ATTR_SUPPORTED_FEATURES, 0)
|
||||
|
||||
# Update target operation mode FIRST
|
||||
hvac_mode = new_state.state
|
||||
if hvac_mode and hvac_mode in HC_HASS_TO_HOMEKIT:
|
||||
homekit_hvac_mode = HC_HASS_TO_HOMEKIT[hvac_mode]
|
||||
if self.char_target_heat_cool.value != homekit_hvac_mode:
|
||||
self.char_target_heat_cool.set_value(homekit_hvac_mode)
|
||||
if homekit_hvac_mode in self.hc_homekit_to_hass:
|
||||
if self.char_target_heat_cool.value != homekit_hvac_mode:
|
||||
self.char_target_heat_cool.set_value(homekit_hvac_mode)
|
||||
else:
|
||||
_LOGGER.error(
|
||||
"Cannot map hvac target mode: %s to homekit as only %s modes are supported",
|
||||
hvac_mode,
|
||||
self.hc_homekit_to_hass,
|
||||
)
|
||||
|
||||
# Set current operation mode for supported thermostats
|
||||
hvac_action = new_state.attributes.get(ATTR_HVAC_ACTION)
|
||||
@@ -444,13 +488,13 @@ class Thermostat(HomeAccessory):
|
||||
# even if the device does not support it
|
||||
hc_hvac_mode = self.char_target_heat_cool.value
|
||||
if hc_hvac_mode == HC_HEAT_COOL_HEAT:
|
||||
target_temp = self._temperature_to_homekit(
|
||||
new_state.attributes.get(ATTR_TARGET_TEMP_LOW)
|
||||
)
|
||||
temp_low = new_state.attributes.get(ATTR_TARGET_TEMP_LOW)
|
||||
if isinstance(temp_low, (int, float)):
|
||||
target_temp = self._temperature_to_homekit(temp_low)
|
||||
elif hc_hvac_mode == HC_HEAT_COOL_COOL:
|
||||
target_temp = self._temperature_to_homekit(
|
||||
new_state.attributes.get(ATTR_TARGET_TEMP_HIGH)
|
||||
)
|
||||
temp_high = new_state.attributes.get(ATTR_TARGET_TEMP_HIGH)
|
||||
if isinstance(temp_high, (int, float)):
|
||||
target_temp = self._temperature_to_homekit(temp_high)
|
||||
if target_temp and self.char_target_temp.value != target_temp:
|
||||
self.char_target_temp.set_value(target_temp)
|
||||
|
||||
|
||||
@@ -36,5 +36,5 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "HomeKit Accessoire"
|
||||
"title": "HomeKit Kontroller"
|
||||
}
|
||||
@@ -36,5 +36,5 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "\u0410\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440 HomeKit"
|
||||
"title": "HomeKit Controller"
|
||||
}
|
||||
@@ -29,8 +29,21 @@
|
||||
},
|
||||
"device_automation": {
|
||||
"trigger_subtype": {
|
||||
"button_1": "Premier bouton",
|
||||
"button_2": "Deuxi\u00e8me bouton",
|
||||
"button_3": "Troisi\u00e8me bouton",
|
||||
"button_4": "Quatri\u00e8me bouton",
|
||||
"dim_down": "Assombrir",
|
||||
"dim_up": "\u00c9claircir",
|
||||
"double_buttons_1_3": "Premier et troisi\u00e8me boutons",
|
||||
"double_buttons_2_4": "Deuxi\u00e8me et quatri\u00e8me boutons"
|
||||
"double_buttons_2_4": "Deuxi\u00e8me et quatri\u00e8me boutons",
|
||||
"turn_off": "\u00c9teindre",
|
||||
"turn_on": "Allumer"
|
||||
},
|
||||
"trigger_type": {
|
||||
"remote_button_long_release": "Bouton \" {subtype} \" rel\u00e2ch\u00e9 apr\u00e8s un appui long",
|
||||
"remote_button_short_press": "bouton \"{subtype}\" est press\u00e9",
|
||||
"remote_button_short_release": "Bouton \" {subtype} \" est rel\u00e2ch\u00e9"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,13 +35,17 @@
|
||||
"button_4": "\ub124 \ubc88\uc9f8 \ubc84\ud2bc",
|
||||
"dim_down": "\uc5b4\ub461\uac8c \ud558\uae30",
|
||||
"dim_up": "\ubc1d\uac8c \ud558\uae30",
|
||||
"double_buttons_1_3": "\uccab \ubc88\uc9f8 \ubc0f \uc138 \ubc88\uc9f8 \ubc84\ud2bc",
|
||||
"double_buttons_2_4": "\ub450 \ubc88\uc9f8 \ubc0f \ub124 \ubc88\uc9f8 \ubc84\ud2bc",
|
||||
"turn_off": "\ub044\uae30",
|
||||
"turn_on": "\ucf1c\uae30"
|
||||
},
|
||||
"trigger_type": {
|
||||
"remote_button_long_release": "\"{subtype}\" \ubc84\ud2bc\uc774 \uae38\uac8c \ub20c\ub838\ub2e4\uac00 \uc190\uc744 \ub5c4 \ub54c",
|
||||
"remote_button_short_press": "\"{subtype}\" \ubc84\ud2bc\uc774 \ub20c\ub9b4 \ub54c",
|
||||
"remote_button_short_release": "\"{subtype}\" \ubc84\ud2bc\uc5d0\uc11c \uc190\uc744 \ub5c4 \ub54c"
|
||||
"remote_button_short_release": "\"{subtype}\" \ubc84\ud2bc\uc5d0\uc11c \uc190\uc744 \ub5c4 \ub54c",
|
||||
"remote_double_button_long_press": "\"{subtype}\" \ubaa8\ub450 \uae38\uac8c \ub20c\ub838\ub2e4\uac00 \uc190\uc744 \ub5c4 \ub54c",
|
||||
"remote_double_button_short_press": "\"{subtype}\" \ubaa8\ub450 \uc190\uc744 \ub5c4 \ub54c"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,13 +35,17 @@
|
||||
"button_4": "V\u00e9ierte Kn\u00e4ppchen",
|
||||
"dim_down": "Verd\u00e4ischteren",
|
||||
"dim_up": "Erhellen",
|
||||
"double_buttons_1_3": "\u00c9ischte an Dr\u00ebtte Kn\u00e4ppchen",
|
||||
"double_buttons_2_4": "Zweete a V\u00e9ierte Kn\u00e4ppchen",
|
||||
"turn_off": "Ausschalten",
|
||||
"turn_on": "Uschalten"
|
||||
},
|
||||
"trigger_type": {
|
||||
"remote_button_long_release": "\"{subtype}\" Kn\u00e4ppche no laangem unhalen lassgelooss",
|
||||
"remote_button_short_press": "\"{subtype}\" Kn\u00e4ppche gedr\u00e9ckt",
|
||||
"remote_button_short_release": "\"{subtype}\" Kn\u00e4ppche lassgelooss"
|
||||
"remote_button_short_release": "\"{subtype}\" Kn\u00e4ppche lassgelooss",
|
||||
"remote_double_button_long_press": "B\u00e9id \"{subtype}\" no laangem unhalen lassgelooss",
|
||||
"remote_double_button_short_press": "B\u00e9id \"{subtype}\" lassgeloss"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"host": "Host"
|
||||
"host": "Nazwa hosta lub adres IP"
|
||||
},
|
||||
"title": "Wybierz mostek Hue"
|
||||
},
|
||||
@@ -26,5 +26,26 @@
|
||||
"title": "Hub Link"
|
||||
}
|
||||
}
|
||||
},
|
||||
"device_automation": {
|
||||
"trigger_subtype": {
|
||||
"button_1": "pierwszy przycisk",
|
||||
"button_2": "drugi przycisk",
|
||||
"button_3": "trzeci przycisk",
|
||||
"button_4": "czwarty przycisk",
|
||||
"dim_down": "nast\u0105pi zmniejszenie jasno\u015bci",
|
||||
"dim_up": "nast\u0105pi zwi\u0119kszenie jasno\u015bci",
|
||||
"double_buttons_1_3": "Przyciski pierwszy i trzeci",
|
||||
"double_buttons_2_4": "Przyciski drugi i czwarty",
|
||||
"turn_off": "Nast\u0105pi wy\u0142\u0105czenie",
|
||||
"turn_on": "Nast\u0105pi w\u0142\u0105czenie"
|
||||
},
|
||||
"trigger_type": {
|
||||
"remote_button_long_release": "\"{subtype}\" zostanie zwolniony po d\u0142ugim naci\u015bni\u0119ciu",
|
||||
"remote_button_short_press": "\"{subtype}\" zostanie naci\u015bni\u0119ty",
|
||||
"remote_button_short_release": "\"{subtype}\" zostanie zwolniony",
|
||||
"remote_double_button_long_press": "Obydwa \"{subtype}\" zostanie zwolniony po d\u0142ugim naci\u015bni\u0119ciu",
|
||||
"remote_double_button_short_press": "Obydwa \"{subtype}\" zostanie zwolniony"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_setup": "\ud558\ub098\uc758 iAqualink \uc5f0\uacb0\ub9cc \uad6c\uc131 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
"already_setup": "\ud558\ub098\uc758 iAqualink \uc5f0\uacb0\ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
},
|
||||
"error": {
|
||||
"connection_failure": "iAqualink \uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\uc790 \uc774\ub984\uacfc \ube44\ubc00\ubc88\ud638\ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694."
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Has\u0142o",
|
||||
"username": "E-mail",
|
||||
"username": "Adres e-mail",
|
||||
"with_family": "Z rodzin\u0105"
|
||||
},
|
||||
"description": "Wprowad\u017a dane uwierzytelniaj\u0105ce",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 Home Assistant iOS \ub9cc \uad6c\uc131 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
"single_instance_allowed": "\ud558\ub098\uc758 Home Assistant iOS \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
|
||||
@@ -128,24 +128,20 @@ class IPPEntity(Entity):
|
||||
self,
|
||||
*,
|
||||
entry_id: str,
|
||||
device_id: str,
|
||||
coordinator: IPPDataUpdateCoordinator,
|
||||
name: str,
|
||||
icon: str,
|
||||
enabled_default: bool = True,
|
||||
) -> None:
|
||||
"""Initialize the IPP entity."""
|
||||
self._device_id = None
|
||||
self._device_id = device_id
|
||||
self._enabled_default = enabled_default
|
||||
self._entry_id = entry_id
|
||||
self._icon = icon
|
||||
self._name = name
|
||||
self.coordinator = coordinator
|
||||
|
||||
if coordinator.data.info.uuid is not None:
|
||||
self._device_id = coordinator.data.info.uuid
|
||||
elif coordinator.data.info.serial is not None:
|
||||
self._device_id = coordinator.data.info.serial
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
"""Return the name of the entity."""
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user