From 109e10ea68bc651fc576231e098a434a344c5971 Mon Sep 17 00:00:00 2001 From: Dermot Duffy Date: Sun, 7 May 2023 15:32:44 -0700 Subject: [PATCH] Rename option to `always_connected`. --- README.md | 6 ++++-- src/card.ts | 9 ++++++--- src/const.ts | 4 ++-- src/editor.ts | 6 +++--- src/localize/languages/en.json | 2 +- src/localize/languages/it.json | 2 +- src/localize/languages/pt-BR.json | 2 +- src/localize/languages/pt-PT.json | 2 +- src/types.ts | 4 ++-- 9 files changed, 21 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 73220225..38882144 100644 --- a/README.md +++ b/README.md @@ -557,7 +557,8 @@ live: | Option | Default | Overridable | Description | | - | - | - | - | -| `disconnect_seconds` | `60` | :white_check_mark: | The number of seconds after which to disconnect the microphone from the stream. `0` implies never. | +| `always_connected` | `false` | :white_check_mark: | Whether or not to keep the microphone stream continually connected while the card is running, or only when microphone is used (default). In the latter case there'll be a connection reset when the microphone is first used -- using this option can avoid that reset.| +| `disconnect_seconds` | `60` | :white_check_mark: | The number of seconds after microphone usage to disconnect the microphone from the stream. `0` implies never. Not relevant if `always_connected` is `true`.| See [Using 2-way audio](#using-2-way-audio) for more information about the very particular requirements that must be followed for 2-way audio to work. @@ -1098,7 +1099,7 @@ menu: Usage: * The camera will always load without the microphone connected. * To speak, hold-down the microphone menu button. - * On first press, this will reset the `webrtc` connection to include 2-way audio. + * On first press, this will reset the `webrtc` connection to include 2-way audio (unless the `always_connected` microphone option is set to `true`). * Thereafter hold the microphone button down to unmute/speak, let go to mute. * The video will automatically reset to remove the microphone after the number of seconds specified by `disconnect_seconds` in the `microphone` configuration have elapsed since the last mute/unmute press. @@ -1877,6 +1878,7 @@ live: x: 50 y: 50 microphone: + always_connected: false disconnect_seconds: 60 actions: entity: light.office_main_lights diff --git a/src/card.ts b/src/card.ts index 95e3859e..81a1b1da 100644 --- a/src/card.ts +++ b/src/card.ts @@ -1024,8 +1024,11 @@ class FrigateCard extends LitElement { oldConfig?.live.microphone.disconnect_seconds !== newConfig.live.microphone.disconnect_seconds ) { + const config = this._getConfig(); this._microphoneController = new MicrophoneController( - this._getConfig().live.microphone.disconnect_seconds, + config.live.microphone.always_connected + ? undefined + : config.live.microphone.disconnect_seconds, ); } @@ -1314,7 +1317,7 @@ class FrigateCard extends LitElement { ...(config.menu.buttons.media_player.enabled ? [InitializationAspect.MEDIA_PLAYERS] : []), - ...(config.live.microphone.connect_on_load + ...(config.live.microphone.always_connected ? [InitializationAspect.MICROPHONE] : []), ]) @@ -1328,7 +1331,7 @@ class FrigateCard extends LitElement { [InitializationAspect.MEDIA_PLAYERS]: async () => await this._initializeMediaPlayers(hass), }), - ...(config.live.microphone.connect_on_load && { + ...(config.live.microphone.always_connected && { [InitializationAspect.MICROPHONE]: async () => await this._initializeMicrophone(), }), diff --git a/src/const.ts b/src/const.ts index b3235804..e635fdab 100644 --- a/src/const.ts +++ b/src/const.ts @@ -194,8 +194,8 @@ export const CONF_LIVE_SHOW_IMAGE_DURING_LOAD = `${CONF_LIVE}.show_image_during_load` as const; export const CONF_LIVE_MICROPHONE_DISCONNECT_SECONDS = `${CONF_LIVE}.microphone.disconnect_seconds` as const; -export const CONF_LIVE_MICROPHONE_CONNECT_ON_LOAD = - `${CONF_LIVE}.microphone.connect_on_load` as const; +export const CONF_LIVE_MICROPHONE_ALWAYS_CONNECTED = + `${CONF_LIVE}.microphone.always_connected` as const; export const CONF_LIVE_ZOOMABLE = `${CONF_LIVE}.zoomable` as const; const CONF_IMAGE = 'image' as const; diff --git a/src/editor.ts b/src/editor.ts index 8d8626fe..6093770c 100644 --- a/src/editor.ts +++ b/src/editor.ts @@ -156,7 +156,7 @@ import { CONF_VIEW_UPDATE_FORCE, CONF_VIEW_UPDATE_SECONDS, MEDIA_CHUNK_SIZE_MAX, - CONF_LIVE_MICROPHONE_CONNECT_ON_LOAD, + CONF_LIVE_MICROPHONE_ALWAYS_CONNECTED, } from './const.js'; import { localize } from './localize/localize.js'; import { setLowPerformanceProfile } from './performance.js'; @@ -1880,8 +1880,8 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor html` ${this._renderNumberInput(CONF_LIVE_MICROPHONE_DISCONNECT_SECONDS)} ${this._renderSwitch( - CONF_LIVE_MICROPHONE_CONNECT_ON_LOAD, - this._defaults.live.microphone.connect_on_load, + CONF_LIVE_MICROPHONE_ALWAYS_CONNECTED, + this._defaults.live.microphone.always_connected, )} `, )} diff --git a/src/localize/languages/en.json b/src/localize/languages/en.json index 85d436e5..5d193951 100644 --- a/src/localize/languages/en.json +++ b/src/localize/languages/en.json @@ -220,7 +220,7 @@ "lazy_load": "Live cameras are lazily loaded", "lazy_unload": "Live cameras are lazily unloaded", "microphone": { - "connect_on_load": "Connect microphone on card load", + "always_connected": "Always keep the microphone connected", "disconnect_seconds": "Seconds after which to disconnect microphone (0=never)", "editor_label": "Microphone", "enabled": "Microphone enabled" diff --git a/src/localize/languages/it.json b/src/localize/languages/it.json index bfb2bf03..f48f9668 100644 --- a/src/localize/languages/it.json +++ b/src/localize/languages/it.json @@ -220,7 +220,7 @@ "lazy_load": "Le telecamere dal vivo sono pigramente cariche", "lazy_unload": "Le telecamere dal vivo sono pigramente non caricate", "microphone": { - "connect_on_load": "", + "always_connected": "", "disconnect_seconds": "", "editor_label": "", "enabled": "" diff --git a/src/localize/languages/pt-BR.json b/src/localize/languages/pt-BR.json index 98444fb4..e5bf41fe 100644 --- a/src/localize/languages/pt-BR.json +++ b/src/localize/languages/pt-BR.json @@ -220,7 +220,7 @@ "lazy_load": "As câmeras ao vivo são carregadas lentamente", "lazy_unload": "As câmeras ao vivo são descarregadas preguiçosamente", "microphone": { - "connect_on_load": "", + "always_connected": "", "disconnect_seconds": "", "editor_label": "", "enabled": "" diff --git a/src/localize/languages/pt-PT.json b/src/localize/languages/pt-PT.json index ae609ae2..f063e62b 100644 --- a/src/localize/languages/pt-PT.json +++ b/src/localize/languages/pt-PT.json @@ -213,7 +213,7 @@ "lazy_load": "As câmeras ao vivo são carregadas lentamente", "lazy_unload": "As câmeras ao vivo são descarregadas preguiçosamente", "microphone": { - "connect_on_load": "", + "always_connected": "", "disconnect_seconds": "", "editor_label": "", "enabled": "" diff --git a/src/types.ts b/src/types.ts index 90af81ff..c32672f6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -414,17 +414,17 @@ const imageBaseConfigSchema = z.object({ */ const microphoneConfigDefault = { + always_connected: false, disconnect_seconds: 60, - connect_on_load: false, }; const microphoneConfigSchema = z .object({ + always_connected: z.boolean().default(microphoneConfigDefault.always_connected), disconnect_seconds: z .number() .min(0) .default(microphoneConfigDefault.disconnect_seconds), - connect_on_load: z.boolean().default(microphoneConfigDefault.connect_on_load), }) .default(microphoneConfigDefault); export type MicrophoneConfig = z.infer;