Merge pull request #3348 from home-assistant/dev

20190710.0
This commit is contained in:
Paulus Schoutsen 2019-07-10 10:35:46 -07:00 committed by GitHub
commit 0e1ae3926b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 531 additions and 263 deletions

View File

@ -1,6 +1,17 @@
const del = require("del"); const del = require("del");
const gulp = require("gulp"); const gulp = require("gulp");
const config = require("../paths"); const config = require("../paths");
require("./translations");
gulp.task("clean", () => del([config.root, config.build_dir])); gulp.task(
gulp.task("clean-demo", () => del([config.demo_root, config.build_dir])); "clean",
gulp.parallel("clean-translations", function cleanOutputAndBuildDir() {
return del([config.root, config.build_dir]);
})
);
gulp.task(
"clean-demo",
gulp.parallel("clean-translations", function cleanOutputAndBuildDir() {
return del([config.demo_root, config.build_dir]);
})
);

View File

@ -69,10 +69,6 @@ function copyMapPanel(staticDir) {
function compressStatic(staticDir) { function compressStatic(staticDir) {
const staticPath = genStaticPath(staticDir); const staticPath = genStaticPath(staticDir);
const fonts = gulp
.src(staticPath("fonts/**/*.ttf"))
.pipe(zopfli())
.pipe(gulp.dest(staticPath("fonts")));
const polyfills = gulp const polyfills = gulp
.src(staticPath("polyfills/*.js")) .src(staticPath("polyfills/*.js"))
.pipe(zopfli()) .pipe(zopfli())
@ -82,7 +78,7 @@ function compressStatic(staticDir) {
.pipe(zopfli()) .pipe(zopfli())
.pipe(gulp.dest(staticPath("translations"))); .pipe(gulp.dest(staticPath("translations")));
return merge(fonts, polyfills, translations); return merge(polyfills, translations);
} }
gulp.task("copy-static", (done) => { gulp.task("copy-static", (done) => {

View File

@ -124,18 +124,28 @@ gulp.task(taskName, function() {
}); });
tasks.push(taskName); tasks.push(taskName);
taskName = "create-test-metadata"; gulp.task("ensure-translations-build-dir", (done) => {
gulp.task(taskName, function(cb) { if (!fs.existsSync(workDir)) {
fs.writeFile( fs.mkdirSync(workDir);
workDir + "/testMetadata.json", }
JSON.stringify({ done();
test: {
nativeName: "Test",
},
}),
cb
);
}); });
taskName = "create-test-metadata";
gulp.task(
taskName,
gulp.series("ensure-translations-build-dir", function writeTestMetaData(cb) {
fs.writeFile(
workDir + "/testMetadata.json",
JSON.stringify({
test: {
nativeName: "Test",
},
}),
cb
);
})
);
tasks.push(taskName); tasks.push(taskName);
taskName = "create-test-translation"; taskName = "create-test-translation";

View File

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup( setup(
name="home-assistant-frontend", name="home-assistant-frontend",
version="20190705.0", version="20190710.0",
description="The Home Assistant frontend", description="The Home Assistant frontend",
url="https://github.com/home-assistant/home-assistant-polymer", url="https://github.com/home-assistant/home-assistant-polymer",
author="The Home Assistant Authors", author="The Home Assistant Authors",

View File

@ -21,6 +21,7 @@ class HaMenuButton extends LitElement {
@property() public narrow!: boolean; @property() public narrow!: boolean;
@property() public hass!: HomeAssistant; @property() public hass!: HomeAssistant;
@property() private _hasNotifications = false; @property() private _hasNotifications = false;
private _alwaysVisible = false;
private _attachNotifOnConnect = false; private _attachNotifOnConnect = false;
private _unsubNotifications?: UnsubscribeFunc; private _unsubNotifications?: UnsubscribeFunc;
@ -62,6 +63,18 @@ class HaMenuButton extends LitElement {
`; `;
} }
protected firstUpdated(changedProps) {
super.firstUpdated(changedProps);
if (!this.hassio) {
return;
}
// This component is used on Hass.io too, but Hass.io might run the UI
// on older frontends too, that don't have an always visible menu button
// in the sidebar.
this._alwaysVisible =
(Number((window.parent as any).frontendVersion) || 0) >= 20190710;
}
protected updated(changedProps) { protected updated(changedProps) {
super.updated(changedProps); super.updated(changedProps);
@ -69,7 +82,8 @@ class HaMenuButton extends LitElement {
return; return;
} }
this.style.visibility = this.narrow ? "initial" : "hidden"; this.style.visibility =
this.narrow || this._alwaysVisible ? "initial" : "hidden";
if (!this.narrow) { if (!this.narrow) {
this._hasNotifications = false; this._hasNotifications = false;

View File

@ -16,3 +16,5 @@ import "../layouts/home-assistant";
setPassiveTouchGestures(true); setPassiveTouchGestures(true);
/* LastPass createElement workaround. See #428 */ /* LastPass createElement workaround. See #428 */
document.createElement = Document.prototype.createElement; document.createElement = Document.prototype.createElement;
(window as any).frontendVersion = __VERSION__;

View File

@ -19,9 +19,11 @@ function initRouting() {
new workbox.strategies.NetworkOnly() new workbox.strategies.NetworkOnly()
); );
// Get manifest and service worker from network. // Get manifest, service worker, onboarding from network.
workbox.routing.registerRoute( workbox.routing.registerRoute(
new RegExp(`${location.host}/(service_worker.js|manifest.json)`), new RegExp(
`${location.host}/(service_worker.js|manifest.json|onboarding.html)`
),
new workbox.strategies.NetworkOnly() new workbox.strategies.NetworkOnly()
); );

View File

@ -5,7 +5,7 @@
document.createElement("script"), document.createElement("script"),
doc.lastChild doc.lastChild
); );
script.type = "text/javascript"; script.defer = true;
script.src = src; script.src = src;
} }
window.Polymer = { window.Polymer = {
@ -15,11 +15,9 @@
suppressTemplateNotifications: true, suppressTemplateNotifications: true,
suppressBindingNotifications: true, suppressBindingNotifications: true,
}; };
var webComponentsSupported = if (!("customElements" in window &&
"customElements" in window && "content" in document.createElement("template"))) {
"content" in document.createElement("template"); document.write("<script src='/static/polyfills/webcomponents-bundle.js'>");
if (!webComponentsSupported) {
_ls("/static/polyfills/webcomponents-bundle.js");
} }
var isS101 = /\s+Version\/10\.1(?:\.\d+)?\s+Safari\//.test(navigator.userAgent); var isS101 = /\s+Version\/10\.1(?:\.\d+)?\s+Safari\//.test(navigator.userAgent);
</script> </script>

View File

@ -5,13 +5,13 @@
<link rel="preload" href="<%= latestPageJS %>" as="script" crossorigin="use-credentials" /> <link rel="preload" href="<%= latestPageJS %>" as="script" crossorigin="use-credentials" />
<link <link
rel="preload" rel="preload"
href="/static/fonts/roboto/Roboto-Light.ttf" href="/static/fonts/roboto/Roboto-Light.woff2"
as="font" as="font"
crossorigin crossorigin
/> />
<link <link
rel="preload" rel="preload"
href="/static/fonts/roboto/Roboto-Regular.ttf" href="/static/fonts/roboto/Roboto-Regular.woff2"
as="font" as="font"
crossorigin crossorigin
/> />

View File

@ -5,13 +5,13 @@
<link rel="preload" href="<%= latestPageJS %>" as="script" crossorigin="use-credentials" /> <link rel="preload" href="<%= latestPageJS %>" as="script" crossorigin="use-credentials" />
<link <link
rel="preload" rel="preload"
href="/static/fonts/roboto/Roboto-Light.ttf" href="/static/fonts/roboto/Roboto-Light.woff2"
as="font" as="font"
crossorigin crossorigin
/> />
<link <link
rel="preload" rel="preload"
href="/static/fonts/roboto/Roboto-Regular.ttf" href="/static/fonts/roboto/Roboto-Regular.woff2"
as="font" as="font"
crossorigin crossorigin
/> />

View File

@ -1,6 +1,17 @@
import "@polymer/paper-icon-button/paper-icon-button"; import "@polymer/paper-icon-button/paper-icon-button";
import { html } from "@polymer/polymer/lib/utils/html-tag";
import { PolymerElement } from "@polymer/polymer/polymer-element"; import {
css,
CSSResult,
customElement,
html,
LitElement,
property,
TemplateResult,
} from "lit-element";
import { haStyle } from "../../../resources/styles";
import { HomeAssistant } from "../../../types";
import "../../../components/buttons/ha-call-api-button"; import "../../../components/buttons/ha-call-api-button";
import "../../../components/buttons/ha-call-service-button"; import "../../../components/buttons/ha-call-service-button";
@ -8,10 +19,184 @@ import "../../../components/ha-service-description";
import "../../../components/ha-card"; import "../../../components/ha-card";
import "../ha-config-section"; import "../ha-config-section";
class ZwaveNetwork extends PolymerElement { @customElement("zwave-network")
static get template() { export class ZwaveNetwork extends LitElement {
@property() public hass!: HomeAssistant;
@property() public isWide!: boolean;
@property() private _showHelp = false;
protected render(): TemplateResult | void {
return html` return html`
<style include="iron-flex ha-style"> <ha-config-section .isWide="${this.isWide}">
<div style="position: relative" slot="header">
<span>Z-Wave Network Management</span>
<paper-icon-button
class="toggle-help-icon"
@click="${this._onHelpTap}"
icon="hass:help-circle"
></paper-icon-button>
</div>
<span slot="introduction">
Run commands that affect the Z-Wave network. You won't get feedback on
whether the command succeeded, but you can look in the OZW Log to try
to figure out.
</span>
<ha-card class="content">
<div class="card-actions">
<ha-call-service-button
.hass=${this.hass}
domain="zwave"
service="add_node_secure"
>
Add Node Secure
</ha-call-service-button>
<ha-service-description
.hass=${this.hass}
domain="zwave"
service="add_node_secure"
?hidden=${!this._showHelp}
>
</ha-service-description>
<ha-call-service-button
.hass=${this.hass}
domain="zwave"
service="add_node"
>
Add Node
</ha-call-service-button>
<ha-service-description
.hass=${this.hass}
domain="zwave"
service="add_node"
?hidden=${!this._showHelp}
>
</ha-service-description>
<ha-call-service-button
.hass=${this.hass}
domain="zwave"
service="remove_node"
>
Remove Node
</ha-call-service-button>
<ha-service-description
.hass=${this.hass}
domain="zwave"
service="remove_node"
?hidden=${!this._showHelp}
>
</ha-service-description>
</div>
<div class="card-actions warning">
<ha-call-service-button
.hass=${this.hass}
domain="zwave"
service="cancel_command"
>
Cancel Command
</ha-call-service-button>
<ha-service-description
.hass=${this.hass}
domain="zwave"
service="cancel_command"
?hidden=${!this._showHelp}
>
</ha-service-description>
</div>
<div class="card-actions">
<ha-call-service-button
.hass=${this.hass}
domain="zwave"
service="heal_network"
>
Heal Network
</ha-call-service-button>
<ha-service-description
.hass=${this.hass}
domain="zwave"
service="heal_network"
?hidden=${!this._showHelp}
></ha-service-description>
<ha-call-service-button
.hass=${this.hass}
domain="zwave"
service="start_network"
>
Start Network
</ha-call-service-button>
<ha-service-description
.hass=${this.hass}
domain="zwave"
service="start_network"
?hidden=${!this._showHelp}
>
</ha-service-description>
<ha-call-service-button
.hass=${this.hass}
domain="zwave"
service="stop_network"
>
Stop Network
</ha-call-service-button>
<ha-service-description
.hass=${this.hass}
domain="zwave"
service="stop_network"
?hidden=${!this._showHelp}
>
</ha-service-description>
<ha-call-service-button
.hass=${this.hass}
domain="zwave"
service="soft_reset"
>
Soft Reset
</ha-call-service-button>
<ha-service-description
.hass=${this.hass}
domain="zwave"
service="soft_reset"
?hidden=${!this._showHelp}
>
</ha-service-description>
<ha-call-service-button
.hass=${this.hass}
domain="zwave"
service="test_network"
>
Test Network
</ha-call-service-button>
<ha-service-description
.hass=${this.hass}
domain="zwave"
service="test_network"
?hidden=${!this._showHelp}
>
</ha-service-description>
<ha-call-api-button .hass=${this.hass} path="zwave/saveconfig">
Save Config
</ha-call-api-button>
</div>
</ha-card>
</ha-config-section>
`;
}
private _onHelpTap(): void {
this._showHelp = !this._showHelp;
}
static get styles(): CSSResult[] {
return [
haStyle,
css`
.content { .content {
margin-top: 24px; margin-top: 24px;
} }
@ -35,187 +220,19 @@ class ZwaveNetwork extends PolymerElement {
ha-service-description { ha-service-description {
display: block; display: block;
color: grey; color: grey;
padding: 0 8px 12px;
} }
[hidden] { [hidden] {
display: none; display: none;
} }
</style> `,
<ha-config-section is-wide="[[isWide]]"> ];
<div style="position: relative" slot="header">
<span>Z-Wave Network Management</span>
<paper-icon-button
class="toggle-help-icon"
on-click="helpTap"
icon="hass:help-circle"
></paper-icon-button>
</div>
<span slot="introduction">
Run commands that affect the Z-Wave network. You won't get feedback on
whether the command succeeded, but you can look in the OZW Log to try
to figure out.
</span>
<ha-card class="content">
<div class="card-actions">
<ha-call-service-button
hass="[[hass]]"
domain="zwave"
service="add_node_secure"
>
Add Node Secure
</ha-call-service-button>
<ha-service-description
hass="[[hass]]"
domain="zwave"
service="add_node_secure"
hidden$="[[!showDescription]]"
>
</ha-service-description>
<ha-call-service-button
hass="[[hass]]"
domain="zwave"
service="add_node"
>
Add Node
</ha-call-service-button>
<ha-service-description
hass="[[hass]]"
domain="zwave"
service="add_node"
hidden$="[[!showDescription]]"
>
</ha-service-description>
<ha-call-service-button
hass="[[hass]]"
domain="zwave"
service="remove_node"
>
Remove Node
</ha-call-service-button>
<ha-service-description
hass="[[hass]]"
domain="zwave"
service="remove_node"
hidden$="[[!showDescription]]"
>
</ha-service-description>
</div>
<div class="card-actions warning">
<ha-call-service-button
hass="[[hass]]"
domain="zwave"
service="cancel_command"
>
Cancel Command
</ha-call-service-button>
<ha-service-description
hass="[[hass]]"
domain="zwave"
service="cancel_command"
hidden$="[[!showDescription]]"
>
</ha-service-description>
</div>
<div class="card-actions">
<ha-call-service-button
hass="[[hass]]"
domain="zwave"
service="heal_network"
>
Heal Network
</ha-call-service-button>
<ha-call-service-button
hass="[[hass]]"
domain="zwave"
service="start_network"
>
Start Network
</ha-call-service-button>
<ha-service-description
hass="[[hass]]"
domain="zwave"
service="start_network"
hidden$="[[!showDescription]]"
>
</ha-service-description>
<ha-call-service-button
hass="[[hass]]"
domain="zwave"
service="stop_network"
>
Stop Network
</ha-call-service-button>
<ha-service-description
hass="[[hass]]"
domain="zwave"
service="stop_network"
hidden$="[[!showDescription]]"
>
</ha-service-description>
<ha-call-service-button
hass="[[hass]]"
domain="zwave"
service="soft_reset"
>
Soft Reset
</ha-call-service-button>
<ha-service-description
hass="[[hass]]"
domain="zwave"
service="soft_reset"
hidden$="[[!showDescription]]"
>
</ha-service-description>
<ha-call-service-button
hass="[[hass]]"
domain="zwave"
service="test_network"
>
Test Network
</ha-call-service-button>
<ha-service-description
hass="[[hass]]"
domain="zwave"
service="test_network"
hidden$="[[!showDescription]]"
>
</ha-service-description>
<ha-call-api-button hass="[[hass]]" path="zwave/saveconfig">
Save Config
</ha-call-api-button>
</div>
</ha-card>
</ha-config-section>
`;
}
static get properties() {
return {
hass: Object,
isWide: {
type: Boolean,
value: false,
},
showDescription: {
type: Boolean,
value: false,
},
};
}
helpTap() {
this.showDescription = !this.showDescription;
} }
} }
customElements.define("zwave-network", ZwaveNetwork); declare global {
interface HTMLElementTagNameMap {
"zwave-network": ZwaveNetwork;
}
}

View File

@ -145,7 +145,8 @@
"high_demand": "Alta potència", "high_demand": "Alta potència",
"heat_pump": "Bomba de calor", "heat_pump": "Bomba de calor",
"gas": "Gas", "gas": "Gas",
"manual": "Manual" "manual": "Manual",
"heat_cool": "Automàtic"
}, },
"configurator": { "configurator": {
"configure": "Configurar", "configure": "Configurar",
@ -1122,7 +1123,8 @@
"fan_mode": "Mode ventilació", "fan_mode": "Mode ventilació",
"swing_mode": "Mode oscil·lació", "swing_mode": "Mode oscil·lació",
"away_mode": "Mode absent", "away_mode": "Mode absent",
"aux_heat": "Calefactor auxiliar" "aux_heat": "Calefactor auxiliar",
"preset_mode": "Programat"
}, },
"lock": { "lock": {
"code": "Codi", "code": "Codi",
@ -1267,6 +1269,16 @@
"off": "Desactivat", "off": "Desactivat",
"on": "Activat", "on": "Activat",
"auto": "Automàtic" "auto": "Automàtic"
},
"preset_mode": {
"none": "Cap",
"eco": "Econòmic",
"away": "Absent",
"boost": "Incrementat",
"comfort": "Confort",
"home": "A casa",
"sleep": "Dormint",
"activity": "Activitat"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "Hoher Verbrauch", "high_demand": "Hoher Verbrauch",
"heat_pump": "Wärmepumpe", "heat_pump": "Wärmepumpe",
"gas": "Gas", "gas": "Gas",
"manual": "Manuell" "manual": "Manuell",
"heat_cool": "Automatisch"
}, },
"configurator": { "configurator": {
"configure": "Konfigurieren", "configure": "Konfigurieren",
@ -1122,7 +1123,8 @@
"fan_mode": "Ventilator-Modus", "fan_mode": "Ventilator-Modus",
"swing_mode": "Schwenk-Modus", "swing_mode": "Schwenk-Modus",
"away_mode": "Abwesenheitsmodus", "away_mode": "Abwesenheitsmodus",
"aux_heat": "Hilfswärme" "aux_heat": "Hilfswärme",
"preset_mode": "Voreinstellung"
}, },
"lock": { "lock": {
"code": "Code", "code": "Code",
@ -1267,6 +1269,16 @@
"off": "Aus", "off": "Aus",
"on": "An", "on": "An",
"auto": "Auto" "auto": "Auto"
},
"preset_mode": {
"none": "Keine",
"eco": "Sparmodus",
"away": "Abwesend",
"boost": "Maximal",
"comfort": "Komfort",
"home": "Zuhause",
"sleep": "Schlafen",
"activity": "Aktivität"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "High demand", "high_demand": "High demand",
"heat_pump": "Heat pump", "heat_pump": "Heat pump",
"gas": "Gas", "gas": "Gas",
"manual": "Manual" "manual": "Manual",
"heat_cool": "Auto"
}, },
"configurator": { "configurator": {
"configure": "Configure", "configure": "Configure",
@ -1122,7 +1123,8 @@
"fan_mode": "Fan mode", "fan_mode": "Fan mode",
"swing_mode": "Swing mode", "swing_mode": "Swing mode",
"away_mode": "Away mode", "away_mode": "Away mode",
"aux_heat": "Aux heat" "aux_heat": "Aux heat",
"preset_mode": "Preset"
}, },
"lock": { "lock": {
"code": "Code", "code": "Code",
@ -1267,6 +1269,16 @@
"off": "Off", "off": "Off",
"on": "On", "on": "On",
"auto": "Auto" "auto": "Auto"
},
"preset_mode": {
"none": "None",
"eco": "Eco",
"away": "Away",
"boost": "Boost",
"comfort": "Comfort",
"home": "Home",
"sleep": "Sleep",
"activity": "Activity"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "Magas igénybevétel", "high_demand": "Magas igénybevétel",
"heat_pump": "Hőszivattyú", "heat_pump": "Hőszivattyú",
"gas": "Gáz", "gas": "Gáz",
"manual": "Manuális" "manual": "Manuális",
"heat_cool": "Automatikus"
}, },
"configurator": { "configurator": {
"configure": "Beállítás", "configure": "Beállítás",
@ -1267,6 +1268,15 @@
"off": "Ki", "off": "Ki",
"on": "Be", "on": "Be",
"auto": "Automatikus" "auto": "Automatikus"
},
"preset_mode": {
"none": "Nincs",
"eco": "Takarékos",
"away": "Távol",
"comfort": "Komfort",
"home": "Otthon",
"sleep": "Alvás",
"activity": "Tevékenység"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "Forte richiesta", "high_demand": "Forte richiesta",
"heat_pump": "Pompa di calore", "heat_pump": "Pompa di calore",
"gas": "Gas", "gas": "Gas",
"manual": "Manuale" "manual": "Manuale",
"heat_cool": "Auto"
}, },
"configurator": { "configurator": {
"configure": "Configura", "configure": "Configura",
@ -1267,6 +1268,14 @@
"off": "Off", "off": "Off",
"on": "On", "on": "On",
"auto": "Auto" "auto": "Auto"
},
"preset_mode": {
"none": "Nessuna",
"eco": "Eco",
"comfort": "Comfort",
"home": "Casa",
"sleep": "Sleep",
"activity": "Attività"
} }
} }
}, },

View File

@ -139,13 +139,14 @@
"auto": "자동", "auto": "자동",
"dry": "제습", "dry": "제습",
"fan_only": "송풍", "fan_only": "송풍",
"eco": "절", "eco": "절",
"electric": "전기", "electric": "전기",
"performance": "고효율", "performance": "고효율",
"high_demand": "고성능", "high_demand": "고성능",
"heat_pump": "순환펌프", "heat_pump": "순환펌프",
"gas": "가스", "gas": "가스",
"manual": "수동" "manual": "수동",
"heat_cool": "자동"
}, },
"configurator": { "configurator": {
"configure": "설정", "configure": "설정",
@ -986,7 +987,7 @@
"names": { "names": {
"upstairs": "위층", "upstairs": "위층",
"family_room": "가족실", "family_room": "가족실",
"kitchen": "부엌", "kitchen": "주방",
"patio": "마당", "patio": "마당",
"hallway": "현관", "hallway": "현관",
"master_bedroom": "안방", "master_bedroom": "안방",
@ -1122,7 +1123,8 @@
"fan_mode": "송풍 모드", "fan_mode": "송풍 모드",
"swing_mode": "회전 모드", "swing_mode": "회전 모드",
"away_mode": "외출 모드", "away_mode": "외출 모드",
"aux_heat": "보조 히터" "aux_heat": "보조 히터",
"preset_mode": "프리셋"
}, },
"lock": { "lock": {
"code": "비밀번호", "code": "비밀번호",
@ -1267,6 +1269,16 @@
"off": "꺼짐", "off": "꺼짐",
"on": "켜짐", "on": "켜짐",
"auto": "자동" "auto": "자동"
},
"preset_mode": {
"none": "없음",
"eco": "절전",
"away": "외출",
"boost": "부스트",
"comfort": "안락",
"home": "재실",
"sleep": "수면",
"activity": "활동"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "Høy etterspørsel", "high_demand": "Høy etterspørsel",
"heat_pump": "Varmepumpe", "heat_pump": "Varmepumpe",
"gas": "Gass", "gas": "Gass",
"manual": "Manuell" "manual": "Manuell",
"heat_cool": "Auto"
}, },
"configurator": { "configurator": {
"configure": "Konfigurer", "configure": "Konfigurer",
@ -483,7 +484,7 @@
}, },
"conditions": { "conditions": {
"header": "Betingelser", "header": "Betingelser",
"introduction": "Betingelser er en valgfri del av en automatiseringsregel og kan brukes til å forhindre at en handling skjer når den blir aktivert. \nBetingelsene ser veldig ut som utløsere, men er veldig forskjellige. \nEn utløser vil se på hendelser som skjer i systemet, mens en betingelse bare ser på hvordan systemet ser ut akkurat nå. En utløser kan observere at en bryter er slått på. En betingelse kan bare se om en bryter for øyeblikket er på eller av. \n\n[Lær mer om betingelser.](https:\/\/home-assistant.io\/docs\/scripts\/conditions\/)", "introduction": "Betingelser er en valgfri del av en automatiseringsregel og kan brukes til å forhindre at en handling skjer når den blir aktivert. \nBetingelsene ser veldig ut som utløsere, men er veldig forskjellige. \nEn utløser vil se på hendelser som skjer i systemet, mens en betingelse bare ser på hvordan systemet ser ut akkurat nå. En utløser kan observere at en bryter er slått på. En betingelse kan bare se om en bryter for øyeblikket er på eller av.",
"add": "Legg til betingelse", "add": "Legg til betingelse",
"duplicate": "Dupliser", "duplicate": "Dupliser",
"delete": "Slett", "delete": "Slett",
@ -1122,7 +1123,8 @@
"fan_mode": "Viftemodus", "fan_mode": "Viftemodus",
"swing_mode": "Svingmodus", "swing_mode": "Svingmodus",
"away_mode": "Bortemodus", "away_mode": "Bortemodus",
"aux_heat": "Aux varme" "aux_heat": "Aux varme",
"preset_mode": "Preset"
}, },
"lock": { "lock": {
"code": "Kode", "code": "Kode",
@ -1267,6 +1269,16 @@
"off": "Av", "off": "Av",
"on": "På", "on": "På",
"auto": "Auto" "auto": "Auto"
},
"preset_mode": {
"none": "Ingen",
"eco": "Øko",
"away": "Borte",
"boost": "Turbo",
"comfort": "Komfort",
"home": "Hjem",
"sleep": "Sove",
"activity": "Aktivitet"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "Hoge vraag", "high_demand": "Hoge vraag",
"heat_pump": "Warmtepomp", "heat_pump": "Warmtepomp",
"gas": "Gas", "gas": "Gas",
"manual": "Handmatig" "manual": "Handmatig",
"heat_cool": "Auto"
}, },
"configurator": { "configurator": {
"configure": "Configureer", "configure": "Configureer",
@ -1122,7 +1123,8 @@
"fan_mode": "Ventilatormodus", "fan_mode": "Ventilatormodus",
"swing_mode": "Swingmodus", "swing_mode": "Swingmodus",
"away_mode": "Afwezigheidsmodus", "away_mode": "Afwezigheidsmodus",
"aux_heat": "Extra warmte" "aux_heat": "Extra warmte",
"preset_mode": "Vooraf ingesteld"
}, },
"lock": { "lock": {
"code": "Code", "code": "Code",
@ -1267,6 +1269,16 @@
"off": "Uit", "off": "Uit",
"on": "Aan", "on": "Aan",
"auto": "Auto" "auto": "Auto"
},
"preset_mode": {
"none": "Geen",
"eco": "Eco",
"away": "Afwezig",
"boost": "Boost",
"comfort": "Comfort",
"home": "Thuis",
"sleep": "Slapen",
"activity": "Activiteit"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "duży rozbiór", "high_demand": "duży rozbiór",
"heat_pump": "pompa ciepła", "heat_pump": "pompa ciepła",
"gas": "gaz", "gas": "gaz",
"manual": "manualnie" "manual": "manualnie",
"heat_cool": "automatycznie"
}, },
"configurator": { "configurator": {
"configure": "Skonfiguruj", "configure": "Skonfiguruj",
@ -1122,7 +1123,8 @@
"fan_mode": "Tryb pracy wentylatora", "fan_mode": "Tryb pracy wentylatora",
"swing_mode": "Tryb ruchu łopatek", "swing_mode": "Tryb ruchu łopatek",
"away_mode": "Tryb poza domem", "away_mode": "Tryb poza domem",
"aux_heat": "Dodatkowe źródło ciepła" "aux_heat": "Dodatkowe źródło ciepła",
"preset_mode": "Ustawienia"
}, },
"lock": { "lock": {
"code": "Kod", "code": "Kod",
@ -1267,6 +1269,16 @@
"off": "wyłączony", "off": "wyłączony",
"on": "włączony", "on": "włączony",
"auto": "automatyczny" "auto": "automatyczny"
},
"preset_mode": {
"none": "brak",
"eco": "ekonomicznie",
"away": "poza domem",
"boost": "wzmocnienie",
"comfort": "komfort",
"home": "w domu",
"sleep": "sen",
"activity": "aktywność"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "Большая нагрузка", "high_demand": "Большая нагрузка",
"heat_pump": "Тепловой насос", "heat_pump": "Тепловой насос",
"gas": "Газовый", "gas": "Газовый",
"manual": "Ручной режим" "manual": "Ручной режим",
"heat_cool": "Авто"
}, },
"configurator": { "configurator": {
"configure": "Настроить", "configure": "Настроить",
@ -1122,7 +1123,8 @@
"fan_mode": "Режим вентилятора", "fan_mode": "Режим вентилятора",
"swing_mode": "Режим качания", "swing_mode": "Режим качания",
"away_mode": "Режим ожидания", "away_mode": "Режим ожидания",
"aux_heat": "Дополнительный нагрев" "aux_heat": "Дополнительный нагрев",
"preset_mode": "Режим"
}, },
"lock": { "lock": {
"code": "Код", "code": "Код",
@ -1267,6 +1269,16 @@
"off": "Выкл", "off": "Выкл",
"on": "Вкл", "on": "Вкл",
"auto": "Авто" "auto": "Авто"
},
"preset_mode": {
"none": "Не выбран",
"eco": "Экономия",
"away": "Не дома",
"boost": "Турбо",
"comfort": "Комфорт",
"home": "Дома",
"sleep": "Сон",
"activity": "Активность"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "Vysoký výkon", "high_demand": "Vysoký výkon",
"heat_pump": "Tepelné čerpadlo", "heat_pump": "Tepelné čerpadlo",
"gas": "Plyn", "gas": "Plyn",
"manual": "Ručne" "manual": "Ručne",
"heat_cool": "Auto"
}, },
"configurator": { "configurator": {
"configure": "Konfigurovať", "configure": "Konfigurovať",
@ -359,8 +360,8 @@
"core_config": { "core_config": {
"edit_requires_storage": "Editor je zablokovaný, pretože konfigurácia je uložená v configuration.yaml", "edit_requires_storage": "Editor je zablokovaný, pretože konfigurácia je uložená v configuration.yaml",
"location_name": "Názov vašej Home Assistant inštalácie", "location_name": "Názov vašej Home Assistant inštalácie",
"latitude": "zemepisná šírka", "latitude": "Zemepisná šírka",
"longitude": "zemepisná dĺžka", "longitude": "Zemepisná dĺžka",
"elevation": "Nadmorská výška", "elevation": "Nadmorská výška",
"elevation_meters": "metrov", "elevation_meters": "metrov",
"time_zone": "Časové pásmo", "time_zone": "Časové pásmo",
@ -909,9 +910,9 @@
"picture-elements": { "picture-elements": {
"hold": "Držať:", "hold": "Držať:",
"tap": "Ťuknite:", "tap": "Ťuknite:",
"navigate_to": "Navigovať do {Location}", "navigate_to": "Navigovať do {location}",
"toggle": "Prepnúť {name}", "toggle": "Prepnúť {name}",
"call_service": "Zavolať službu", "call_service": "Zavolať službu {name}",
"more_info": "Zobraziť viac informácií: {name}" "more_info": "Zobraziť viac informácií: {name}"
} }
}, },
@ -971,6 +972,49 @@
"refresh": "Obnoviť" "refresh": "Obnoviť"
}, },
"reload_lovelace": "Znovu načítať Lovelace" "reload_lovelace": "Znovu načítať Lovelace"
},
"page-demo": {
"cards": {
"demo": {
"demo_by": "podľa {name}",
"next_demo": "Ďalšie demo",
"introduction": "Vitaj ! Dostali ste sa na demo Home Assistanta, kde prezentujeme najlepšie používateľské rozhrania vytvorené našou komunitou.",
"learn_more": "Získajte viac informácií o Home asistentovi"
}
},
"config": {
"arsaboo": {
"names": {
"upstairs": "Poschodie",
"family_room": "Obývacia izba",
"kitchen": "Kuchyňa",
"patio": "Terasa",
"hallway": "Chodba",
"master_bedroom": "Spálňa",
"left": "Vľavo",
"right": "Vpravo",
"mirror": "Zrkadlenie"
},
"labels": {
"lights": "Svetlá",
"information": "Informácie",
"morning_commute": "Ranné dochádzanie",
"commute_home": "Dochádzanie domov",
"entertainment": "Zábava",
"activity": "Aktivita",
"hdmi_input": "Vstup HDMI",
"hdmi_switcher": "HDMI prepínač",
"volume": "Hlasitosť",
"total_tv_time": "Celkový čas sledovanie TV",
"turn_tv_off": "Vypnúť TV",
"air": "Vzduch"
},
"unit": {
"watching": "Sledovanie",
"minutes_abbr": "Min"
}
}
}
} }
}, },
"sidebar": { "sidebar": {
@ -1079,7 +1123,8 @@
"fan_mode": "Režim ventilátora", "fan_mode": "Režim ventilátora",
"swing_mode": "Vejárový režim", "swing_mode": "Vejárový režim",
"away_mode": "Režim neprítomnosti", "away_mode": "Režim neprítomnosti",
"aux_heat": "Prídavné kúrenie" "aux_heat": "Prídavné kúrenie",
"preset_mode": "Predvoľba"
}, },
"lock": { "lock": {
"code": "Kód", "code": "Kód",
@ -1224,6 +1269,16 @@
"off": "Vypnutý", "off": "Vypnutý",
"on": "Zapnutý", "on": "Zapnutý",
"auto": "Auto" "auto": "Auto"
},
"preset_mode": {
"none": "None",
"eco": "Eko",
"away": "Preč",
"boost": "Turbo",
"comfort": "Komfort",
"home": "Doma",
"sleep": "Pohotovostný režim",
"activity": "Aktívny"
} }
} }
}, },

View File

@ -145,7 +145,8 @@
"high_demand": "Visoka poraba", "high_demand": "Visoka poraba",
"heat_pump": "Toplotna črpalka", "heat_pump": "Toplotna črpalka",
"gas": "Plin", "gas": "Plin",
"manual": "Ročno" "manual": "Ročno",
"heat_cool": "Samodejno"
}, },
"configurator": { "configurator": {
"configure": "Konfiguriraj", "configure": "Konfiguriraj",
@ -1122,7 +1123,8 @@
"fan_mode": "Način ventilatorja", "fan_mode": "Način ventilatorja",
"swing_mode": "Način Swing", "swing_mode": "Način Swing",
"away_mode": "Način odsotnosti", "away_mode": "Način odsotnosti",
"aux_heat": "Dodatna toplota" "aux_heat": "Dodatna toplota",
"preset_mode": "Prednastavitev"
}, },
"lock": { "lock": {
"code": "Koda", "code": "Koda",
@ -1267,6 +1269,16 @@
"off": "Izključen", "off": "Izključen",
"on": "Vklopljen", "on": "Vklopljen",
"auto": "Samodejno" "auto": "Samodejno"
},
"preset_mode": {
"none": "Noben",
"eco": "Eko",
"away": "Odsoten",
"boost": "Povečanje",
"comfort": "Udobje",
"home": "Doma",
"sleep": "Spanje",
"activity": "Dejavnost"
} }
} }
}, },

View File

@ -132,7 +132,7 @@
}, },
"climate": { "climate": {
"off": "关", "off": "关",
"on": "开", "on": "开",
"heat": "制热", "heat": "制热",
"cool": "制冷", "cool": "制冷",
"idle": "待机", "idle": "待机",
@ -145,7 +145,8 @@
"high_demand": "高需求", "high_demand": "高需求",
"heat_pump": "热泵", "heat_pump": "热泵",
"gas": "燃气", "gas": "燃气",
"manual": "手动" "manual": "手动",
"heat_cool": "自动"
}, },
"configurator": { "configurator": {
"configure": "设置", "configure": "设置",
@ -163,8 +164,8 @@
"not_home": "离开" "not_home": "离开"
}, },
"fan": { "fan": {
"off": "关", "off": "关",
"on": "开" "on": "开"
}, },
"group": { "group": {
"off": "关闭", "off": "关闭",
@ -182,8 +183,8 @@
"problem": "异常" "problem": "异常"
}, },
"input_boolean": { "input_boolean": {
"off": "关", "off": "关",
"on": "开" "on": "开"
}, },
"light": { "light": {
"off": "关", "off": "关",
@ -194,8 +195,8 @@
"unlocked": "解锁" "unlocked": "解锁"
}, },
"media_player": { "media_player": {
"off": "关", "off": "关",
"on": "开", "on": "开",
"playing": "正在播放", "playing": "正在播放",
"paused": "已暂停", "paused": "已暂停",
"idle": "空闲", "idle": "空闲",
@ -206,19 +207,19 @@
"problem": "异常" "problem": "异常"
}, },
"remote": { "remote": {
"off": "关", "off": "关",
"on": "开" "on": "开"
}, },
"scene": { "scene": {
"scening": "场景启用中" "scening": "场景启用中"
}, },
"script": { "script": {
"off": "关", "off": "关",
"on": "开" "on": "开"
}, },
"sensor": { "sensor": {
"off": "关", "off": "关",
"on": "开" "on": "开"
}, },
"sun": { "sun": {
"above_horizon": "日出", "above_horizon": "日出",
@ -984,6 +985,7 @@
"config": { "config": {
"arsaboo": { "arsaboo": {
"names": { "names": {
"upstairs": "二楼",
"family_room": "客厅", "family_room": "客厅",
"kitchen": "厨房", "kitchen": "厨房",
"patio": "露台", "patio": "露台",
@ -998,7 +1000,18 @@
"information": "信息", "information": "信息",
"morning_commute": "上班", "morning_commute": "上班",
"commute_home": "下班", "commute_home": "下班",
"entertainment": "娱乐" "entertainment": "娱乐",
"activity": "活动",
"hdmi_input": "HDMI输入",
"hdmi_switcher": "HDMI切换",
"volume": "音量",
"total_tv_time": "观看总时长",
"turn_tv_off": "关闭电视",
"air": "换气"
},
"unit": {
"watching": "观看",
"minutes_abbr": "分"
} }
} }
} }
@ -1110,7 +1123,8 @@
"fan_mode": "风速", "fan_mode": "风速",
"swing_mode": "扫风模式", "swing_mode": "扫风模式",
"away_mode": "离开模式", "away_mode": "离开模式",
"aux_heat": "辅热" "aux_heat": "辅热",
"preset_mode": "预设"
}, },
"lock": { "lock": {
"code": "密码", "code": "密码",
@ -1255,6 +1269,16 @@
"off": "关", "off": "关",
"on": "开", "on": "开",
"auto": "自动" "auto": "自动"
},
"preset_mode": {
"none": "无",
"eco": "节能",
"away": "离家",
"boost": "强力",
"comfort": "舒适",
"home": "在家",
"sleep": "睡眠",
"activity": "活动"
} }
} }
}, },

View File

@ -136,7 +136,7 @@
"heat": "暖氣", "heat": "暖氣",
"cool": "冷氣", "cool": "冷氣",
"idle": "待命", "idle": "待命",
"auto": "自動模式", "auto": "自動",
"dry": "除濕模式", "dry": "除濕模式",
"fan_only": "僅送風", "fan_only": "僅送風",
"eco": "節能模式", "eco": "節能模式",
@ -145,7 +145,8 @@
"high_demand": "高用量", "high_demand": "高用量",
"heat_pump": "暖氣", "heat_pump": "暖氣",
"gas": "瓦斯模式", "gas": "瓦斯模式",
"manual": "手動" "manual": "手動",
"heat_cool": "自動"
}, },
"configurator": { "configurator": {
"configure": "設定", "configure": "設定",
@ -1000,7 +1001,7 @@
"morning_commute": "晨間通勤", "morning_commute": "晨間通勤",
"commute_home": "返家通勤", "commute_home": "返家通勤",
"entertainment": "視聽室", "entertainment": "視聽室",
"activity": "活動", "activity": "模式",
"hdmi_input": "HDMI 輸入", "hdmi_input": "HDMI 輸入",
"hdmi_switcher": "HDMI 切換器", "hdmi_switcher": "HDMI 切換器",
"volume": "音量", "volume": "音量",
@ -1122,7 +1123,8 @@
"fan_mode": "風速模式", "fan_mode": "風速模式",
"swing_mode": "擺動模式", "swing_mode": "擺動模式",
"away_mode": "外出模式", "away_mode": "外出模式",
"aux_heat": "輔助暖氣" "aux_heat": "輔助暖氣",
"preset_mode": "預置"
}, },
"lock": { "lock": {
"code": "密碼", "code": "密碼",
@ -1266,7 +1268,17 @@
"fan_mode": { "fan_mode": {
"off": "關閉", "off": "關閉",
"on": "開啟", "on": "開啟",
"auto": "自動模式" "auto": "自動"
},
"preset_mode": {
"none": "無",
"eco": "節能",
"away": "離家",
"boost": "全速",
"comfort": "舒適",
"home": "在家",
"sleep": "睡眠",
"activity": "活動"
} }
} }
}, },