Skip to content

feat: add scene handling (move from ZHC) #5424

feat: add scene handling (move from ZHC)

feat: add scene handling (move from ZHC) #5424

Triggered via pull request December 7, 2025 13:54
@NerivecNerivec
synchronize #1570
scenes
Status Failure
Total duration 1m 8s
Artifacts

ci.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

10 errors
test/controller.test.ts > Controller > Green power: test/controller.test.ts#L6869
AssertionError: expected { device: { _events: {}, …(14) } } to strictly equal { device: { ID: 2, …(14) } } - Expected + Received @@ -18,10 +18,11 @@ "pendingRequests": { "deviceIeeeAddress": "0x000000000046f4fe", "id": 242, "sendInProgress": false, }, + "scenes": {}, }, ], "_events": {}, "_eventsCount": 0, "_gpSecurityKey": [ ❯ test/controller.test.ts:6869:51
test/controller.test.ts > Controller > Load database: interviewState migration and reset IN_PROGRESS: test/controller.test.ts#L6246
AssertionError: expected '{"id":3,"type":"Router","ieeeAddr":"0…' to strictly equal '{"id":3,"type":"Router","ieeeAddr":"0…' - Expected + Received - {"id":3,"type":"Router","ieeeAddr":"0x000b57fffec6a5b2","nwkAddr":40369,"manufId":4476,"manufName":"IKEA of Sweden","powerSource":"Mains (single phase)","modelId":"TRADFRI bulb E27 WS opal 980lm","epList":[1],"endpoints":{"1":{"profId":49246,"epId":1,"devId":544,"inClusterList":[0,3,4,5,6,8,768,2821,4096],"outClusterList":[5,25,32,4096],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":17,"stackVersion":87,"hwVersion":1,"dateCode":"20170331","swBuildId":"1.2.217","zclVersion":1,"interviewCompleted":false,"interviewState":"FAILED","meta":{"reporting":1}} + {"id":3,"type":"Router","ieeeAddr":"0x000b57fffec6a5b2","nwkAddr":40369,"manufId":4476,"manufName":"IKEA of Sweden","powerSource":"Mains (single phase)","modelId":"TRADFRI bulb E27 WS opal 980lm","epList":[1],"endpoints":{"1":{"profId":49246,"epId":1,"devId":544,"inClusterList":[0,3,4,5,6,8,768,2821,4096],"outClusterList":[5,25,32,4096],"clusters":{},"binds":[],"scenes":{},"configuredReportings":[],"meta":{}}},"appVersion":17,"stackVersion":87,"hwVersion":1,"dateCode":"20170331","swBuildId":"1.2.217","zclVersion":1,"interviewCompleted":false,"interviewState":"FAILED","meta":{"reporting":1}} - {"id":4,"type":"Router","ieeeAddr":"0x000b57fffec6a5b3","nwkAddr":40369,"manufId":4476,"manufName":"IKEA of Sweden","powerSource":"Mains (single phase)","modelId":"TRADFRI bulb E27 WS opal 980lm","epList":[1],"endpoints":{"1":{"profId":49246,"epId":1,"devId":544,"inClusterList":[0,3,4,5,6,8,768,2821,4096],"outClusterList":[5,25,32,4096],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":17,"stackVersion":87,"hwVersion":1,"dateCode":"20170331","swBuildId":"1.2.217","zclVersion":1,"interviewCompleted":false,"interviewState":"PENDING","meta":{"reporting":1}} + {"id":4,"type":"Router","ieeeAddr":"0x000b57fffec6a5b3","nwkAddr":40369,"manufId":4476,"manufName":"IKEA of Sweden","powerSource":"Mains (single phase)","modelId":"TRADFRI bulb E27 WS opal 980lm","epList":[1],"endpoints":{"1":{"profId":49246,"epId":1,"devId":544,"inClusterList":[0,3,4,5,6,8,768,2821,4096],"outClusterList":[5,25,32,4096],"clusters":{},"binds":[],"scenes":{},"configuredReportings":[],"meta":{}}},"appVersion":17,"stackVersion":87,"hwVersion":1,"dateCode":"20170331","swBuildId":"1.2.217","zclVersion":1,"interviewCompleted":false,"interviewState":"PENDING","meta":{"reporting":1}} - {"id":5,"type":"Coordinator","ieeeAddr":"0x0000012300000000","nwkAddr":0,"manufId":7,"epList":[1,2],"endpoints":{"1":{"profId":2,"epId":1,"devId":3,"inClusterList":[10],"outClusterList":[11],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"2":{"profId":3,"epId":2,"devId":5,"inClusterList":[1],"outClusterList":[0],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}}},"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{}} + {"id":5,"type":"Coordinator","ieeeAddr":"0x0000012300000000","nwkAddr":0,"manufId":7,"epList":[1,2],"endpoints":{"1":{"profId":2,"epId":1,"devId":3,"inClusterList":[10],"outClusterList":[11],"clusters":{},"binds":[],"scenes":{},"configuredReportings":[],"meta":{}},"2":{"profId":3,"epId":2,"devId":5,"inClusterList":[1],"outClusterList":[0],"clusters":{},"binds":[],"scenes":{},"configuredReportings":[],"meta":{}}},"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{}} ❯ test/controller.test.ts:6246:36
test/controller.test.ts > Controller > Load database: test/controller.test.ts#L5901
AssertionError: expected { Object (_events, _eventsCount, ...) } to strictly equal { ID: 1, _events: {}, …(11) } - Expected + Received @@ -19,10 +19,11 @@ "deviceIeeeAddress": "0x0000012300000000", "id": 1, "sendInProgress": false, }, "profileID": 260, + "scenes": {}, }, { "ID": 2, "_binds": [], "_configuredReportings": [], @@ -39,10 +40,11 @@ "deviceIeeeAddress": "0x0000012300000000", "id": 2, "sendInProgress": false, }, "profileID": 257, + "scenes": {}, }, { "ID": 3, "_binds": [], "_configuredReportings": [], @@ -59,10 +61,11 @@ "deviceIeeeAddress": "0x0000012300000000", "id": 3, "sendInProgress": false, }, "profileID": 261, + "scenes": {}, }, { "ID": 4, "_binds": [], "_configuredReportings": [], @@ -79,10 +82,11 @@ "deviceIeeeAddress": "0x0000012300000000", "id": 4, "sendInProgress": false, }, "profileID": 263, + "scenes": {}, }, { "ID": 5, "_binds": [], "_configuredReportings": [], @@ -99,10 +103,11 @@ "deviceIeeeAddress": "0x0000012300000000", "id": 5, "sendInProgress": false, }, "profileID": 264, + "scenes": {}, }, { "ID": 6, "_binds": [], "_configuredReportings": [], @@ -119,10 +124,11 @@ "deviceIeeeAddress": "0x0000012300000000", "id": 6, "sendInProgress": false, }, "profileID": 265, + "scenes": {}, }, { "ID": 11, "_binds": [], "_configuredReportings": [], @@ -141,10 +147,11 @@ "deviceIeeeAddress": "0x0000012300000000", "id": 11, "sendInProgress": false, }, "profileID": 260, + "scenes": {}, }, ], "_events": {}, "_eventsCount": 0, "_ieeeAddr": "0x0000012300000000", ❯ test/controller.test.ts:5901:81
test/controller.test.ts > Controller > Device without meta should set meta to {}: src/controller/model/endpoint.ts#L298
TypeError: Cannot read properties of undefined (reading 'scenes') ❯ Endpoint.fromDatabaseRecord src/controller/model/endpoint.ts:298:25 ❯ Device.fromDatabaseEntry src/controller/model/device.ts:471:37 ❯ Device.loadFromDatabaseIfNecessary src/controller/model/device.ts:566:39 ❯ Device.allIterator src/controller/model/device.ts:615:16 ❯ Controller.databaseSave src/controller/controller.ts:458:20 ❯ Controller.backup src/controller/controller.ts:470:14 ❯ Controller.start src/controller/controller.ts:195:24 ❯ test/controller.test.ts:5223:9
test/controller.test.ts > Controller > Add endpoint to group: test/controller.test.ts#L4954
AssertionError: expected '{"id":1,"type":"Coordinator","ieeeAdd…' to contain '{"id":1,"type":"Coordinator","ieeeAdd…' - Expected + Received - {"id":1,"type":"Coordinator","ieeeAddr":"0x0000012300000000","nwkAddr":0,"manufId":7,"epList":[1,2],"endpoints":{"1":{"profId":2,"epId":1,"devId":3,"inClusterList":[10],"outClusterList":[11],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"2":{"profId":3,"epId":2,"devId":5,"inClusterList":[1],"outClusterList":[0],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}}},"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{}} + {"id":1,"type":"Coordinator","ieeeAddr":"0x0000012300000000","nwkAddr":0,"manufId":7,"epList":[1,2],"endpoints":{"1":{"profId":2,"epId":1,"devId":3,"inClusterList":[10],"outClusterList":[11],"clusters":{},"binds":[],"scenes":{},"configuredReportings":[],"meta":{}},"2":{"profId":3,"epId":2,"devId":5,"inClusterList":[1],"outClusterList":[0],"clusters":{},"binds":[],"scenes":{},"configuredReportings":[],"meta":{}}},"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{}} - {"id":2,"type":"Router","ieeeAddr":"0x129","nwkAddr":129,"manufId":1212,"manufName":"KoenAndCo","powerSource":"Mains (single phase)","modelId":"myModelID","epList":[1],"endpoints":{"1":{"profId":99,"epId":1,"devId":5,"inClusterList":[0,1],"outClusterList":[2],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":2,"stackVersion":101,"hwVersion":3,"dateCode":"201901","swBuildId":"1.01","zclVersion":1,"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{},"lastSeen":1765115721590} + {"id":2,"type":"Router","ieeeAddr":"0x129","nwkAddr":129,"manufId":1212,"manufName":"KoenAndCo","powerSource":"Mains (single phase)","modelId":"myModelID","epList":[1],"endpoints":{"1":{"profId":99,"epId":1,"devId":5,"inClusterList":[0,1],"outClusterList":[2],"clusters":{},"binds":[],"scenes":{},"configuredReportings":[],"meta":{}}},"appVersion":2,"stackVersion":101,"hwVersion":3,"dateCode":"201901","swBuildId":"1.01","zclVersion":1,"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{},"lastSeen":1765115721590} {"id":3,"type":"Group","groupID":2,"members":[{"deviceIeeeAddr":"0x129","endpointID":1}],"meta":{}} ❯ test/controller.test.ts:4954:36
test/controller.test.ts > Controller > Xiaomi end device joins (node descriptor succeeds, but active endpoint response fails): test/controller.test.ts#L3248
AssertionError: expected { Object (_events, _eventsCount, ...) } to strictly equal { ID: 2, _events: {}, …(13) } - Expected + Received @@ -23,10 +23,11 @@ "pendingRequests": { "deviceIeeeAddress": "0x151", "id": 1, "sendInProgress": false, }, + "scenes": {}, }, ], "_events": {}, "_eventsCount": 0, "_ieeeAddr": "0x151", ❯ test/controller.test.ts:3248:68
test/controller.test.ts > Controller > Xiaomi end device joins (node descriptor fails): test/controller.test.ts#L3187
AssertionError: expected { Object (_events, _eventsCount, ...) } to strictly equal { ID: 2, _events: {}, …(13) } - Expected + Received @@ -23,10 +23,11 @@ "pendingRequests": { "deviceIeeeAddress": "0x150", "id": 1, "sendInProgress": false, }, + "scenes": {}, }, ], "_events": {}, "_eventsCount": 0, "_ieeeAddr": "0x150", ❯ test/controller.test.ts:3187:68
test/controller.test.ts > Controller > Join a device and explictly accept it: test/controller.test.ts#L1411
AssertionError: expected { status: 'successful', …(1) } to strictly equal { status: 'successful', …(1) } - Expected + Received @@ -25,10 +25,11 @@ "deviceIeeeAddress": "0x129", "id": 1, "sendInProgress": false, }, "profileID": 99, + "scenes": {}, }, ], "_events": {}, "_eventsCount": 0, "_ieeeAddr": "0x129", ❯ test/controller.test.ts:1411:43
test/controller.test.ts > Controller > Join a device: test/controller.test.ts#L1320
AssertionError: expected { status: 'successful', …(1) } to strictly equal { status: 'successful', …(1) } - Expected + Received @@ -25,10 +25,11 @@ "deviceIeeeAddress": "0x129", "id": 1, "sendInProgress": false, }, "profileID": 99, + "scenes": {}, }, ], "_events": {}, "_eventsCount": 0, "_ieeeAddr": "0x129", ❯ test/controller.test.ts:1320:43
test/controller.test.ts > Controller > Controller start: test/controller.test.ts#L653
AssertionError: expected { Object (_events, _eventsCount, ...) } to strictly equal { ID: 1, _events: {}, …(11) } - Expected + Received @@ -23,10 +23,11 @@ "deviceIeeeAddress": "0x0000012300000000", "id": 1, "sendInProgress": false, }, "profileID": 2, + "scenes": {}, }, { "ID": 2, "_binds": [], "_configuredReportings": [], @@ -47,10 +48,11 @@ "deviceIeeeAddress": "0x0000012300000000", "id": 2, "sendInProgress": false, }, "profileID": 3, + "scenes": {}, }, ], "_events": {}, "_eventsCount": 0, "_ieeeAddr": "0x0000012300000000", ❯ test/controller.test.ts:653:74