mirror of
https://github.com/home-assistant/core.git
synced 2026-05-04 20:04:35 +02:00
Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4eacf3f6c0 | |||
| 35d2badb24 | |||
| 331d5ba7ef | |||
| a2c157b5e9 | |||
| 883fb8c168 | |||
| 2e7ce63cbc | |||
| b925ae39cb | |||
| 5c608eb1bc | |||
| 3032f9280c | |||
| 00284a87d0 | |||
| 21917e86c9 | |||
| b6994689b1 | |||
| 0c1c7d797c | |||
| 9c60195780 | |||
| d8fea1c582 | |||
| 84ab40c57d | |||
| aace9dce38 | |||
| f6f95d0422 | |||
| e0466d4ac8 | |||
| 8e4a325fdb | |||
| 868b14f151 | |||
| e660577e43 | |||
| 69cace1d41 | |||
| 4f908bc58c | |||
| d00ca7bf03 | |||
| 65eb5ea55f | |||
| 3586e0c5e4 | |||
| e0621d2e5f | |||
| 1fb1bb0c08 | |||
| 6c5e2af379 | |||
| fcbe90cb80 | |||
| 3eece977f8 |
@@ -27,7 +27,7 @@
|
||||
"data": {
|
||||
"forecast": "Prognoza pogody"
|
||||
},
|
||||
"description": "Ze wzgl\u0119du na ograniczenia darmowej wersji klucza API AccuWeather po w\u0142\u0105czeniu prognozy pogody aktualizacje danych b\u0119d\u0105 wykonywane co 64 minut zamiast co 32 minut.",
|
||||
"description": "Ze wzgl\u0119du na ograniczenia darmowej wersji klucza API AccuWeather po w\u0142\u0105czeniu prognozy pogody aktualizacje danych b\u0119d\u0105 wykonywane co 64 minuty zamiast co 32 minuty.",
|
||||
"title": "Opcje AccuWeather"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
"abort": {
|
||||
"existing_instance_updated": "\u66f4\u65b0\u4e86\u73b0\u6709\u914d\u7f6e\u3002"
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "\u8fde\u63a5\u5931\u8d25\u3002"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"ip_address": "IP\u5730\u5740"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
"step": {
|
||||
"protocol": {
|
||||
"data": {
|
||||
"device_path": "Ger\u00e4tepfad",
|
||||
"host": "Host",
|
||||
"port": "Port"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"step": {
|
||||
"protocol": {
|
||||
"data": {
|
||||
"port": "\u7aef\u53e3"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u8d26\u53f7\u5df2\u7ecf\u8bbe\u7f6e\u5b8c\u6210",
|
||||
"missing_configuration": "\u7ec4\u4ef6\u5c1a\u672a\u914d\u7f6e\u3002\u8bf7\u53c2\u89c2\u6587\u4ef6\u8bf4\u660e\u3002"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czona",
|
||||
"on": "w\u0142\u0105czona"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Automatyzacja"
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"reauth": {
|
||||
"title": "Erneute Authentifizierung"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"organization": "Organisation",
|
||||
"project": "Projekt"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,8 +91,8 @@
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
},
|
||||
"battery": {
|
||||
"off": "na\u0142adowana",
|
||||
|
||||
@@ -48,7 +48,12 @@
|
||||
"connected": "{entity_name} \u5df2\u8fde\u63a5",
|
||||
"gas": "{entity_name} \u5f00\u59cb\u68c0\u6d4b\u5230\u71c3\u6c14\u6cc4\u6f0f",
|
||||
"hot": "{entity_name} \u53d8\u70ed",
|
||||
"light": "{entity_name} \u5f00\u59cb\u68c0\u6d4b\u5230\u5149\u7ebf"
|
||||
"light": "{entity_name} \u5f00\u59cb\u68c0\u6d4b\u5230\u5149\u7ebf",
|
||||
"motion": "{entity_name} \u68c0\u6d4b\u5230\u6709\u4eba",
|
||||
"no_motion": "{entity_name} \u672a\u68c0\u6d4b\u5230\u6709\u4eba",
|
||||
"not_opened": "{entity_name}\u5df2\u5173\u95ed",
|
||||
"turned_off": "{entity_name} \u88ab\u5173\u95ed",
|
||||
"turned_on": "{entity_name} \u88ab\u6253\u5f00"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"domain": "bmw_connected_drive",
|
||||
"name": "BMW Connected Drive",
|
||||
"documentation": "https://www.home-assistant.io/integrations/bmw_connected_drive",
|
||||
"requirements": ["bimmer_connected==0.7.7"],
|
||||
"requirements": ["bimmer_connected==0.7.8"],
|
||||
"dependencies": [],
|
||||
"codeowners": ["@gerard33", "@rikroe"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"description": "\u8bbe\u7f6eSony Bravia\u7535\u89c6\u96c6\u6210\u3002\u5982\u679c\u60a8\u5728\u914d\u7f6e\u65b9\u9762\u9047\u5230\u95ee\u9898\uff0c\u8bf7\u8bbf\u95ee\uff1ahttps://www.home-assistant.io/integrations/braviatv\n\u786e\u4fdd\u7535\u89c6\u5df2\u6253\u5f00\u3002"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"not_supported": "Ger\u00e4t nicht unterst\u00fctzt"
|
||||
},
|
||||
"step": {
|
||||
"auth": {
|
||||
"title": "Authentifiziere dich beim Ger\u00e4t"
|
||||
},
|
||||
"finish": {
|
||||
"data": {
|
||||
"name": "Name"
|
||||
}
|
||||
},
|
||||
"title": "W\u00e4hle einen Namen f\u00fcr das Ger\u00e4t"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25",
|
||||
"snmp_error": "SNMP\u670d\u52a1\u5668\u5df2\u5173\u95ed\u6216\u4e0d\u652f\u6301\u6253\u5370\u3002"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Kalendarz"
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "\u5bc6\u7801",
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3.",
|
||||
"unknown": "Error inesperat"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Ha fallat la connexi\u00f3",
|
||||
"invalid_auth": "Autenticaci\u00f3 inv\u00e0lida",
|
||||
"invalid_zone": "Zona inv\u00e0lida"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Registres"
|
||||
},
|
||||
"title": "Selecciona els registres a actualitzar"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "Token d'API"
|
||||
},
|
||||
"description": "Aquesta integraci\u00f3 necessita un token d'API creat amb permisos d'edici\u00f3 Zone:Zone:Read i Zone:DNS:Edit per a totes les zones del teu compte.",
|
||||
"title": "Connexi\u00f3 amb Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Zona"
|
||||
},
|
||||
"title": "Selecciona la zona a actualitzar"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace.",
|
||||
"unknown": "Neo\u010dek\u00e1van\u00e1 chyba"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit",
|
||||
"invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed",
|
||||
"invalid_zone": "Neplatn\u00e1 z\u00f3na"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Z\u00e1znamy"
|
||||
},
|
||||
"title": "Vyberte z\u00e1znamy, kter\u00e9 chcete aktualizovat"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "API token"
|
||||
},
|
||||
"title": "P\u0159ipojen\u00ed ke Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Z\u00f3na"
|
||||
},
|
||||
"title": "Vyberte z\u00f3nu, kter\u00e1 m\u00e1 b\u00fdt aktualizov\u00e1na"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Already configured. Only a single configuration possible.",
|
||||
"unknown": "Unexpected error"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Failed to connect",
|
||||
"invalid_auth": "Invalid authentication",
|
||||
"invalid_zone": "Invalid zone"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Records"
|
||||
},
|
||||
"title": "Choose the Records to Update"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "API Token"
|
||||
},
|
||||
"description": "This integration requires an API Token created with Zone:Zone:Read and Zone:DNS:Edit permissions for all zones in your account.",
|
||||
"title": "Connect to Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Zone"
|
||||
},
|
||||
"title": "Choose the Zone to Update"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"unknown": "Tundmatu viga"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u00dchendus nurjus",
|
||||
"invalid_auth": "Tuvastamise viga",
|
||||
"invalid_zone": "Sobimatu ala"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Kirjed"
|
||||
},
|
||||
"title": "Vali v\u00e4rskendatavad kirjed"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "Api v\u00f5ti"
|
||||
},
|
||||
"description": "Selle sidumise jaoks on vaja API tokenit, mis on loodud Zone: Zone: Read ja Zone: DNS: Edit k\u00f5igi oma konto alade \u00f5igusi.!?",
|
||||
"title": "Loo \u00fchendus Cloudflare'iga"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Ala"
|
||||
},
|
||||
"title": "Vali v\u00e4rskendatav ala"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja.",
|
||||
"unknown": "Nieoczekiwany b\u0142\u0105d"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia",
|
||||
"invalid_auth": "Niepoprawne uwierzytelnienie",
|
||||
"invalid_zone": "Nieprawid\u0142owa strefa"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Rekordy"
|
||||
},
|
||||
"title": "Wybierz rekordy do uaktualnienia"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "Token API"
|
||||
},
|
||||
"description": "Ta integracja wymaga tokena API utworzonego z uprawnieniami \"Zone:Zone:Read\" oraz \"Zone:DNS:Edit\" dla wszystkich stref na Twoim koncie.",
|
||||
"title": "Po\u0142\u0105czenie z Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Strefa"
|
||||
},
|
||||
"title": "Wybierz stref\u0119 do uaktualnienia"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.",
|
||||
"unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.",
|
||||
"invalid_auth": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.",
|
||||
"invalid_zone": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0437\u043e\u043d\u0430"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "\u0417\u0430\u043f\u0438\u0441\u0438"
|
||||
},
|
||||
"title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "\u0422\u043e\u043a\u0435\u043d API"
|
||||
},
|
||||
"description": "\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043a\u0435\u043d API, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 Zone:Zone:Read \u0438 Zone:DNS:Edit \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u043e\u043d \u0432 \u0412\u0430\u0448\u0435\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.",
|
||||
"title": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "\u0417\u043e\u043d\u0430"
|
||||
},
|
||||
"title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u043e\u043d\u0443 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"configure": "skonfiguruj",
|
||||
"configure": "konfiguruj",
|
||||
"configured": "skonfigurowany"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"off": "\u53ef\u4ee5\u5173\u95ed"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,12 @@
|
||||
{
|
||||
"device_automation": {
|
||||
"condition_type": {
|
||||
"is_closed": "{entity_name} \u5df2\u5173\u95ed"
|
||||
},
|
||||
"trigger_type": {
|
||||
"closed": "{entity_name}\u5df2\u5173\u95ed"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"closed": "\u5df2\u5173\u95ed",
|
||||
|
||||
@@ -4,9 +4,14 @@
|
||||
"already_configured": "\u8bbe\u5907\u5df2\u914d\u7f6e\u5b8c\u6210",
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25",
|
||||
"invalid_auth": "\u9a8c\u8bc1\u7801\u9519\u8bef"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API\u5bc6\u7801",
|
||||
"host": "\u4e3b\u673a"
|
||||
},
|
||||
"description": "\u8f93\u5165\u60a8\u7684 Daikin \u7a7a\u8c03\u7684 IP \u5730\u5740\u3002",
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
"side_3": "\u7b2c 3 \u9762",
|
||||
"side_4": "\u7b2c 4 \u9762",
|
||||
"side_5": "\u7b2c 5 \u9762",
|
||||
"side_6": "\u7b2c 6 \u9762"
|
||||
"side_6": "\u7b2c 6 \u9762",
|
||||
"turn_off": "\u5173\u95ed"
|
||||
},
|
||||
"trigger_type": {
|
||||
"remote_awakened": "\u8bbe\u5907\u5524\u9192",
|
||||
|
||||
@@ -9,7 +9,7 @@ from homeassistant.components.climate import (
|
||||
ClimateEntity,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import PRECISION_HALVES
|
||||
from homeassistant.const import PRECISION_HALVES, PRECISION_TENTHS
|
||||
from homeassistant.helpers.typing import HomeAssistantType
|
||||
|
||||
from .const import DOMAIN
|
||||
@@ -60,9 +60,14 @@ class DevoloClimateDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, ClimateEntit
|
||||
|
||||
@property
|
||||
def target_temperature(self) -> Optional[float]:
|
||||
"""Return the current temperature."""
|
||||
"""Return the target temperature."""
|
||||
return self._value
|
||||
|
||||
@property
|
||||
def target_temperature_step(self) -> float:
|
||||
"""Return the precision of the target temperature."""
|
||||
return PRECISION_HALVES
|
||||
|
||||
@property
|
||||
def hvac_mode(self) -> str:
|
||||
"""Return the supported HVAC mode."""
|
||||
@@ -86,7 +91,7 @@ class DevoloClimateDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, ClimateEntit
|
||||
@property
|
||||
def precision(self) -> float:
|
||||
"""Return the precision of the set temperature."""
|
||||
return PRECISION_HALVES
|
||||
return PRECISION_TENTHS
|
||||
|
||||
@property
|
||||
def supported_features(self):
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
"config": {
|
||||
"error": {
|
||||
"account_error": "\u8ba4\u8bc1\u65e0\u6548",
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25",
|
||||
"session_error": "\u8fde\u63a5\u5931\u8d25",
|
||||
"unknown": "\u672a\u77e5\u9519\u8bef"
|
||||
},
|
||||
@@ -9,7 +10,8 @@
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "\u5bc6\u7801",
|
||||
"server": "\u670d\u52a1\u5668"
|
||||
"server": "\u670d\u52a1\u5668",
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,8 +15,8 @@
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Wentylator"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"trigger_type": {
|
||||
"turned_off": "{entity_name} \u88ab\u5173\u95ed",
|
||||
"turned_on": "{entity_name} \u88ab\u5f00\u542f"
|
||||
"turned_on": "{entity_name} \u88ab\u6253\u5f00"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
|
||||
@@ -132,7 +132,10 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
elif (
|
||||
self._temp_sensor_device is None
|
||||
and "unit" in device.properties
|
||||
and "value" in device.properties
|
||||
and (
|
||||
"value" in device.properties
|
||||
or "heatingThermostatSetpoint" in device.properties
|
||||
)
|
||||
and (device.properties.unit == "C" or device.properties.unit == "F")
|
||||
):
|
||||
self._temp_sensor_device = FibaroDevice(device)
|
||||
@@ -141,6 +144,7 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
if (
|
||||
"setTargetLevel" in device.actions
|
||||
or "setThermostatSetpoint" in device.actions
|
||||
or "setHeatingThermostatSetpoint" in device.actions
|
||||
):
|
||||
self._target_temp_device = FibaroDevice(device)
|
||||
self._support_flags |= SUPPORT_TARGET_TEMPERATURE
|
||||
@@ -317,6 +321,8 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
"""Return the current temperature."""
|
||||
if self._temp_sensor_device:
|
||||
device = self._temp_sensor_device.fibaro_device
|
||||
if device.properties.heatingThermostatSetpoint:
|
||||
return float(device.properties.heatingThermostatSetpoint)
|
||||
return float(device.properties.value)
|
||||
return None
|
||||
|
||||
@@ -325,6 +331,8 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
"""Return the temperature we try to reach."""
|
||||
if self._target_temp_device:
|
||||
device = self._target_temp_device.fibaro_device
|
||||
if device.properties.heatingThermostatSetpointFuture:
|
||||
return float(device.properties.heatingThermostatSetpointFuture)
|
||||
return float(device.properties.targetLevel)
|
||||
return None
|
||||
|
||||
@@ -335,5 +343,7 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
if temperature is not None:
|
||||
if "setThermostatSetpoint" in target.fibaro_device.actions:
|
||||
target.action("setThermostatSetpoint", self.fibaro_op_mode, temperature)
|
||||
elif "setHeatingThermostatSetpoint" in target.fibaro_device.actions:
|
||||
target.action("setHeatingThermostatSetpoint", temperature)
|
||||
else:
|
||||
target.action("setTargetLevel", temperature)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"auth_failed": "\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef"
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"domain": "frontend",
|
||||
"name": "Home Assistant Frontend",
|
||||
"documentation": "https://www.home-assistant.io/integrations/frontend",
|
||||
"requirements": ["home-assistant-frontend==20201021.1"],
|
||||
"requirements": ["home-assistant-frontend==20201021.2"],
|
||||
"dependencies": [
|
||||
"api",
|
||||
"auth",
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"title": "\u683c\u529b\u7a7a\u8c03"
|
||||
}
|
||||
@@ -5,9 +5,9 @@
|
||||
"home": "w domu",
|
||||
"locked": "Zablokowane",
|
||||
"not_home": "poza domem",
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"off": "wy\u0142.",
|
||||
"ok": "ok",
|
||||
"on": "w\u0142\u0105czony",
|
||||
"on": "w\u0142.",
|
||||
"open": "otwarte",
|
||||
"problem": "problem",
|
||||
"unlocked": "Odblokowany"
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,6 @@
|
||||
"domain": "hikvision",
|
||||
"name": "Hikvision",
|
||||
"documentation": "https://www.home-assistant.io/integrations/hikvision",
|
||||
"requirements": ["pyhik==0.2.7"],
|
||||
"requirements": ["pyhik==0.2.8"],
|
||||
"codeowners": ["@mezz64"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,10 @@
|
||||
"options": {
|
||||
"step": {
|
||||
"advanced": {
|
||||
"data": {
|
||||
"safe_mode": "Veilige modus (alleen inschakelen als het koppelen mislukt)"
|
||||
},
|
||||
"description": "Deze instellingen hoeven alleen te worden aangepast als HomeKit niet functioneert.",
|
||||
"title": "Geavanceerde configuratie"
|
||||
},
|
||||
"exclude": {
|
||||
@@ -30,9 +34,11 @@
|
||||
"init": {
|
||||
"data": {
|
||||
"include_domains": "Op te nemen domeinen"
|
||||
}
|
||||
},
|
||||
"title": "Selecteer domeinen om zichtbaar te maken."
|
||||
},
|
||||
"yaml": {
|
||||
"description": "Deze invoer wordt beheerd via YAML",
|
||||
"title": "Pas de HomeKit Bridge-opties aan"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"unknown": "Ein unbekannter Fehler ist aufgetreten."
|
||||
},
|
||||
"error": {
|
||||
"invalid_pin": "Ung\u00fcltige PIN, bitte versuche es erneut.",
|
||||
"invalid_sgtin_or_pin": "Ung\u00fcltige PIN, bitte versuche es erneut.",
|
||||
"press_the_button": "Bitte dr\u00fccke die blaue Taste.",
|
||||
"register_failed": "Registrierung fehlgeschlagen, bitte versuche es erneut.",
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"connection_failed": "\u8fde\u63a5\u5931\u8d25",
|
||||
"incorrect_username": "\u7528\u6237\u540d\u9519\u8bef",
|
||||
"incorrect_username_or_password": "\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@
|
||||
"data": {
|
||||
"host": ""
|
||||
},
|
||||
"title": "Valige Hue sild"
|
||||
"title": "Vali Hue sild"
|
||||
},
|
||||
"link": {
|
||||
"description": "Vajutage silla nuppu, et registreerida Philips Hue Home Assistant abil. \n\n ! [Nupu asukoht sillal] (/ static / images / config_philips_hue.jpg)",
|
||||
|
||||
@@ -25,5 +25,10 @@
|
||||
"title": "\u8fde\u63a5\u4e2d\u67a2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"device_automation": {
|
||||
"trigger_subtype": {
|
||||
"turn_off": "\u5173\u95ed"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,8 +20,8 @@
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Nawil\u017cacz"
|
||||
|
||||
@@ -6,6 +6,13 @@
|
||||
"toggle": "\u5207\u6362 {entity_name} \u5f00\u5173",
|
||||
"turn_off": "\u5173\u95ed {entity_name}",
|
||||
"turn_on": "\u6253\u5f00 {entity_name}"
|
||||
},
|
||||
"condition_type": {
|
||||
"is_off": "{entity_name} \u5df2\u5173\u95ed"
|
||||
},
|
||||
"trigger_type": {
|
||||
"turned_off": "{entity_name} \u88ab\u5173\u95ed",
|
||||
"turned_on": "{entity_name} \u88ab\u6253\u5f00"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"connection_failure": "\u65e0\u6cd5\u8fde\u63a5\u5230iAqualink\u3002\u68c0\u67e5\u60a8\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\u3002"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"description": "\u8bf7\u8f93\u5165\u60a8\u7684iAqualink\u5e10\u6237\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\u3002"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -187,7 +187,7 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool
|
||||
icloud_account = hass.data[DOMAIN].get(account_identifier)
|
||||
if icloud_account is None:
|
||||
for account in hass.data[DOMAIN].values():
|
||||
if account.name == account_identifier:
|
||||
if account.username == account_identifier:
|
||||
icloud_account = account
|
||||
|
||||
if icloud_account is None:
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
"validate_verification_code": "\u65e0\u6cd5\u9a8c\u8bc1\u9a8c\u8bc1\u7801\uff0c\u8bf7\u9009\u62e9\u53d7\u4fe1\u4efb\u7684\u8bbe\u5907\u5e76\u91cd\u65b0\u5f00\u59cb\u9a8c\u8bc1"
|
||||
},
|
||||
"step": {
|
||||
"reauth": {
|
||||
"data": {
|
||||
"password": "\u5bc6\u7801"
|
||||
}
|
||||
},
|
||||
"trusted_device": {
|
||||
"data": {
|
||||
"trusted_device": "\u53d7\u4fe1\u4efb\u7684\u8bbe\u5907"
|
||||
@@ -18,7 +23,8 @@
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "\u5bc6\u7801"
|
||||
"password": "\u5bc6\u7801",
|
||||
"username": "\u90ae\u7bb1"
|
||||
},
|
||||
"description": "\u8bf7\u8f93\u5165\u51ed\u636e",
|
||||
"title": "iCloud \u51ed\u636e"
|
||||
|
||||
@@ -26,6 +26,7 @@ from homeassistant.const import (
|
||||
STATE_UNAVAILABLE,
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers import event as event_helper, state as state_helper
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity_values import EntityValues
|
||||
@@ -500,6 +501,7 @@ class InfluxThread(threading.Thread):
|
||||
self.shutdown = False
|
||||
hass.bus.listen(EVENT_STATE_CHANGED, self._event_listener)
|
||||
|
||||
@callback
|
||||
def _event_listener(self, event):
|
||||
"""Listen for new messages on the bus and queue them for Influx."""
|
||||
item = (time.monotonic(), event)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Pole warto\u015bci logicznej"
|
||||
|
||||
@@ -159,7 +159,7 @@ async def async_setup_entry(hass, entry):
|
||||
identifiers={(DOMAIN, str(devices.modem.address))},
|
||||
manufacturer="Smart Home",
|
||||
name=f"{devices.modem.description} {devices.modem.address}",
|
||||
model=f"{devices.modem.model} (0x{devices.modem.cat:02x}, 0x{devices.modem.subcat:02x})",
|
||||
model=f"{devices.modem.model} ({devices.modem.cat!r}, 0x{devices.modem.subcat:02x})",
|
||||
sw_version=f"{devices.modem.firmware:02x} Engine Version: {devices.modem.engine_version}",
|
||||
)
|
||||
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"error": {
|
||||
"select_single": "W\u00e4hle eine Option aus."
|
||||
},
|
||||
"step": {
|
||||
"add_override": {
|
||||
"title": "Insteon"
|
||||
|
||||
@@ -60,7 +60,8 @@
|
||||
"already_configured": "Insteoni modemi \u00fchendus on juba seadistatud"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u00dchendamine nurjus"
|
||||
"cannot_connect": "\u00dchendamine nurjus",
|
||||
"input_error": "Vigane sisestus, kontrolli andmeid"
|
||||
},
|
||||
"step": {
|
||||
"add_override": {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"hub2": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
},
|
||||
"hubv2": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,12 +6,17 @@
|
||||
"data": {
|
||||
"password": "Passwort",
|
||||
"username": "Benutzername"
|
||||
}
|
||||
},
|
||||
"description": "Bitte gib deinen Kodi-Benutzernamen und Passwort ein. Diese findest du unter System/Einstellungen/Netzwerk/Dienste."
|
||||
},
|
||||
"discovery_confirm": {
|
||||
"description": "M\u00f6chtest du Kodi (` {name} `) zu Home Assistant hinzuf\u00fcgen?"
|
||||
},
|
||||
"host": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"port": "Port"
|
||||
"port": "Port",
|
||||
"ssl": "\u00dcber SSL verbinden"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"credentials": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -52,7 +52,8 @@
|
||||
"poll_interval": "Poll interval (minuten) (optioneel)",
|
||||
"type": "Type sensor"
|
||||
},
|
||||
"description": "{zone} opties"
|
||||
"description": "{zone} opties",
|
||||
"title": "Configureer digitale sensor"
|
||||
},
|
||||
"options_io": {
|
||||
"data": {
|
||||
@@ -90,11 +91,13 @@
|
||||
},
|
||||
"options_switch": {
|
||||
"data": {
|
||||
"momentary": "Pulsduur (ms) (optioneel)",
|
||||
"more_states": "Aanvullende statussen voor deze zone configureren",
|
||||
"name": "Naam (optioneel)",
|
||||
"pause": "Pauze tussen de pulsen (ms) (optioneel)",
|
||||
"repeat": "Aantal herhalingen (-1=oneindig) (optioneel)"
|
||||
},
|
||||
"description": "{zone} opties: status {state}",
|
||||
"title": "Schakelbare uitgang configureren"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ class LcnOutputsCover(LcnDevice, CoverEntity):
|
||||
self._is_opening = False
|
||||
self._is_closing = True
|
||||
state = pypck.lcn_defs.MotorStateModifier.DOWN
|
||||
self.address_connection.control_motors_outputs(state)
|
||||
self.address_connection.control_motors_outputs(state, self.reverse_time)
|
||||
self.async_write_ha_state()
|
||||
|
||||
async def async_open_cover(self, **kwargs):
|
||||
@@ -106,7 +106,7 @@ class LcnOutputsCover(LcnDevice, CoverEntity):
|
||||
self._is_closing = False
|
||||
self._is_opening = False
|
||||
state = pypck.lcn_defs.MotorStateModifier.STOP
|
||||
self.address_connection.control_motors_outputs(state, self.reverse_time)
|
||||
self.address_connection.control_motors_outputs(state)
|
||||
self.async_write_ha_state()
|
||||
|
||||
def input_received(self, input_obj):
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"invalid_auth": "\u65e0\u6548\u7684\u8eab\u4efd\u9a8c\u8bc1"
|
||||
},
|
||||
"error": {
|
||||
"invalid_auth": "\u65e0\u6548\u7684\u8eab\u4efd\u9a8c\u8bc1",
|
||||
"invalid_credentials": "\u65e0\u6548\u7684\u8eab\u4efd\u8ba4\u8bc1",
|
||||
"invalid_username": "\u65e0\u6548\u7684\u7528\u6237\u540d"
|
||||
},
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "\u015awiat\u0142o"
|
||||
|
||||
@@ -21,6 +21,8 @@ DEFAULT_VOICE = "cmu-slt-hsmm"
|
||||
DEFAULT_CODEC = "WAVE_FILE"
|
||||
DEFAULT_EFFECTS = {}
|
||||
|
||||
MAP_MARYTTS_CODEC = {"WAVE_FILE": "wav", "AIFF_FILE": "aiff", "AU_FILE": "au"}
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_HOST, default=DEFAULT_HOST): cv.string,
|
||||
@@ -81,5 +83,6 @@ class MaryTTSProvider(Provider):
|
||||
effects = options[CONF_EFFECT]
|
||||
|
||||
data = self._mary.speak(message, effects)
|
||||
audiotype = MAP_MARYTTS_CODEC[self._mary.codec]
|
||||
|
||||
return self._mary.codec, data
|
||||
return audiotype, data
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
"state": {
|
||||
"_": {
|
||||
"idle": "nieaktywny",
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony",
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142.",
|
||||
"paused": "wstrzymany",
|
||||
"playing": "odtwarzanie",
|
||||
"standby": "tryb czuwania"
|
||||
|
||||
@@ -4,7 +4,16 @@
|
||||
"already_configured": "Stadt bereits konfiguriert",
|
||||
"unknown": "Unbekannter Fehler: Bitte versuchen Sie es sp\u00e4ter erneut"
|
||||
},
|
||||
"error": {
|
||||
"empty": "Kein Ergebnis bei der Stadtsuche: Bitte \u00fcberpr\u00fcfe das Stadtfeld"
|
||||
},
|
||||
"step": {
|
||||
"cities": {
|
||||
"data": {
|
||||
"city": "Stadt"
|
||||
},
|
||||
"description": "W\u00e4hle deine Stadt aus der Liste"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"city": "Stadt"
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25",
|
||||
"unknown": "\u672a\u77e5\u9519\u8bef"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"latitude": "\u7eac\u5ea6",
|
||||
"longitude": "\u7ecf\u5ea6"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,5 +47,14 @@
|
||||
"button_short_release": "\"{subtype}\" \u91ca\u653e",
|
||||
"button_triple_press": "\"{subtype}\" \u4e09\u8fde\u51fb"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"broker": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,12 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Seade on juba h\u00e4\u00e4lestatud",
|
||||
"invalid_auth": "Tuvastamise viga"
|
||||
"invalid_auth": "Tuvastamise viga",
|
||||
"invalid_credentials": "Sobimatu mandaat"
|
||||
},
|
||||
"error": {
|
||||
"invalid_auth": "Tuvastamise viga",
|
||||
"invalid_credentials": "Sobimatu mandaat",
|
||||
"unexpected_error": "Ootamatu t\u00f5rge",
|
||||
"unknown": "Ootamatu t\u00f5rge"
|
||||
},
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,11 @@ from homeassistant.helpers import (
|
||||
config_entry_oauth2_flow,
|
||||
config_validation as cv,
|
||||
)
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect, dispatcher_send
|
||||
from homeassistant.helpers.dispatcher import (
|
||||
async_dispatcher_connect,
|
||||
async_dispatcher_send,
|
||||
dispatcher_send,
|
||||
)
|
||||
from homeassistant.helpers.entity import Entity
|
||||
|
||||
from . import api, config_flow, local_auth
|
||||
@@ -176,7 +180,7 @@ class SignalUpdateCallback(EventCallback):
|
||||
# This event triggered an update to a device that changed some
|
||||
# properties which the DeviceManager should already have received.
|
||||
# Send a signal to refresh state of all listening devices.
|
||||
dispatcher_send(self._hass, SIGNAL_NEST_UPDATE)
|
||||
async_dispatcher_send(self._hass, SIGNAL_NEST_UPDATE)
|
||||
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
||||
@@ -203,7 +207,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
||||
auth, config[CONF_PROJECT_ID], config[CONF_SUBSCRIBER_ID]
|
||||
)
|
||||
subscriber.set_update_callback(SignalUpdateCallback(hass))
|
||||
hass.loop.create_task(subscriber.start_async())
|
||||
asyncio.create_task(subscriber.start_async())
|
||||
hass.data[DOMAIN][entry.entry_id] = subscriber
|
||||
|
||||
for component in PLATFORMS:
|
||||
|
||||
@@ -61,6 +61,10 @@ class CodeInvalid(NestAuthError):
|
||||
"""Raised when invalid authorization code."""
|
||||
|
||||
|
||||
class UnexpectedStateError(HomeAssistantError):
|
||||
"""Raised when the config flow is invoked in a 'should not happen' case."""
|
||||
|
||||
|
||||
@config_entries.HANDLERS.register(DOMAIN)
|
||||
class NestFlowHandler(
|
||||
config_entry_oauth2_flow.AbstractOAuth2FlowHandler, domain=DOMAIN
|
||||
@@ -111,7 +115,7 @@ class NestFlowHandler(
|
||||
async def async_step_init(self, user_input=None):
|
||||
"""Handle a flow start."""
|
||||
if self.is_sdm_api():
|
||||
return None
|
||||
raise UnexpectedStateError("Step only supported for legacy API")
|
||||
|
||||
flows = self.hass.data.get(DATA_FLOW_IMPL, {})
|
||||
|
||||
@@ -142,7 +146,7 @@ class NestFlowHandler(
|
||||
deliver the authentication code.
|
||||
"""
|
||||
if self.is_sdm_api():
|
||||
return None
|
||||
raise UnexpectedStateError("Step only supported for legacy API")
|
||||
|
||||
flow = self.hass.data[DATA_FLOW_IMPL][self.flow_impl]
|
||||
|
||||
@@ -185,7 +189,7 @@ class NestFlowHandler(
|
||||
async def async_step_import(self, info):
|
||||
"""Import existing auth from Nest."""
|
||||
if self.is_sdm_api():
|
||||
return None
|
||||
raise UnexpectedStateError("Step only supported for legacy API")
|
||||
|
||||
if self.hass.config_entries.async_entries(DOMAIN):
|
||||
return self.async_abort(reason="single_instance_allowed")
|
||||
|
||||
@@ -13,5 +13,5 @@ async def async_setup_entry(
|
||||
) -> None:
|
||||
"""Set up the sensors."""
|
||||
if DATA_SDM not in entry.data:
|
||||
return await async_setup_legacy_entry(hass, entry, async_add_entities)
|
||||
return await async_setup_sdm_entry(hass, entry, async_add_entities)
|
||||
await async_setup_legacy_entry(hass, entry, async_add_entities)
|
||||
await async_setup_sdm_entry(hass, entry, async_add_entities)
|
||||
|
||||
@@ -18,6 +18,13 @@ from homeassistant.helpers.typing import HomeAssistantType
|
||||
|
||||
from .const import DOMAIN, SIGNAL_NEST_UPDATE
|
||||
|
||||
DEVICE_TYPE_MAP = {
|
||||
"sdm.devices.types.CAMERA": "Camera",
|
||||
"sdm.devices.types.DISPLAY": "Display",
|
||||
"sdm.devices.types.DOORBELL": "Doorbell",
|
||||
"sdm.devices.types.THERMOSTAT": "Thermostat",
|
||||
}
|
||||
|
||||
|
||||
async def async_setup_sdm_entry(
|
||||
hass: HomeAssistantType, entry: ConfigEntry, async_add_entities
|
||||
@@ -46,7 +53,7 @@ class SensorBase(Entity):
|
||||
self._device = device
|
||||
|
||||
@property
|
||||
def should_pool(self) -> bool:
|
||||
def should_poll(self) -> bool:
|
||||
"""Disable polling since entities have state pushed via pubsub."""
|
||||
return False
|
||||
|
||||
@@ -89,28 +96,19 @@ class SensorBase(Entity):
|
||||
# The API intentionally returns minimal information about specific
|
||||
# devices, instead relying on traits, but we can infer a generic model
|
||||
# name based on the type
|
||||
if self._device.type == "sdm.devices.types.CAMERA":
|
||||
return "Camera"
|
||||
if self._device.type == "sdm.devices.types.DISPLAY":
|
||||
return "Display"
|
||||
if self._device.type == "sdm.devices.types.DOORBELL":
|
||||
return "Doorbell"
|
||||
if self._device.type == "sdm.devices.types.THERMOSTAT":
|
||||
return "Thermostat"
|
||||
return None
|
||||
return DEVICE_TYPE_MAP.get(self._device.type)
|
||||
|
||||
async def async_added_to_hass(self):
|
||||
"""Run when entity is added to register update signal handler."""
|
||||
|
||||
async def async_update_state():
|
||||
"""Update sensor state."""
|
||||
await self.async_update_ha_state(True)
|
||||
|
||||
# Event messages trigger the SIGNAL_NEST_UPDATE, which is intercepted
|
||||
# here to re-fresh the signals from _device. Unregister this callback
|
||||
# when the entity is removed.
|
||||
self.async_on_remove(
|
||||
async_dispatcher_connect(self.hass, SIGNAL_NEST_UPDATE, async_update_state)
|
||||
async_dispatcher_connect(
|
||||
self.hass,
|
||||
SIGNAL_NEST_UPDATE,
|
||||
self.async_write_ha_state,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"no_flows": "Necessites configurar Nest abans de poder autenticar-t'hi. Llegeix les [instruccions](https://www.home-assistant.io/components/nest/).",
|
||||
"single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3."
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "Autenticaci\u00f3 exitosa"
|
||||
},
|
||||
"error": {
|
||||
"internal_error": "Error intern al validar el codi",
|
||||
"invalid_code": "Codi inv\u00e0lid",
|
||||
@@ -29,6 +32,9 @@
|
||||
},
|
||||
"description": "Per enlla\u00e7ar el teu compte de Nest, [autoritza el teu compte]({url}). \n\nDespr\u00e9s de l'autoritzaci\u00f3, copia i enganxa el codi pin que es mostra a sota.",
|
||||
"title": "Enlla\u00e7 amb el compte de Nest"
|
||||
},
|
||||
"pick_implementation": {
|
||||
"title": "Selecciona el m\u00e8tode d'autenticaci\u00f3"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"no_flows": "Pot\u0159ebujete nakonfigurovat Nest, abyste se s n\u00edm mohli autentizovat. [P\u0159e\u010dt\u011bte si pros\u00edm pokyny] (https://www.home-assistant.io/components/nest/).",
|
||||
"single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace."
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "\u00dasp\u011b\u0161n\u011b ov\u011b\u0159eno"
|
||||
},
|
||||
"error": {
|
||||
"internal_error": "Intern\u00ed chyba ov\u011b\u0159en\u00ed k\u00f3du",
|
||||
"invalid_code": "Neplatn\u00fd k\u00f3d",
|
||||
@@ -29,6 +32,9 @@
|
||||
},
|
||||
"description": "Chcete-li propojit \u00fa\u010det Nest, [autorizujte sv\u016fj \u00fa\u010det]({url}). \n\n Po autorizaci zkop\u00edrujte n\u00ed\u017ee uveden\u00fd k\u00f3d PIN.",
|
||||
"title": "Propojit s Nest \u00fa\u010dtem"
|
||||
},
|
||||
"pick_implementation": {
|
||||
"title": "Vyberte metodu ov\u011b\u0159en\u00ed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"no_flows": "You need to configure Nest before being able to authenticate with it. [Please read the instructions](https://www.home-assistant.io/components/nest/).",
|
||||
"single_instance_allowed": "Already configured. Only a single configuration possible."
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "Successfully authenticated"
|
||||
},
|
||||
"error": {
|
||||
"internal_error": "Internal error validating code",
|
||||
"invalid_code": "Invalid code",
|
||||
@@ -29,6 +32,9 @@
|
||||
},
|
||||
"description": "To link your Nest account, [authorize your account]({url}).\n\nAfter authorization, copy-paste the provided pin code below.",
|
||||
"title": "Link Nest Account"
|
||||
},
|
||||
"pick_implementation": {
|
||||
"title": "Pick Authentication Method"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
},
|
||||
"description": "Nest-i konto linkimiseks [authorize your account] ({url}).\n\nP\u00e4rast autoriseerimist kopeeri allolev PIN kood.",
|
||||
"title": "Lingi Nesti konto"
|
||||
},
|
||||
"pick_implementation": {
|
||||
"title": "Vali tuvastusmeetod"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"no_flows": "Musisz skonfigurowa\u0107 Nest, aby m\u00f3c si\u0119 z nim uwierzytelni\u0107. Zapoznaj si\u0119 z [instrukcj\u0105](https://www.home-assistant.io/components/nest/).",
|
||||
"single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja."
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "Pomy\u015blnie uwierzytelniono"
|
||||
},
|
||||
"error": {
|
||||
"internal_error": "Wewn\u0119trzny b\u0142\u0105d sprawdzania poprawno\u015bci kodu",
|
||||
"invalid_code": "Nieprawid\u0142owy kod",
|
||||
@@ -29,6 +32,9 @@
|
||||
},
|
||||
"description": "Aby po\u0142\u0105czy\u0107 z kontem Nest, [wykonaj autoryzacj\u0119]({url}). \n\n Po autoryzacji skopiuj i wklej podany kod PIN poni\u017cej.",
|
||||
"title": "Po\u0142\u0105czenie z kontem Nest"
|
||||
},
|
||||
"pick_implementation": {
|
||||
"title": "Wybierz metod\u0119 uwierzytelniania"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"no_flows": "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 Nest \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 [\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438](https://www.home-assistant.io/components/nest/).",
|
||||
"single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e."
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e."
|
||||
},
|
||||
"error": {
|
||||
"internal_error": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430.",
|
||||
"invalid_code": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434.",
|
||||
@@ -29,6 +32,9 @@
|
||||
},
|
||||
"description": "[\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0439\u0442\u0435\u0441\u044c]({url}), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Nest. \n\n \u041f\u043e\u0441\u043b\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439 \u043f\u0438\u043d-\u043a\u043e\u0434.",
|
||||
"title": "\u041f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Nest"
|
||||
},
|
||||
"pick_implementation": {
|
||||
"title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
"error": {
|
||||
"internal_error": "\u9a8c\u8bc1\u4ee3\u7801\u65f6\u53d1\u751f\u5185\u90e8\u9519\u8bef",
|
||||
"invalid_code": "\u9a8c\u8bc1\u7801\u65e0\u6548",
|
||||
"invalid_pin": "PIN\u7801\u65e0\u6548",
|
||||
"timeout": "\u9a8c\u8bc1\u7801\u8d85\u65f6",
|
||||
"unknown": "\u9a8c\u8bc1\u7801\u672a\u77e5\u9519\u8bef"
|
||||
},
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"no_flows": "\u5fc5\u9808\u5148\u8a2d\u5b9a Nest \u65b9\u80fd\u9032\u884c\u8a8d\u8b49\u3002[\u8acb\u53c3\u95b1\u6559\u5b78\u6307\u5f15](https://www.home-assistant.io/components/nest/)\u3002",
|
||||
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u8a2d\u5099\u3002"
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "\u5df2\u6210\u529f\u8a8d\u8b49"
|
||||
},
|
||||
"error": {
|
||||
"internal_error": "\u8a8d\u8b49\u78bc\u5167\u90e8\u932f\u8aa4",
|
||||
"invalid_code": "\u8a8d\u8b49\u78bc\u7121\u6548",
|
||||
@@ -29,6 +32,9 @@
|
||||
},
|
||||
"description": "\u6b32\u9023\u7d50 Nest \u5e33\u865f\uff0c[\u8a8d\u8b49\u5e33\u865f]({url}).\n\n\u65bc\u8a8d\u8b49\u5f8c\uff0c\u8907\u88fd\u4e26\u8cbc\u4e0a\u4e0b\u65b9\u7684\u8a8d\u8b49\u78bc\u3002",
|
||||
"title": "\u9023\u7d50 Nest \u5e33\u865f"
|
||||
},
|
||||
"pick_implementation": {
|
||||
"title": "\u9078\u64c7\u9a57\u8b49\u6a21\u5f0f"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,39 +48,53 @@ SUPPORTED_PUBLIC_SENSOR_TYPES = [
|
||||
]
|
||||
|
||||
SENSOR_TYPES = {
|
||||
"temperature": ["Temperature", TEMP_CELSIUS, None, DEVICE_CLASS_TEMPERATURE],
|
||||
"temp_trend": ["Temperature trend", None, "mdi:trending-up", None],
|
||||
"co2": ["CO2", CONCENTRATION_PARTS_PER_MILLION, "mdi:molecule-co2", None],
|
||||
"pressure": ["Pressure", PRESSURE_MBAR, None, DEVICE_CLASS_PRESSURE],
|
||||
"pressure_trend": ["Pressure trend", None, "mdi:trending-up", None],
|
||||
"noise": ["Noise", "dB", "mdi:volume-high", None],
|
||||
"humidity": ["Humidity", PERCENTAGE, None, DEVICE_CLASS_HUMIDITY],
|
||||
"rain": ["Rain", LENGTH_MILLIMETERS, "mdi:weather-rainy", None],
|
||||
"sum_rain_1": ["Rain last hour", LENGTH_MILLIMETERS, "mdi:weather-rainy", None],
|
||||
"sum_rain_24": ["Rain today", LENGTH_MILLIMETERS, "mdi:weather-rainy", None],
|
||||
"battery_percent": ["Battery Percent", PERCENTAGE, None, DEVICE_CLASS_BATTERY],
|
||||
"windangle": ["Direction", None, "mdi:compass-outline", None],
|
||||
"windangle_value": ["Angle", DEGREE, "mdi:compass-outline", None],
|
||||
"temperature": ["Temperature", TEMP_CELSIUS, None, DEVICE_CLASS_TEMPERATURE, True],
|
||||
"temp_trend": ["Temperature trend", None, "mdi:trending-up", None, False],
|
||||
"co2": ["CO2", CONCENTRATION_PARTS_PER_MILLION, "mdi:molecule-co2", None, True],
|
||||
"pressure": ["Pressure", PRESSURE_MBAR, None, DEVICE_CLASS_PRESSURE, True],
|
||||
"pressure_trend": ["Pressure trend", None, "mdi:trending-up", None, False],
|
||||
"noise": ["Noise", "dB", "mdi:volume-high", None, True],
|
||||
"humidity": ["Humidity", PERCENTAGE, None, DEVICE_CLASS_HUMIDITY, True],
|
||||
"rain": ["Rain", LENGTH_MILLIMETERS, "mdi:weather-rainy", None, True],
|
||||
"sum_rain_1": [
|
||||
"Rain last hour",
|
||||
LENGTH_MILLIMETERS,
|
||||
"mdi:weather-rainy",
|
||||
None,
|
||||
False,
|
||||
],
|
||||
"sum_rain_24": ["Rain today", LENGTH_MILLIMETERS, "mdi:weather-rainy", None, True],
|
||||
"battery_percent": [
|
||||
"Battery Percent",
|
||||
PERCENTAGE,
|
||||
None,
|
||||
DEVICE_CLASS_BATTERY,
|
||||
True,
|
||||
],
|
||||
"windangle": ["Direction", None, "mdi:compass-outline", None, True],
|
||||
"windangle_value": ["Angle", DEGREE, "mdi:compass-outline", None, False],
|
||||
"windstrength": [
|
||||
"Wind Strength",
|
||||
SPEED_KILOMETERS_PER_HOUR,
|
||||
"mdi:weather-windy",
|
||||
None,
|
||||
True,
|
||||
],
|
||||
"gustangle": ["Gust Direction", None, "mdi:compass-outline", None],
|
||||
"gustangle_value": ["Gust Angle", DEGREE, "mdi:compass-outline", None],
|
||||
"gustangle": ["Gust Direction", None, "mdi:compass-outline", None, False],
|
||||
"gustangle_value": ["Gust Angle", DEGREE, "mdi:compass-outline", None, False],
|
||||
"guststrength": [
|
||||
"Gust Strength",
|
||||
SPEED_KILOMETERS_PER_HOUR,
|
||||
"mdi:weather-windy",
|
||||
None,
|
||||
False,
|
||||
],
|
||||
"reachable": ["Reachability", None, "mdi:signal", None],
|
||||
"rf_status": ["Radio", None, "mdi:signal", None],
|
||||
"rf_status_lvl": ["Radio Level", "", None, DEVICE_CLASS_SIGNAL_STRENGTH],
|
||||
"wifi_status": ["Wifi", None, "mdi:wifi", None],
|
||||
"wifi_status_lvl": ["Wifi Level", "dBm", None, DEVICE_CLASS_SIGNAL_STRENGTH],
|
||||
"health_idx": ["Health", None, "mdi:cloud", None],
|
||||
"reachable": ["Reachability", None, "mdi:signal", None, False],
|
||||
"rf_status": ["Radio", None, "mdi:signal", None, False],
|
||||
"rf_status_lvl": ["Radio Level", "", None, DEVICE_CLASS_SIGNAL_STRENGTH, False],
|
||||
"wifi_status": ["Wifi", None, "mdi:wifi", None, False],
|
||||
"wifi_status_lvl": ["Wifi Level", "dBm", None, DEVICE_CLASS_SIGNAL_STRENGTH, False],
|
||||
"health_idx": ["Health", None, "mdi:cloud", None, True],
|
||||
}
|
||||
|
||||
MODULE_TYPE_OUTDOOR = "NAModule1"
|
||||
@@ -257,6 +271,7 @@ class NetatmoSensor(NetatmoBase):
|
||||
self._unit_of_measurement = SENSOR_TYPES[self.type][1]
|
||||
self._model = device["type"]
|
||||
self._unique_id = f"{self._id}-{self.type}"
|
||||
self._enabled_default = SENSOR_TYPES[self.type][4]
|
||||
|
||||
@property
|
||||
def icon(self):
|
||||
@@ -283,6 +298,11 @@ class NetatmoSensor(NetatmoBase):
|
||||
"""Return entity availability."""
|
||||
return self._state is not None
|
||||
|
||||
@property
|
||||
def entity_registry_enabled_default(self) -> bool:
|
||||
"""Return if the entity should be enabled when first added to the entity registry."""
|
||||
return self._enabled_default
|
||||
|
||||
@callback
|
||||
def async_update_callback(self):
|
||||
"""Update the entity's state."""
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user