From a4758e9dcefe0e5453701754260e5dd0b9d58fb2 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Mon, 20 Feb 2023 22:34:38 -0500 Subject: [PATCH 1/4] Re-add target option to zwave-js firmware upload --- src/data/zwave_js.ts | 6 +++- .../dialog-zwave_js-update-firmware-node.ts | 28 ++++++++++++++++++- src/translations/en.json | 2 ++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/data/zwave_js.ts b/src/data/zwave_js.ts index 2b0b88d8ccc5..3cfbd367fc2d 100644 --- a/src/data/zwave_js.ts +++ b/src/data/zwave_js.ts @@ -757,10 +757,14 @@ export const fetchZwaveNodeFirmwareUpdateCapabilities = ( export const uploadFirmwareAndBeginUpdate = async ( hass: HomeAssistant, device_id: string, - file: File + file: File, + target?: number ) => { const fd = new FormData(); fd.append("file", file); + if (target !== undefined) { + fd.append("target", target.toString()); + } const resp = await hass.fetchWithAuth( `/api/zwave_js/firmware/upload/${device_id}`, { diff --git a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts index d58c1822b19c..eaf8393de68e 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts @@ -36,6 +36,7 @@ import { showAlertDialog, showConfirmationDialog, } from "../../../../../dialogs/generic/show-dialog-box"; +import { HaFormIntegerSchema } from "../../../../../components/ha-form/types"; @customElement("dialog-zwave_js-update-firmware-node") class DialogZWaveJSUpdateFirmwareNode extends LitElement { @@ -59,6 +60,8 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement { @state() private _nodeStatus?: ZWaveJSNodeStatus; + @state() private _firmwareTarget?: number; + private _subscribedNodeStatus?: Promise; private _subscribedNodeFirmwareUpdate?: Promise; @@ -80,6 +83,7 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement { this._updateFinishedMessage = undefined; this._firmwareFile = undefined; this._nodeStatus = undefined; + this._firmwareTarget = undefined; this._uploading = this._updateInProgress = false; fireEvent(this, "dialog-closed", { dialog: this.localName }); @@ -94,6 +98,12 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement { return html``; } + const schema: HaFormIntegerSchema = { + name: "firmware_target", + type: "integer", + valueMin: 0, + }; + const beginFirmwareUpdateHTML = html` +

+ ${this.hass.localize( + "ui.panel.config.zwave_js.update_firmware.firmware_target_intro" + )} +

+ Date: Tue, 21 Feb 2023 19:17:34 -0500 Subject: [PATCH 2/4] move const outside of render --- .../dialog-zwave_js-update-firmware-node.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts index eaf8393de68e..9b5872ef5067 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts @@ -38,6 +38,12 @@ import { } from "../../../../../dialogs/generic/show-dialog-box"; import { HaFormIntegerSchema } from "../../../../../components/ha-form/types"; +const firmwareTargetSchema: HaFormIntegerSchema = { + name: "firmware_target", + type: "integer", + valueMin: 0, +}; + @customElement("dialog-zwave_js-update-firmware-node") class DialogZWaveJSUpdateFirmwareNode extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; @@ -98,12 +104,6 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement { return html``; } - const schema: HaFormIntegerSchema = { - name: "firmware_target", - type: "integer", - valueMin: 0, - }; - const beginFirmwareUpdateHTML = html` Date: Wed, 22 Feb 2023 10:47:44 -0500 Subject: [PATCH 3/4] Make const the array --- .../dialog-zwave_js-update-firmware-node.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts index 9b5872ef5067..de20bbe96821 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts @@ -36,13 +36,15 @@ import { showAlertDialog, showConfirmationDialog, } from "../../../../../dialogs/generic/show-dialog-box"; -import { HaFormIntegerSchema } from "../../../../../components/ha-form/types"; +import { HaFormSchema } from "../../../../../components/ha-form/types"; -const firmwareTargetSchema: HaFormIntegerSchema = { - name: "firmware_target", - type: "integer", - valueMin: 0, -}; +const firmwareTargetSchema: HaFormSchema[] = [ + { + name: "firmware_target", + type: "integer", + valueMin: 0, + }, +]; @customElement("dialog-zwave_js-update-firmware-node") class DialogZWaveJSUpdateFirmwareNode extends LitElement { @@ -122,7 +124,7 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement { Date: Wed, 22 Feb 2023 13:40:48 -0500 Subject: [PATCH 4/4] hide firmware target for controller firmware updates --- .../dialog-zwave_js-update-firmware-node.ts | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts index de20bbe96821..e6d5859efac5 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts @@ -116,17 +116,19 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement { )} @file-picked=${this._uploadFile} > -

- ${this.hass.localize( - "ui.panel.config.zwave_js.update_firmware.firmware_target_intro" - )} -

- + ${this._nodeStatus.is_controller_node + ? html`` + : html`

+ ${this.hass.localize( + "ui.panel.config.zwave_js.update_firmware.firmware_target_intro" + )} +

+ `}