From aca5de8cff21df5f89803a6a23ba90523d6804af Mon Sep 17 00:00:00 2001 From: Jatus Date: Tue, 30 Jan 2024 11:32:43 +0100 Subject: [PATCH] new pipeline version handling --- .github/workflows/docker-image.yml | 28 +++++++++++++------ .../src/home-assistant/HAmiddleware.ts | 10 ++++--- .../devices/lights/DimmerableLightDevice.ts | 20 ++++++++++++- .../mapper/devices/lights/OnOffLightDevice.ts | 14 ++++++++++ 4 files changed, 59 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 42962b6..e0842ba 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -1,7 +1,6 @@ name: Publish Docker image -on: - push +on: push jobs: push_to_registry: @@ -10,22 +9,35 @@ jobs: steps: - name: Check out the repo uses: actions/checkout@v4 - + + - name: Run read-yaml action + id: yaml-data + uses: jbutcher5/read-yaml@1.6 + with: + file: "./matter-bridge/config.yml" + key-path: '["version"]' + + - name: Display read-yaml output + run: echo "${{ steps.yaml-data.outputs.data }}" + - name: Log in to the Container registry - uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + uses: docker/login-action@v3.0.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GHCR }} - + - name: Extract metadata (tags, labels) for Docker id: meta - uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository }} - + tags: | + type=raw,value=${{ steps.yaml-data.outputs.data }} + type=raw,value=latest + - name: Build and push Docker image - uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 + uses: docker/build-push-action@v5.1.0 with: context: ./matter-bridge file: ./matter-bridge/Dockerfile diff --git a/matter-bridge/src/home-assistant/HAmiddleware.ts b/matter-bridge/src/home-assistant/HAmiddleware.ts index 80817ab..d7f1d85 100644 --- a/matter-bridge/src/home-assistant/HAmiddleware.ts +++ b/matter-bridge/src/home-assistant/HAmiddleware.ts @@ -35,10 +35,10 @@ export class HAMiddleware { subscribe() { this.hassClient.on('state_changed', (event) => { - this.logger.debug(event); + this.logger.debug(JSON.stringify(event)); const toDo = this.functionsToCallOnChange[event.data.entity_id]; if (toDo) { - toDo(event.data); + toDo(event); } }); } @@ -58,7 +58,7 @@ export class HAMiddleware { }, {} ); - this.logger.debug({ getStates: sorted }); + this.logger.debug(JSON.stringify({ getStates: sorted })); this.entities = sorted; return this.entities; } @@ -75,7 +75,9 @@ export class HAMiddleware { prev[key].push(states[current]); return prev; }, {}); - this.logger.debug({ getStatesPartitionedByType: toReturn }); + this.logger.debug( + JSON.stringify({ getStatesPartitionedByType: toReturn }) + ); return toReturn; } diff --git a/matter-bridge/src/mapper/devices/lights/DimmerableLightDevice.ts b/matter-bridge/src/mapper/devices/lights/DimmerableLightDevice.ts index 5147fad..74da1b2 100644 --- a/matter-bridge/src/mapper/devices/lights/DimmerableLightDevice.ts +++ b/matter-bridge/src/mapper/devices/lights/DimmerableLightDevice.ts @@ -16,16 +16,28 @@ export const addDimmerableLightDevice: AddHaDeviceToBridge = ( haMiddleware: HAMiddleware, bridge: Bridge ): Device => { + LOGGER.debug( + `Building device ${haEntity.entity_id} \n ${JSON.stringify({ + haEntity, + })}` + ); const device = new DimmableLightDevice( { onOff: haEntity.state === 'on' }, { - currentLevel: Number(haEntity.attributes['brightness']) || null, + currentLevel: + Number(haEntity.attributes['brightness']) / 255 || null, onLevel: 0.1, options: { coupleColorTempToLevel: false, executeIfOff: false }, } ); const serialFromId = MD5(haEntity.entity_id).toString(); device.addOnOffListener((value, oldValue) => { + LOGGER.debug( + `OnOff Event for device ${haEntity.entity_id}, ${JSON.stringify({ + value, + oldValue, + })}` + ); if (value !== oldValue) { haMiddleware.callAService('light', value ? 'turn_on' : 'turn_off', { entity_id: haEntity.entity_id, @@ -41,15 +53,21 @@ export const addDimmerableLightDevice: AddHaDeviceToBridge = ( ); device.addCurrentLevelListener((value) => { + LOGGER.debug( + `CurrentLevel Event for device ${haEntity.entity_id} value: ${value}` + ); haMiddleware.callAService( 'light', Number(value) > 0 ? 'turn_on' : 'turn_off', { entity_id: haEntity.entity_id, brightness: Number(value) } ); }); + haMiddleware.subscrieToDevice( haEntity.entity_id, (event: StateChangedEvent) => { + LOGGER.debug(`Event for device ${haEntity.entity_id}`); + LOGGER.debug(JSON.stringify(event)); device.setOnOff(event.data.new_state?.state === 'on'); device.setCurrentLevel( (event.data.new_state?.attributes as never)['brightness'] diff --git a/matter-bridge/src/mapper/devices/lights/OnOffLightDevice.ts b/matter-bridge/src/mapper/devices/lights/OnOffLightDevice.ts index 5805ceb..c31e05a 100644 --- a/matter-bridge/src/mapper/devices/lights/OnOffLightDevice.ts +++ b/matter-bridge/src/mapper/devices/lights/OnOffLightDevice.ts @@ -14,9 +14,21 @@ export const addOnOffLightDevice: AddHaDeviceToBridge = ( haMiddleware: HAMiddleware, bridge: Bridge ): Device => { + LOGGER.debug( + `Building device ${haEntity.entity_id} \n ${JSON.stringify({ + haEntity, + })}` + ); const device = new OnOffLightDevice(); const serialFromId = MD5(haEntity.entity_id).toString(); device.addOnOffListener((value, oldValue) => { + LOGGER.debug( + `OnOff Event for device ${haEntity.entity_id}, ${JSON.stringify({ + value, + oldValue, + })}` + ); + if (value !== oldValue) { haMiddleware.callAService('light', value ? 'turn_on' : 'turn_off', { entity_id: haEntity.entity_id, @@ -33,6 +45,8 @@ export const addOnOffLightDevice: AddHaDeviceToBridge = ( haMiddleware.subscrieToDevice( haEntity.entity_id, (event: StateChangedEvent) => { + LOGGER.debug(`Event for device ${haEntity.entity_id}`); + LOGGER.debug(JSON.stringify(event)); device.setOnOff(event.data.new_state?.state === 'on'); } );