diff --git a/src/data/zwave_js.ts b/src/data/zwave_js.ts index 2b0b88d8cc..3cfbd367fc 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 d58c1822b1..e6d5859efa 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,15 @@ import { showAlertDialog, showConfirmationDialog, } from "../../../../../dialogs/generic/show-dialog-box"; +import { HaFormSchema } from "../../../../../components/ha-form/types"; + +const firmwareTargetSchema: HaFormSchema[] = [ + { + name: "firmware_target", + type: "integer", + valueMin: 0, + }, +]; @customElement("dialog-zwave_js-update-firmware-node") class DialogZWaveJSUpdateFirmwareNode extends LitElement { @@ -59,6 +68,8 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement { @state() private _nodeStatus?: ZWaveJSNodeStatus; + @state() private _firmwareTarget?: number; + private _subscribedNodeStatus?: Promise; private _subscribedNodeFirmwareUpdate?: Promise; @@ -80,6 +91,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 }); @@ -104,6 +116,19 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement { )} @file-picked=${this._uploadFile} > + ${this._nodeStatus.is_controller_node + ? html`` + : html`

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

+ `}