homebridge-hap-homematic 0.2.2 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/ccu/CcuClient.js +3 -0
- package/dist/src/ccu/CcuClient.js.map +1 -1
- package/dist/src/ccu/EventServer.d.ts +9 -0
- package/dist/src/ccu/EventServer.js +51 -2
- package/dist/src/ccu/EventServer.js.map +1 -1
- package/dist/src/ccu/InterfaceSupervisor.d.ts +3 -0
- package/dist/src/ccu/InterfaceSupervisor.js +14 -2
- package/dist/src/ccu/InterfaceSupervisor.js.map +1 -1
- package/homebridge-ui/public/app.js +117 -55
- package/homebridge-ui/public/index.html +22 -7
- package/package.json +3 -3
|
@@ -302,6 +302,9 @@ export class CcuClient extends EventEmitter {
|
|
|
302
302
|
}
|
|
303
303
|
handleEvent(ev) {
|
|
304
304
|
const sup = this.byCallbackId.get(ev.callbackId);
|
|
305
|
+
if (!sup) {
|
|
306
|
+
this.log.debug('Event for unknown callback id %s: %s.%s', ev.callbackId, ev.channelAddress, ev.datapoint);
|
|
307
|
+
}
|
|
305
308
|
if (ev.datapoint === 'PONG' && (ev.channelAddress === 'CENTRAL' || ev.channelAddress === 'CENTRAL:0')) {
|
|
306
309
|
// Own PONG (value = our caller id) or a foreign client's; both prove
|
|
307
310
|
// that our subscription on this interface is alive.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CcuClient.js","sourceRoot":"","sources":["../../../src/ccu/CcuClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CcuClient.js","sourceRoot":"","sources":["../../../src/ccu/CcuClient.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,oEAAoE;AACpE;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAA4C,MAAM,kBAAkB,CAAC;AACzF,OAAO,EACL,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,SAAS,EACT,eAAe,EACf,mBAAmB,GAGpB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAc7C,MAAM,kBAAkB,GAGnB;IACH,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE;IACrC,EAAE,EAAE,EAAE,SAAS,EAAI,IAAI,EAAE,QAAQ,EAAE;CACpC,CAAC;AAWF,MAAM,OAAO,SAAU,SAAQ,YAAY;IAChC,WAAW,CAAc;IACjB,UAAU,GAAmC,IAAI,GAAG,EAAE,CAAC;IACvD,kBAAkB,GAAwC,IAAI,GAAG,EAAE,CAAC;IACpE,MAAM,CAAiB;IACvB,GAAG,CAAiB;IACpB,WAAW,GAA6C,IAAI,GAAG,EAAE,CAAC;IACnF,wEAAwE;IACvD,YAAY,GAAqC,IAAI,GAAG,EAAE,CAAC;IACpE,OAAO,GAAG,KAAK,CAAC;IAChB,SAAS,GAAc,GAAG,EAAE,CAAC,SAAS,CAAC;IAC/C,iFAAiF;IAChE,QAAQ,GAAG,IAAI,GAAG,EAAwD,CAAC;IAC5F,wDAAwD;IACvC,gBAAgB,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE3E,YAAY,IAAsB;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAEpB,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI;YAClC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI;YAClC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACxF,MAAM,WAAW,GAAG,UAAU,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC7E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;YAClE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;YAC5D,CAAC,CAAC,SAAS,CAAC;QACd,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,kBAAkB,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,SAAS;YACX,CAAC;YACD,MAAM,UAAU,GAAG,GAAG,WAAW,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;gBAC3B,WAAW,EAAE,EAAE;gBACf,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,WAAW;gBACX,UAAU;gBACV,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAChC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBACvB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1B,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC;gBAClC,MAAM;gBACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACjC,MAAM,EAAE,UAAU;gBAClB,WAAW;gBACX,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnD,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/E,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5G,CAAC;QACD,sEAAsE;QACtE,oEAAoE;QACpE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,0DAA0D;IAC1D,iBAAiB;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc;QAIlB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0C,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;QAChD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAY,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QACxD,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;QACjC,CAAC;QACD,MAAM,GAAG,GAAgB,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,yEAAyE;IACzE,YAAY,CAAC,OAAoB;QAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YAClD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC;IAED,8EAA8E;IAC9E,eAAe,CAAC,OAAe,EAAE,IAAoB;QACnD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,sBAAsB,CAAC,OAAe;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7F,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uEAAuE;IACvE,gBAAgB,CAAC,OAAe,EAAE,QAA2B;QAC3D,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO,GAAG,EAAE;YACV,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAC7E,CAAC;IAED,oEAAoE;IACpE,iBAAiB,CAAC,EAAkB;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;IACzC,CAAC;IAED,yEAAyE;IACzE,YAAY,CAAC,EAAa;QACxB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,kEAAkE;IAClE,QAAQ,CAAC,OAAe,EAAE,SAAiB;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,SAAiB,EAAE,KAAc;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,SAAiB;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,OAAe;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC/D,MAAM,GAAG,GAA4B,EAAE,CAAC;gBACxC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;wBAChC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;gBAC9E,OAAO,SAAS,CAAC;YACnB,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,+DAA+D;IAC/D,QAAQ,CAAC,OAAe,EAAE,SAAiB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC;QACrD,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,yDAAyD;IACzD,WAAW,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,sEAAsE;IAE9D,SAAS,CAAC,OAAe;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,4BAA4B,OAAO,GAAG,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,OAAO,CAAC,EAAkB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,kEAAkE;IAC1D,cAAc,CAAC,CAAmB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,CAAC,qDAAqD;QAC/D,CAAC;QACD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;IAEO,WAAW,CAAC,EAAgB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,EAAE,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,CAAC,cAAc,KAAK,WAAW,CAAC,EAAE,CAAC;YACtG,qEAAqE;YACrE,oDAAoD;YACpD,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QACD,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,WAAW,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,+DAA+D;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACtE,IAAI,UAAU;gBAAE,OAAO,UAAU,CAAC;QACpC,CAAC;QACD,mEAAmE;QACnE,4CAA4C;QAC5C,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAClE,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QACtC,CAAC;QACD,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACvC,OAAO,CAAC,CAAC,OAAO,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAA2B,EAAE,IAAoB;IACzE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC7C,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE;YACrB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YAClB,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;YAC1C,SAAS,EAAE,IAAI;YACf,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAO,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,OAAO,GAAe;YAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YAClB,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;SACpC,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACjC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,OAAO,CAAC,IAAwB,EAAE,KAAc;IAC9D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,CAAC;QACD,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACjF,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -15,9 +15,15 @@
|
|
|
15
15
|
* (also inside system.multicall) is reported as `activity`, which the
|
|
16
16
|
* per-interface supervisors use as a sign of life and as the init
|
|
17
17
|
* handshake (the CCU calls listDevices right after init).
|
|
18
|
+
*
|
|
19
|
+
* Debug log: every TCP connection of the CCU (open / close, requests on
|
|
20
|
+
* it) and every call with a short summary, the response size and time,
|
|
21
|
+
* and responses that never reached the CCU.
|
|
18
22
|
*/
|
|
19
23
|
import { EventEmitter } from 'node:events';
|
|
20
24
|
import type { PrefixedLogger } from '../util/logger.js';
|
|
25
|
+
/** Short text for the debug log, e.g. `event(cb) ABC:1.STATE=true`. */
|
|
26
|
+
export declare function describeCall(method: string, params: unknown[]): string;
|
|
21
27
|
export interface EventServerOptions {
|
|
22
28
|
host: string;
|
|
23
29
|
port: number;
|
|
@@ -50,11 +56,14 @@ export declare class EventServer extends EventEmitter {
|
|
|
50
56
|
private readonly port;
|
|
51
57
|
private readonly log;
|
|
52
58
|
private server;
|
|
59
|
+
private connectionSeq;
|
|
60
|
+
private readonly connections;
|
|
53
61
|
constructor(opts: EventServerOptions);
|
|
54
62
|
on<K extends keyof EventServerEvents>(event: K, listener: EventServerEvents[K]): this;
|
|
55
63
|
emit<K extends keyof EventServerEvents>(event: K, ...args: Parameters<EventServerEvents[K]>): boolean;
|
|
56
64
|
start(): Promise<void>;
|
|
57
65
|
stop(): Promise<void>;
|
|
66
|
+
private trackConnection;
|
|
58
67
|
private handleRequest;
|
|
59
68
|
private dispatch;
|
|
60
69
|
}
|
|
@@ -17,17 +17,43 @@
|
|
|
17
17
|
* (also inside system.multicall) is reported as `activity`, which the
|
|
18
18
|
* per-interface supervisors use as a sign of life and as the init
|
|
19
19
|
* handshake (the CCU calls listDevices right after init).
|
|
20
|
+
*
|
|
21
|
+
* Debug log: every TCP connection of the CCU (open / close, requests on
|
|
22
|
+
* it) and every call with a short summary, the response size and time,
|
|
23
|
+
* and responses that never reached the CCU.
|
|
20
24
|
*/
|
|
21
25
|
import { Buffer } from 'node:buffer';
|
|
22
26
|
import { EventEmitter } from 'node:events';
|
|
23
27
|
import * as http from 'node:http';
|
|
24
28
|
import { parseXml, serializeFault, serializeResponse } from './xmlRpc.js';
|
|
25
29
|
const MAX_BODY_BYTES = 4 * 1024 * 1024;
|
|
30
|
+
/** Sub-calls of a system.multicall listed in the debug summary. */
|
|
31
|
+
const SUMMARY_CALLS = 5;
|
|
32
|
+
/** Short text for the debug log, e.g. `event(cb) ABC:1.STATE=true`. */
|
|
33
|
+
export function describeCall(method, params) {
|
|
34
|
+
if (method === 'event') {
|
|
35
|
+
const [cb, address, dp, value] = params;
|
|
36
|
+
return `event(${String(cb)}) ${String(address)}.${String(dp)}=${short(value)}`;
|
|
37
|
+
}
|
|
38
|
+
if (method === 'system.multicall') {
|
|
39
|
+
const calls = Array.isArray(params[0]) ? params[0] : [];
|
|
40
|
+
const parts = calls.slice(0, SUMMARY_CALLS).map((c) => describeCall(String(c?.methodName ?? '?'), Array.isArray(c?.params) ? c.params : []));
|
|
41
|
+
const more = calls.length > SUMMARY_CALLS ? `; … ${calls.length - SUMMARY_CALLS} more` : '';
|
|
42
|
+
return `system.multicall[${calls.length}] ${parts.join('; ')}${more}`;
|
|
43
|
+
}
|
|
44
|
+
return typeof params[0] === 'string' ? `${method}(${params[0]})` : method;
|
|
45
|
+
}
|
|
46
|
+
function short(value) {
|
|
47
|
+
const s = typeof value === 'object' && value !== null ? JSON.stringify(value) : String(value);
|
|
48
|
+
return s.length > 40 ? `${s.slice(0, 40)}…` : s;
|
|
49
|
+
}
|
|
26
50
|
export class EventServer extends EventEmitter {
|
|
27
51
|
host;
|
|
28
52
|
port;
|
|
29
53
|
log;
|
|
30
54
|
server;
|
|
55
|
+
connectionSeq = 0;
|
|
56
|
+
connections = new WeakMap();
|
|
31
57
|
constructor(opts) {
|
|
32
58
|
super();
|
|
33
59
|
this.host = opts.host;
|
|
@@ -43,6 +69,7 @@ export class EventServer extends EventEmitter {
|
|
|
43
69
|
async start() {
|
|
44
70
|
return new Promise((resolve, reject) => {
|
|
45
71
|
const server = http.createServer((req, res) => this.handleRequest(req, res));
|
|
72
|
+
server.on('connection', (socket) => this.trackConnection(socket));
|
|
46
73
|
server.on('error', (err) => {
|
|
47
74
|
this.emit('error', err);
|
|
48
75
|
reject(err);
|
|
@@ -65,7 +92,27 @@ export class EventServer extends EventEmitter {
|
|
|
65
92
|
server.close(() => resolve());
|
|
66
93
|
});
|
|
67
94
|
}
|
|
95
|
+
trackConnection(socket) {
|
|
96
|
+
const info = { id: ++this.connectionSeq, requests: 0 };
|
|
97
|
+
this.connections.set(socket, info);
|
|
98
|
+
this.log.debug('connection #%d from %s:%s', info.id, socket.remoteAddress ?? '?', String(socket.remotePort ?? '?'));
|
|
99
|
+
socket.on('close', (hadError) => {
|
|
100
|
+
this.log.debug('connection #%d closed after %d request(s)%s', info.id, info.requests, hadError ? ' (error)' : '');
|
|
101
|
+
});
|
|
102
|
+
}
|
|
68
103
|
handleRequest(req, res) {
|
|
104
|
+
const started = Date.now();
|
|
105
|
+
const conn = this.connections.get(req.socket);
|
|
106
|
+
if (conn) {
|
|
107
|
+
conn.requests++;
|
|
108
|
+
}
|
|
109
|
+
const tag = conn ? `#${conn.id}.${conn.requests}` : '#?';
|
|
110
|
+
res.on('close', () => {
|
|
111
|
+
if (!res.writableFinished) {
|
|
112
|
+
this.log.debug('%s response not delivered (connection closed)', tag);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
res.on('error', (err) => this.log.debug('%s response error: %s', tag, err.message));
|
|
69
116
|
if (req.method !== 'POST') {
|
|
70
117
|
res.writeHead(405, { 'Content-Type': 'text/plain' });
|
|
71
118
|
res.end('Method Not Allowed');
|
|
@@ -86,11 +133,13 @@ export class EventServer extends EventEmitter {
|
|
|
86
133
|
const body = Buffer.concat(chunks).toString('utf8');
|
|
87
134
|
const parsed = parseXml(body);
|
|
88
135
|
const result = this.dispatch(parsed.method, parsed.params);
|
|
136
|
+
const xml = serializeResponse(result);
|
|
89
137
|
res.writeHead(200, { 'Content-Type': 'text/xml' });
|
|
90
|
-
res.end(
|
|
138
|
+
res.end(xml);
|
|
139
|
+
this.log.debug('%s %s → %d bytes in %d ms', tag, describeCall(parsed.method, parsed.params), Buffer.byteLength(xml), Date.now() - started);
|
|
91
140
|
}
|
|
92
141
|
catch (err) {
|
|
93
|
-
this.log.error('Event server handler error: %s', err.message);
|
|
142
|
+
this.log.error('Event server handler error (%s): %s', tag, err.message);
|
|
94
143
|
res.writeHead(200, { 'Content-Type': 'text/xml' });
|
|
95
144
|
res.end(serializeFault(-1, err.message));
|
|
96
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventServer.js","sourceRoot":"","sources":["../../../src/ccu/EventServer.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,oEAAoE;AACpE
|
|
1
|
+
{"version":3,"file":"EventServer.js","sourceRoot":"","sources":["../../../src/ccu/EventServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,7 @@ export declare class InterfaceSupervisor extends EventEmitter {
|
|
|
71
71
|
private nextRetryAt;
|
|
72
72
|
private lastPingAt;
|
|
73
73
|
private lastActivityAt;
|
|
74
|
+
private lastPongAt;
|
|
74
75
|
private subscribedAt;
|
|
75
76
|
private handshakeSeen;
|
|
76
77
|
private lastError;
|
|
@@ -86,6 +87,8 @@ export declare class InterfaceSupervisor extends EventEmitter {
|
|
|
86
87
|
* `listDevices` completes the init handshake.
|
|
87
88
|
*/
|
|
88
89
|
noteActivity(kind: 'event' | 'pong' | 'listDevices' | 'other'): void;
|
|
90
|
+
/** "12 s ago" / "never" for the stale warning. */
|
|
91
|
+
private ago;
|
|
89
92
|
/** Serialize operations; a tick that finds us busy just skips. */
|
|
90
93
|
private run;
|
|
91
94
|
private tick;
|
|
@@ -45,6 +45,7 @@ export class InterfaceSupervisor extends EventEmitter {
|
|
|
45
45
|
nextRetryAt = 0;
|
|
46
46
|
lastPingAt = 0;
|
|
47
47
|
lastActivityAt = 0;
|
|
48
|
+
lastPongAt = 0;
|
|
48
49
|
subscribedAt = 0;
|
|
49
50
|
handshakeSeen = true;
|
|
50
51
|
lastError = '';
|
|
@@ -95,10 +96,20 @@ export class InterfaceSupervisor extends EventEmitter {
|
|
|
95
96
|
* `listDevices` completes the init handshake.
|
|
96
97
|
*/
|
|
97
98
|
noteActivity(kind) {
|
|
98
|
-
|
|
99
|
+
const now = this.now();
|
|
100
|
+
this.lastActivityAt = now;
|
|
99
101
|
if (kind === 'listDevices') {
|
|
100
102
|
this.handshakeSeen = true;
|
|
103
|
+
this.log.debug('%s: handshake (listDevices) %d ms after init', this.interfaceId, now - this.subscribedAt);
|
|
101
104
|
}
|
|
105
|
+
else if (kind === 'pong') {
|
|
106
|
+
this.lastPongAt = now;
|
|
107
|
+
this.log.debug('%s: PONG %d ms after ping', this.interfaceId, now - this.lastPingAt);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/** "12 s ago" / "never" for the stale warning. */
|
|
111
|
+
ago(at, now) {
|
|
112
|
+
return at > 0 ? `${Math.round((now - at) / 1000)} s ago` : 'never';
|
|
102
113
|
}
|
|
103
114
|
// --- internals -----------------------------------------------------
|
|
104
115
|
/** Serialize operations; a tick that finds us busy just skips. */
|
|
@@ -127,7 +138,7 @@ export class InterfaceSupervisor extends EventEmitter {
|
|
|
127
138
|
if (now - this.lastActivityAt >= this.t.staleAfterMs) {
|
|
128
139
|
await this.run(async () => {
|
|
129
140
|
this.setState('STALE');
|
|
130
|
-
this.log.warn('%s: no PONG and no events for %d s; subscribing again', this.interfaceId, Math.round((now - this.lastActivityAt) / 1000));
|
|
141
|
+
this.log.warn('%s: no PONG and no events for %d s (last PONG %s, subscribed %s); subscribing again', this.interfaceId, Math.round((now - this.lastActivityAt) / 1000), this.ago(this.lastPongAt, now), this.ago(this.subscribedAt, now));
|
|
131
142
|
await this.subscribe('stale');
|
|
132
143
|
});
|
|
133
144
|
return;
|
|
@@ -144,6 +155,7 @@ export class InterfaceSupervisor extends EventEmitter {
|
|
|
144
155
|
this.lastPingAt = this.now();
|
|
145
156
|
try {
|
|
146
157
|
await this.client.ping(this.pingId);
|
|
158
|
+
this.log.debug('%s: ping call returned (last callback %s)', this.interfaceId, this.ago(this.lastActivityAt, this.now()));
|
|
147
159
|
}
|
|
148
160
|
catch (err) {
|
|
149
161
|
this.disconnected(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceSupervisor.js","sourceRoot":"","sources":["../../../src/ccu/InterfaceSupervisor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InterfaceSupervisor.js","sourceRoot":"","sources":["../../../src/ccu/InterfaceSupervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* (connection only).
|
|
15
15
|
* - state.devicesFile: devices.json (the mappings), loaded and saved
|
|
16
16
|
* through the /devices/get and /devices/put endpoints.
|
|
17
|
-
* - state.view: top-level view (
|
|
17
|
+
* - state.view: top-level view, shown as a tab (settings | channels).
|
|
18
18
|
* - state.nav: optional sub-view stack pushed on top of the base
|
|
19
19
|
* view. Pushing a sub-view (e.g. "edit channel") swaps the body
|
|
20
20
|
* until the user pops back. No modals.
|
|
@@ -69,7 +69,7 @@ const DEFAULT_BLOCK = () => ({
|
|
|
69
69
|
});
|
|
70
70
|
|
|
71
71
|
const state = {
|
|
72
|
-
view: '
|
|
72
|
+
view: 'settings',
|
|
73
73
|
/** Optional drill-down sub-view (replaces base view body until popped). */
|
|
74
74
|
nav: [],
|
|
75
75
|
cfg: DEFAULT_BLOCK(),
|
|
@@ -87,6 +87,8 @@ const state = {
|
|
|
87
87
|
filterType: { channels: 'all' }, // CCU channel type, e.g. SWITCH_VIRTUAL_RECEIVER, or 'all'
|
|
88
88
|
sort: { channels: 'name' }, // name | device | address | type
|
|
89
89
|
page: { channels: 1, picker: 1 },
|
|
90
|
+
/** false: hide channels that are not worth mapping (see hiddenChannels). */
|
|
91
|
+
showAll: false,
|
|
90
92
|
},
|
|
91
93
|
pluginVersion: 'unknown',
|
|
92
94
|
};
|
|
@@ -102,6 +104,54 @@ function channelLookup() {
|
|
|
102
104
|
return out;
|
|
103
105
|
}
|
|
104
106
|
|
|
107
|
+
const GROUP_RE = /^(SWITCH|SHUTTER|BLIND|DIMMER)_(TRANSMITTER|VIRTUAL_RECEIVER)$/;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Addresses of channels that the lists hide unless "Show all channels"
|
|
111
|
+
* is on:
|
|
112
|
+
* - channels no service can handle (MAINTENANCE, week profiles, …);
|
|
113
|
+
* - in an HmIP actuator group (one *_TRANSMITTER followed by its
|
|
114
|
+
* *_VIRTUAL_RECEIVERs) every channel but one. The one kept is the
|
|
115
|
+
* transmitter if a service handles it, else the first receiver. The
|
|
116
|
+
* plugin pairs them itself (src/ccu/pairing.ts), so mapping any of
|
|
117
|
+
* them gives the same accessory;
|
|
118
|
+
* - the CCU's own virtual remote (HM-RCV-50 / HmIP-RCV-50, 50 keys).
|
|
119
|
+
* Channels already in devices.json are never hidden.
|
|
120
|
+
*/
|
|
121
|
+
function hiddenChannels(device) {
|
|
122
|
+
const channels = sortBy(device.channels ?? [], (c) => c.index);
|
|
123
|
+
if (/RCV-50$/i.test(device.type ?? '')) return new Set(channels.map((c) => c.address));
|
|
124
|
+
const handled = new Set(state.services.channelServices.flatMap((s) => s.channelTypes));
|
|
125
|
+
const hidden = new Set();
|
|
126
|
+
for (let i = 0; i < channels.length; i++) {
|
|
127
|
+
const c = channels[i];
|
|
128
|
+
const m = GROUP_RE.exec(c.type ?? '');
|
|
129
|
+
if (!m || m[2] !== 'TRANSMITTER') {
|
|
130
|
+
// Receivers are handled with their transmitter below; a receiver
|
|
131
|
+
// without a transmitter before it stays visible.
|
|
132
|
+
const inGroup = m && channels.slice(0, i).some((p) => p.type === `${m[1]}_TRANSMITTER`);
|
|
133
|
+
if (!inGroup && !handled.has(c.type)) hidden.add(c.address);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
const group = [c];
|
|
137
|
+
for (let j = i + 1; j < channels.length && channels[j].type === `${m[1]}_VIRTUAL_RECEIVER`; j++) group.push(channels[j]);
|
|
138
|
+
const keep = handled.has(c.type) ? c : (group[1] ?? c);
|
|
139
|
+
for (const g of group) if (g !== keep) hidden.add(g.address);
|
|
140
|
+
}
|
|
141
|
+
return hidden;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/** Union of hiddenChannels() over all discovered devices, minus mapped ones. */
|
|
145
|
+
function hiddenAddresses() {
|
|
146
|
+
if (state.ui.showAll) return new Set();
|
|
147
|
+
const mapped = new Set(configuredChannels().map((c) => c.address));
|
|
148
|
+
const out = new Set();
|
|
149
|
+
for (const d of state.discovered.devices ?? []) {
|
|
150
|
+
for (const a of hiddenChannels(d)) if (!mapped.has(a)) out.add(a);
|
|
151
|
+
}
|
|
152
|
+
return out;
|
|
153
|
+
}
|
|
154
|
+
|
|
105
155
|
const deviceMode = (dev) => dev.mode ?? (dev.service ? 'device' : 'perChannel');
|
|
106
156
|
const splitKey = (key) => { const i = key.indexOf(':'); return [key.slice(0, i), key.slice(i + 1)]; };
|
|
107
157
|
// Same fallback as the plugin: HmIP serials are 14 hex digits.
|
|
@@ -214,7 +264,11 @@ function devicesErrorHTML() {
|
|
|
214
264
|
function navigate(view) {
|
|
215
265
|
state.view = view;
|
|
216
266
|
state.nav = [];
|
|
217
|
-
|
|
267
|
+
document.querySelectorAll('#hgui-tabs [data-tab]').forEach((t) => {
|
|
268
|
+
const on = t.dataset.tab === view;
|
|
269
|
+
t.classList.toggle('active', on);
|
|
270
|
+
t.setAttribute('aria-selected', String(on));
|
|
271
|
+
});
|
|
218
272
|
rerender();
|
|
219
273
|
}
|
|
220
274
|
|
|
@@ -235,46 +289,10 @@ function rerender() {
|
|
|
235
289
|
// ---------------------------------------------------------------- top-level views
|
|
236
290
|
|
|
237
291
|
const VIEWS = {
|
|
238
|
-
dashboard: viewDashboard,
|
|
239
|
-
channels: viewChannels,
|
|
240
292
|
settings: viewSettings,
|
|
293
|
+
channels: viewChannels,
|
|
241
294
|
};
|
|
242
295
|
|
|
243
|
-
// ---------------------------------------------------------------- dashboard
|
|
244
|
-
|
|
245
|
-
function viewDashboard(host) {
|
|
246
|
-
const card = (label, value, sub = '') => `
|
|
247
|
-
<div class="col-sm-6 col-md-3 d-flex">
|
|
248
|
-
<div class="hgui-card flex-fill">
|
|
249
|
-
<div class="hgui-meta">${h(label)}</div>
|
|
250
|
-
<div class="display-6">${h(value)}</div>
|
|
251
|
-
<div class="hgui-meta">${h(sub)}</div>
|
|
252
|
-
</div>
|
|
253
|
-
</div>`;
|
|
254
|
-
const discoveryStatus = state.discovered.devices.length
|
|
255
|
-
? `${state.discovered.devices.length} devices`
|
|
256
|
-
: 'No discovery data yet — click "Discover" in the header to load from the CCU.';
|
|
257
|
-
host.innerHTML = `
|
|
258
|
-
<h4 class="my-3">Dashboard</h4>
|
|
259
|
-
<div class="row g-3 mb-3">
|
|
260
|
-
${card('Channels', configuredChannels().length, 'in HomeKit')}
|
|
261
|
-
${card('Devices', state.discovered.devices.length, 'discovered on the CCU')}
|
|
262
|
-
</div>
|
|
263
|
-
<div class="hgui-card">
|
|
264
|
-
<h6>Discovery</h6>
|
|
265
|
-
<p class="hgui-meta mb-0">${h(discoveryStatus)}</p>
|
|
266
|
-
</div>
|
|
267
|
-
<div class="hgui-card">
|
|
268
|
-
<h6>Quick links</h6>
|
|
269
|
-
<div class="d-flex gap-2 flex-wrap">
|
|
270
|
-
<button class="btn btn-outline-primary btn-sm" data-go="channels">Manage channels →</button>
|
|
271
|
-
<button class="btn btn-outline-secondary btn-sm" data-go="settings">Settings →</button>
|
|
272
|
-
</div>
|
|
273
|
-
</div>
|
|
274
|
-
`;
|
|
275
|
-
host.querySelectorAll('[data-go]').forEach((b) => b.addEventListener('click', () => navigate(b.dataset.go)));
|
|
276
|
-
}
|
|
277
|
-
|
|
278
296
|
// ---------------------------------------------------------------- channels view
|
|
279
297
|
|
|
280
298
|
function viewChannels(host) {
|
|
@@ -284,11 +302,26 @@ function viewChannels(host) {
|
|
|
284
302
|
// search input never gets recreated, never loses focus.
|
|
285
303
|
// Build the type filter option list from the discovered device tree
|
|
286
304
|
// so the dropdown reflects what's actually on this CCU.
|
|
305
|
+
const hidden = hiddenAddresses();
|
|
287
306
|
const channelTypes = new Set();
|
|
288
|
-
for (const d of state.discovered.devices)
|
|
307
|
+
for (const d of state.discovered.devices) {
|
|
308
|
+
for (const c of d.channels) if (c.type && c.index !== 0 && !hidden.has(c.address)) channelTypes.add(c.type);
|
|
309
|
+
}
|
|
289
310
|
|
|
290
311
|
host.innerHTML = `
|
|
291
|
-
<
|
|
312
|
+
<div class="hgui-card mt-3">
|
|
313
|
+
<h6>Which channels go to HomeKit?</h6>
|
|
314
|
+
<ol class="hgui-meta mb-2 ps-3">
|
|
315
|
+
<li>Click <strong>Discover</strong> to load the devices from the CCU.</li>
|
|
316
|
+
<li>Switch the filter to <em>Not in HomeKit</em>, pick a channel and click <strong>+ Add</strong>.
|
|
317
|
+
Give it a HomeKit name and choose the service (switch, outlet, light, blind, …).</li>
|
|
318
|
+
<li>Restart the child bridge to apply the changes.</li>
|
|
319
|
+
</ol>
|
|
320
|
+
<p class="hgui-meta mb-0">Only the channels worth mapping are listed. An HmIP actuator shows one
|
|
321
|
+
channel per output (e.g. HmIP-BROLL channel 3, HmIP-PS channel 2, HmIP-DRSI4 channels 5 / 9 / 13 / 17);
|
|
322
|
+
the plugin reads the state there and sends commands to the matching receiver channel itself.
|
|
323
|
+
Choose the channel and service once: changing either later creates a new accessory in Home.</p>
|
|
324
|
+
</div>
|
|
292
325
|
<div class="hgui-toolbar">
|
|
293
326
|
<input type="search" class="form-control" id="hgui-search-channels"
|
|
294
327
|
placeholder="Search by HomeKit name, CCU name, address, type…"
|
|
@@ -308,6 +341,10 @@ function viewChannels(host) {
|
|
|
308
341
|
<option value="address">Sort: Address</option>
|
|
309
342
|
<option value="type">Sort: Channel type</option>
|
|
310
343
|
</select>
|
|
344
|
+
<div class="form-check mb-0">
|
|
345
|
+
<input class="form-check-input" type="checkbox" id="hgui-showall-channels" ${state.ui.showAll ? 'checked' : ''} />
|
|
346
|
+
<label class="form-check-label" for="hgui-showall-channels">Show all channels</label>
|
|
347
|
+
</div>
|
|
311
348
|
<button class="btn btn-primary ms-auto" id="hgui-add-channel">+ Add channel</button>
|
|
312
349
|
<span class="hgui-meta" id="hgui-channels-count"></span>
|
|
313
350
|
</div>
|
|
@@ -338,6 +375,11 @@ function viewChannels(host) {
|
|
|
338
375
|
state.ui.sort.channels = e.target.value;
|
|
339
376
|
drawChannelRows();
|
|
340
377
|
});
|
|
378
|
+
$('hgui-showall-channels').addEventListener('change', (e) => {
|
|
379
|
+
state.ui.showAll = e.target.checked;
|
|
380
|
+
state.ui.page.channels = 1;
|
|
381
|
+
rerender(); // the type filter list depends on it too
|
|
382
|
+
});
|
|
341
383
|
$('hgui-add-channel').addEventListener('click', () => {
|
|
342
384
|
if (state.devicesErrors) {
|
|
343
385
|
toast('warning', 'Fix devices.json first', 'Add channel'); return;
|
|
@@ -366,6 +408,7 @@ function drawChannelRows() {
|
|
|
366
408
|
rows = configured.map((c) => ({ ...c, _info: cl.get(c.address), isConfigured: true }));
|
|
367
409
|
} else {
|
|
368
410
|
// 'all' or 'unconfigured' both need discovered data.
|
|
411
|
+
const hidden = hiddenAddresses();
|
|
369
412
|
rows = [];
|
|
370
413
|
for (const d of state.discovered.devices) {
|
|
371
414
|
// A whole-device mapping (e.g. irrigation) is one card, not N channels.
|
|
@@ -376,6 +419,7 @@ function drawChannelRows() {
|
|
|
376
419
|
}
|
|
377
420
|
for (const c of d.channels) {
|
|
378
421
|
if (c.index === 0) continue; // MAINTENANCE: not mappable
|
|
422
|
+
if (hidden.has(c.address)) continue;
|
|
379
423
|
const existing = configuredByAddr.get(c.address);
|
|
380
424
|
const isConfigured = !!existing;
|
|
381
425
|
if (filter === 'unconfigured' && isConfigured) continue;
|
|
@@ -508,8 +552,18 @@ function pagerHTML(kind, page, pageCount) {
|
|
|
508
552
|
|
|
509
553
|
function viewSettings(host) {
|
|
510
554
|
const m = state.cfg;
|
|
555
|
+
const stat = (label, value, sub) => `
|
|
556
|
+
<div class="hgui-card">
|
|
557
|
+
<div class="hgui-meta">${h(label)}</div>
|
|
558
|
+
<div class="hgui-stat-value">${h(value)}</div>
|
|
559
|
+
<div class="hgui-meta">${h(sub)}</div>
|
|
560
|
+
</div>`;
|
|
561
|
+
const discovered = state.discovered.devices.length;
|
|
511
562
|
host.innerHTML = `
|
|
512
|
-
<
|
|
563
|
+
<div class="hgui-stats mt-3">
|
|
564
|
+
${stat('Channels', configuredChannels().length, 'in HomeKit')}
|
|
565
|
+
${stat('Devices', discovered, discovered ? 'discovered on the CCU' : 'not discovered yet — click "Discover"')}
|
|
566
|
+
</div>
|
|
513
567
|
<div class="hgui-card">
|
|
514
568
|
<h6>CCU connection</h6>
|
|
515
569
|
<div class="row g-2 mb-2">
|
|
@@ -533,9 +587,12 @@ function viewSettings(host) {
|
|
|
533
587
|
<label class="form-label">Callback address (required)</label>
|
|
534
588
|
<input class="form-control" id="cf-callback-host" list="cf-callback-list" placeholder="192.168.0.13" value="${h(m.eventServer.callbackHost ?? '')}" />
|
|
535
589
|
<datalist id="cf-callback-list">${state.network.map((n) => `<option value="${h(n.address)}">${h(n.name)}</option>`).join('')}</datalist>
|
|
536
|
-
<div class="hgui-hint">IP of this Homebridge host as seen from the CCU. The CCU sends its events to <code>http://<address>:<port></code
|
|
537
|
-
|
|
538
|
-
|
|
590
|
+
<div class="hgui-hint">IP of this Homebridge host as seen from the CCU. The CCU sends its events to <code>http://<address>:<port></code>.</div>
|
|
591
|
+
${state.network.length ? `<div class="hgui-hint"><details>
|
|
592
|
+
<summary>Local addresses of this host (${state.network.length})</summary>
|
|
593
|
+
<div class="mt-1">${state.network.map((n) => `<a href="#" data-pick-ip="${h(n.address)}">${h(n.address)}</a> (${h(n.name)})`).join(', ')}</div>
|
|
594
|
+
<div class="mt-1">Click one to use it. In Docker these are container addresses — use the host's IP instead.</div>
|
|
595
|
+
</details></div>` : ''}
|
|
539
596
|
</div>
|
|
540
597
|
</div>
|
|
541
598
|
</div>
|
|
@@ -634,7 +691,8 @@ function subviewHeader(host, title, breadcrumb) {
|
|
|
634
691
|
// --- pickChannel: searchable picker
|
|
635
692
|
|
|
636
693
|
function subPickChannel(host) {
|
|
637
|
-
subviewHeader(host, 'Add channel — pick from CCU'
|
|
694
|
+
subviewHeader(host, 'Add channel — pick from CCU',
|
|
695
|
+
state.ui.showAll ? 'all channels' : 'channels worth mapping ("Show all channels" lists every one)');
|
|
638
696
|
const body = $('hgui-sub-body');
|
|
639
697
|
body.innerHTML = `
|
|
640
698
|
<div class="hgui-toolbar">
|
|
@@ -658,9 +716,13 @@ function drawPicker() {
|
|
|
658
716
|
const host = $('hgui-picker-host');
|
|
659
717
|
const pagerHost = $('hgui-picker-pager');
|
|
660
718
|
const configuredByAddr = new Map(configuredChannels().map((c) => [c.address, c]));
|
|
719
|
+
const hidden = hiddenAddresses();
|
|
661
720
|
const all = [];
|
|
662
721
|
for (const d of state.discovered.devices) {
|
|
663
|
-
for (const c of d.channels)
|
|
722
|
+
for (const c of d.channels) {
|
|
723
|
+
if (c.index === 0 || hidden.has(c.address)) continue;
|
|
724
|
+
all.push({ device: d, channel: c });
|
|
725
|
+
}
|
|
664
726
|
}
|
|
665
727
|
const q = state.ui.search.picker.trim().toLowerCase();
|
|
666
728
|
let rows = q
|
|
@@ -978,7 +1040,8 @@ async function init() {
|
|
|
978
1040
|
interfacePorts: { ...(b.interfacePorts ?? {}) },
|
|
979
1041
|
};
|
|
980
1042
|
// Fields of removed features; channel mappings now live in devices.json.
|
|
981
|
-
|
|
1043
|
+
// `_bridge` (child bridge settings incl. debugModeEnabled) is kept as is.
|
|
1044
|
+
for (const k of ['ccuAuth', 'variables', 'programs', 'channels']) delete state.cfg[k];
|
|
982
1045
|
delete state.cfg.eventServer.watchdogSeconds; // replaced by per-interface ping/PONG
|
|
983
1046
|
} catch (err) {
|
|
984
1047
|
toast('error', `Could not load config: ${err.message}`);
|
|
@@ -1001,7 +1064,8 @@ async function init() {
|
|
|
1001
1064
|
}
|
|
1002
1065
|
|
|
1003
1066
|
// Header listeners.
|
|
1004
|
-
|
|
1067
|
+
document.querySelectorAll('#hgui-tabs [data-tab]').forEach((t) =>
|
|
1068
|
+
t.addEventListener('click', () => navigate(t.dataset.tab)));
|
|
1005
1069
|
$('hgui-discover-btn').addEventListener('click', onDiscover);
|
|
1006
1070
|
$('hgui-test-btn').addEventListener('click', onTestConnection);
|
|
1007
1071
|
|
|
@@ -1010,15 +1074,13 @@ async function init() {
|
|
|
1010
1074
|
if (e.key === 'Escape' && state.nav.length) popNav();
|
|
1011
1075
|
});
|
|
1012
1076
|
|
|
1013
|
-
// Initial tab:
|
|
1014
|
-
//
|
|
1015
|
-
// background Discover so the channels tab is
|
|
1016
|
-
// populated by the time the user clicks them.
|
|
1077
|
+
// Initial tab: Settings until a CCU is configured, then Channels with
|
|
1078
|
+
// a background Discover so the list fills in on its own.
|
|
1017
1079
|
const isConfigured = !!state.cfg.ccuIp && state.cfg.ccuIp.length > 0;
|
|
1018
1080
|
if (!isConfigured) {
|
|
1019
1081
|
navigate('settings');
|
|
1020
1082
|
} else {
|
|
1021
|
-
navigate('
|
|
1083
|
+
navigate('channels');
|
|
1022
1084
|
// Fire-and-forget; failures fall back to the empty state with a
|
|
1023
1085
|
// hint already in place. No spinner — user can still navigate.
|
|
1024
1086
|
onDiscover().catch(() => { /* errors already toasted by onDiscover */ });
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
.hgui-empty { color: var(--bs-secondary-color); font-style: italic; padding: 2rem; text-align: center; border: 1px dashed var(--bs-border-color-translucent); border-radius: 8px; margin-top: 1rem; }
|
|
91
91
|
.hgui-pager { display: flex; gap: 0.25rem; align-items: center; justify-content: center; padding: 0.75rem 0; flex-wrap: wrap; }
|
|
92
92
|
|
|
93
|
-
/* Cards (used in
|
|
93
|
+
/* Cards (used in settings / sub-views) --------------------------- */
|
|
94
94
|
.hgui-card { background: var(--bs-tertiary-bg); color: var(--bs-body-color); border: 1px solid var(--bs-border-color-translucent); border-radius: 8px; padding: 1rem; margin-bottom: 0.75rem; }
|
|
95
95
|
.hgui-card h6 { margin-bottom: 0.5rem; }
|
|
96
96
|
.hgui-meta { color: var(--bs-secondary-color); font-size: 0.85rem; }
|
|
@@ -100,22 +100,37 @@
|
|
|
100
100
|
@media (max-width: 700px) { .hgui-form-row { grid-template-columns: 1fr; } }
|
|
101
101
|
.hgui-form-row label { padding-top: 0.5rem; font-weight: 500; color: var(--bs-body-color); }
|
|
102
102
|
.hgui-form-row .hgui-hint { color: var(--bs-secondary-color); font-size: 0.825rem; margin-top: 0.25rem; }
|
|
103
|
+
.hgui-hint { color: var(--bs-secondary-color); font-size: 0.825rem; margin-top: 0.25rem; }
|
|
104
|
+
.hgui-hint details summary { cursor: pointer; color: var(--bs-link-color); }
|
|
105
|
+
|
|
106
|
+
/* Tabs: keep the host's tab look, make the active tab readable in both themes. */
|
|
107
|
+
#hgui-tabs .nav-link { color: var(--bs-secondary-color); }
|
|
108
|
+
#hgui-tabs .nav-link.active { color: var(--bs-body-color); background: var(--bs-body-bg); }
|
|
109
|
+
|
|
110
|
+
/* Status tiles at the top of Settings. */
|
|
111
|
+
.hgui-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 0.75rem; margin-bottom: 0.75rem; }
|
|
112
|
+
.hgui-stats .hgui-card { margin-bottom: 0; }
|
|
113
|
+
.hgui-stat-value { font-size: 1.75rem; font-weight: 600; line-height: 1.2; }
|
|
103
114
|
</style>
|
|
104
115
|
|
|
105
116
|
<div id="hgui-app">
|
|
106
117
|
|
|
107
|
-
<!-- Header:
|
|
118
|
+
<!-- Header: action buttons, then the view tabs ------------------------ -->
|
|
108
119
|
<header class="hgui-header">
|
|
109
|
-
<select id="hgui-view-select" class="form-select form-select-sm" style="min-width: 200px; max-width: 220px">
|
|
110
|
-
<option value="dashboard">📊 Dashboard</option>
|
|
111
|
-
<option value="channels">💡 Channels</option>
|
|
112
|
-
<option value="settings">⚙️ Settings</option>
|
|
113
|
-
</select>
|
|
114
120
|
<button id="hgui-discover-btn" class="btn btn-primary btn-sm">Discover</button>
|
|
115
121
|
<button id="hgui-test-btn" class="btn btn-outline-secondary btn-sm">Test CCU</button>
|
|
116
122
|
<span id="hgui-test-result" class="small"></span>
|
|
117
123
|
<span class="hgui-version ms-auto" id="hgui-version-banner"></span>
|
|
118
124
|
</header>
|
|
125
|
+
<!-- Plain Bootstrap tab styling; switching is done in app.js (no Bootstrap JS). -->
|
|
126
|
+
<ul class="nav nav-tabs" id="hgui-tabs" role="tablist">
|
|
127
|
+
<li class="nav-item" role="presentation">
|
|
128
|
+
<button class="nav-link" type="button" role="tab" data-tab="settings">⚙️ Settings</button>
|
|
129
|
+
</li>
|
|
130
|
+
<li class="nav-item" role="presentation">
|
|
131
|
+
<button class="nav-link" type="button" role="tab" data-tab="channels">💡 Channels</button>
|
|
132
|
+
</li>
|
|
133
|
+
</ul>
|
|
119
134
|
|
|
120
135
|
<main class="hgui-main">
|
|
121
136
|
<div id="hgui-view-host"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-hap-homematic",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Homebridge plugin for HomeMatic / HomematicIP devices on a CCU / OpenCCU, using XML-RPC only. Hard fork of matthiaseinig/Homebridge-Homematic-HAP (homebridge-homematic-hap); not affiliated with thkl/hap-homematic.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -49,14 +49,14 @@
|
|
|
49
49
|
"homematic-xmlrpc": "^2.0.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@eslint/js": "^
|
|
52
|
+
"@eslint/js": "^10.0.1",
|
|
53
53
|
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
54
54
|
"@semantic-release/github": "^12.0.10",
|
|
55
55
|
"@semantic-release/release-notes-generator": "^14.1.1",
|
|
56
56
|
"@types/node": "^24.10.1",
|
|
57
57
|
"@vitest/coverage-v8": "^5.1.0",
|
|
58
58
|
"conventional-changelog-conventionalcommits": "^9.3.1",
|
|
59
|
-
"esbuild": "^0.
|
|
59
|
+
"esbuild": "^0.28.2",
|
|
60
60
|
"eslint": "^10.14.0",
|
|
61
61
|
"homebridge": "^2.5.0",
|
|
62
62
|
"nodemon": "^3.1.11",
|