Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: user callbacks not working with MQTT #3424

Merged
merged 3 commits into from
Nov 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/workflows/docker-release-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,25 +27,25 @@ jobs:
node-version: 20
cache: 'yarn'

- uses: docker/setup-buildx-action@v2
- uses: docker/setup-qemu-action@v2
- uses: docker/setup-buildx-action@v3
- uses: docker/setup-qemu-action@v3

- name: Login to dockerhub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Login to Github Packages
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create Docker Meta
id: docker_meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: zwavejs/zwavejs2mqtt,zwavejs/zwave-js-ui,ghcr.io/zwave-js/zwave-js-ui
tags: |
Expand All @@ -65,7 +65,7 @@ jobs:
yarn build

- name: build+push
uses: docker/build-push-action@v3
uses: docker/build-push-action@v5
timeout-minutes: 120
with:
platforms: linux/arm64,linux/amd64,linux/arm/v6,linux/arm/v7
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/docker-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,25 +24,25 @@ jobs:
node-version: 20
cache: 'yarn'

- uses: docker/setup-buildx-action@v2
- uses: docker/setup-qemu-action@v2
- uses: docker/setup-buildx-action@v3
- uses: docker/setup-qemu-action@v3

- name: Login to dockerhub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Login to Github Packages
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create Docker Meta
id: docker_meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: zwavejs/zwave-js-ui,ghcr.io/zwave-js/zwave-js-ui
tags: |
Expand All @@ -59,7 +59,7 @@ jobs:

- name: Create Docker Meta for zwavejs2mqtt
id: docker_meta2
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: zwavejs/zwavejs2mqtt
tags: |
Expand All @@ -81,7 +81,7 @@ jobs:

- name: build+push
timeout-minutes: 120 # prevents this to run indeterminatly
uses: docker/build-push-action@v3
uses: docker/build-push-action@v5
with:
platforms: linux/arm64,linux/amd64,linux/arm/v6,linux/arm/v7
file: docker/Dockerfile
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/docker-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ jobs:
steps:
- uses: actions/checkout@v3

- uses: docker/setup-buildx-action@v2
- uses: docker/setup-qemu-action@v2
- uses: docker/setup-buildx-action@v3
- uses: docker/setup-qemu-action@v3

- uses: actions/github-script@v6
id: ref-sanitized
Expand All @@ -30,7 +30,7 @@ jobs:

- name: Create Docker Meta
id: docker_meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: zwavejs/zwavejs2mqtt,zwavejs/zwave-js-ui,ghcr.io/zwave-js/zwave-js-ui
tags: |
Expand All @@ -45,7 +45,7 @@ jobs:
maintainer=robertsLando

- name: Buildx build
uses: docker/build-push-action@v3
uses: docker/build-push-action@v5
timeout-minutes: 120
with:
platforms: ${{ matrix.platform }}
Expand Down
23 changes: 18 additions & 5 deletions lib/ZwaveClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ import {
ZWavePlusRoleType,
FirmwareUpdateInfo,
PartialZWaveOptions,
InclusionUserCallbacks,
} from 'zwave-js'
import { getEnumMemberName, parseQRCodeString } from 'zwave-js/Utils'
import { logsDir, nvmBackupsDir, storeDir } from '../config/app'
Expand Down Expand Up @@ -698,6 +699,12 @@ class ZwaveClient extends TypedEventEmitter<ZwaveClientEventCallbacks> {
{ lastUpdate: number; fn: () => void; timeout: NodeJS.Timeout }
> = new Map()

private inclusionUserCallbacks: InclusionUserCallbacks = {
grantSecurityClasses: this._onGrantSecurityClasses.bind(this),
validateDSKAndEnterPIN: this._onValidateDSK.bind(this),
abort: this._onAbortInclusion.bind(this),
}

public get driverReady() {
return this.driver && this._driverReady && !this.closed
}
Expand Down Expand Up @@ -930,24 +937,22 @@ class ZwaveClient extends TypedEventEmitter<ZwaveClientEventCallbacks> {

setUserCallbacks() {
this.hasUserCallbacks = true
if (!this._driver) {
if (!this._driver || !this.cfg.serverEnabled) {
return
}

logger.info('Setting user callbacks')

this.driver.updateOptions({
inclusionUserCallbacks: {
grantSecurityClasses: this._onGrantSecurityClasses.bind(this),
validateDSKAndEnterPIN: this._onValidateDSK.bind(this),
abort: this._onAbortInclusion.bind(this),
...this.inclusionUserCallbacks,
},
})
}

removeUserCallbacks() {
this.hasUserCallbacks = false
if (!this._driver) {
if (!this._driver || !this.cfg.serverEnabled) {
return
}

Expand Down Expand Up @@ -2161,6 +2166,14 @@ class ZwaveClient extends TypedEventEmitter<ZwaveClientEventCallbacks> {
zwaveOptions.features.softReset = this.cfg.enableSoftReset
}

// when server is not enabled, disable the user callbacks set/remove
// so it can be used through MQTT
if (!this.cfg.serverEnabled) {
zwaveOptions.inclusionUserCallbacks = {
...this.inclusionUserCallbacks,
}
}

if (this.cfg.scales) {
const scales: Record<string | number, string | number> = {}
for (const s of this.cfg.scales) {
Expand Down