diff --git a/src/data/camera.ts b/src/data/camera.ts index cca3671377..26d928f754 100644 --- a/src/data/camera.ts +++ b/src/data/camera.ts @@ -6,6 +6,7 @@ import { timeCacheEntityPromiseFunc } from "../common/util/time-cache-entity-pro import { HomeAssistant } from "../types"; import { getSignedPath } from "./auth"; +export const CAMERA_ORIENTATIONS = [1, 2, 3, 4, 6, 8]; export const CAMERA_SUPPORT_ON_OFF = 1; export const CAMERA_SUPPORT_STREAM = 2; @@ -26,6 +27,7 @@ export interface CameraEntity extends HassEntityBase { export interface CameraPreferences { preload_stream: boolean; + orientation: number; } export interface CameraThumbnail { @@ -109,11 +111,13 @@ export const fetchCameraPrefs = (hass: HomeAssistant, entityId: string) => entity_id: entityId, }); +type ValueOf = T[number]; export const updateCameraPrefs = ( hass: HomeAssistant, entityId: string, prefs: { preload_stream?: boolean; + orientation?: ValueOf; } ) => hass.callWS({ diff --git a/src/panels/config/entities/entity-registry-settings.ts b/src/panels/config/entities/entity-registry-settings.ts index f554e5bbf4..e87fd4ea02 100644 --- a/src/panels/config/entities/entity-registry-settings.ts +++ b/src/panels/config/entities/entity-registry-settings.ts @@ -19,7 +19,10 @@ import { computeDomain } from "../../../common/entity/compute_domain"; import { domainIcon } from "../../../common/entity/domain_icon"; import { supportsFeature } from "../../../common/entity/supports-feature"; import { stringCompare } from "../../../common/string/compare"; -import { LocalizeFunc } from "../../../common/translations/localize"; +import { + LocalizeFunc, + LocalizeKeys, +} from "../../../common/translations/localize"; import "../../../components/ha-alert"; import "../../../components/ha-area-picker"; import "../../../components/ha-expansion-panel"; @@ -32,6 +35,7 @@ import type { HaSwitch } from "../../../components/ha-switch"; import "../../../components/ha-textfield"; import { CameraPreferences, + CAMERA_ORIENTATIONS, CAMERA_SUPPORT_STREAM, fetchCameraPrefs, STREAM_TYPE_HLS, @@ -586,12 +590,12 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { ${this.hass.localize( - "ui.dialogs.entity_registry.editor.preload_stream" + "ui.dialogs.entity_registry.editor.stream.preload_stream" )} ${this.hass.localize( - "ui.dialogs.entity_registry.editor.preload_stream_description" + "ui.dialogs.entity_registry.editor.stream.preload_stream_description" )} + + ${this.hass.localize( + "ui.dialogs.entity_registry.editor.stream.stream_orientation" + )} + ${this.hass.localize( + "ui.dialogs.entity_registry.editor.stream.stream_orientation_description" + )} + + ${CAMERA_ORIENTATIONS.map((num) => { + const localizeStr = + "ui.dialogs.entity_registry.editor.stream.stream_orientation_" + + num.toString(); + return html` + + ${this.hass.localize(localizeStr as LocalizeKeys)} + + `; + })} + + ` : ""}