Fix getting custom config parameters for Z-Wave JS (#23244)

This commit is contained in:
Petar Petrov 2024-12-12 14:37:22 +02:00 committed by GitHub
parent f0ddc408e8
commit 9c04f57e35
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 27 additions and 5 deletions

View File

@ -715,11 +715,13 @@ export const getZwaveNodeRawConfigParameter = (
device_id: string, device_id: string,
property: number property: number
): Promise<number> => ): Promise<number> =>
hass.callWS({ hass
type: "zwave_js/get_raw_config_parameter", .callWS<{ value: number }>({
device_id, type: "zwave_js/get_raw_config_parameter",
property, device_id,
}); property,
})
.then((res) => res.value);
export const reinterviewZwaveNode = ( export const reinterviewZwaveNode = (
hass: HomeAssistant, hass: HomeAssistant,

View File

@ -11,6 +11,7 @@ import {
getZwaveNodeRawConfigParameter, getZwaveNodeRawConfigParameter,
setZwaveNodeRawConfigParameter, setZwaveNodeRawConfigParameter,
} from "../../../../../data/zwave_js"; } from "../../../../../data/zwave_js";
import { fireEvent } from "../../../../../common/dom/fire_event";
@customElement("zwave_js-custom-param") @customElement("zwave_js-custom-param")
class ZWaveJSCustomParam extends LitElement { class ZWaveJSCustomParam extends LitElement {
@ -165,6 +166,10 @@ class ZWaveJSCustomParam extends LitElement {
this._customParamNumber this._customParamNumber
); );
this._value = value; this._value = value;
fireEvent(this, "new-value", {
property: this._customParamNumber,
value: this._value,
});
} catch (err: any) { } catch (err: any) {
this._error = err?.message || "Unknown error"; this._error = err?.message || "Unknown error";
} finally { } finally {
@ -206,6 +211,10 @@ class ZWaveJSCustomParam extends LitElement {
this._valueSize, this._valueSize,
this._valueFormat this._valueFormat
); );
fireEvent(this, "new-value", {
property: this._customParamNumber,
value: this._value,
});
} catch (err: any) { } catch (err: any) {
this._error = err?.message || "Unknown error"; this._error = err?.message || "Unknown error";
} finally { } finally {
@ -261,4 +270,10 @@ declare global {
interface HTMLElementTagNameMap { interface HTMLElementTagNameMap {
"zwave_js-custom-param": ZWaveJSCustomParam; "zwave_js-custom-param": ZWaveJSCustomParam;
} }
interface HASSDomEvents {
"new-value": {
property: number;
value: number;
};
}
} }

View File

@ -214,6 +214,7 @@ class ZWaveJSNodeConfig extends LitElement {
<zwave_js-custom-param <zwave_js-custom-param
.hass=${this.hass} .hass=${this.hass}
.deviceId=${this.deviceId} .deviceId=${this.deviceId}
@new-value=${this._handleNewValue}
></zwave_js-custom-param> ></zwave_js-custom-param>
</ha-card> </ha-card>
</ha-config-section> </ha-config-section>
@ -389,6 +390,10 @@ class ZWaveJSNodeConfig extends LitElement {
return false; return false;
} }
private _handleNewValue() {
this._fetchData();
}
private _switchToggled(ev) { private _switchToggled(ev) {
this._setResult(ev.target.key, undefined); this._setResult(ev.target.key, undefined);
this._updateConfigParameter(ev.target, ev.detail.value ? 1 : 0); this._updateConfigParameter(ev.target, ev.detail.value ? 1 : 0);