homematic-manager 3.1.4 → 3.2.0

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.
@@ -47,6 +47,8 @@ export const SERVICE_MESSAGE_POLL_MS = 300_000;
47
47
  * `names.changed` whenever ReGa answers.
48
48
  */
49
49
  export const REGA_CONNECT_WAIT_MS = 3000;
50
+ /** The paramset keys that are names; any other key of a description request is a link's peer. */
51
+ const OWN_PARAMSETS = new Set(['MASTER', 'VALUES', 'SERVICE', 'ROUTING_TABLE']);
50
52
  /** How long the HmIP `getParamset(:0, VALUES)` sweep waits for the device list to settle. */
51
53
  export const HMIP_SWEEP_DELAY_MS = 1000;
52
54
  /**
@@ -1515,7 +1517,9 @@ export class Backend {
1515
1517
  async #describe(interfaceName, address, paramset) {
1516
1518
  const index = this.#caches.devices.index(interfaceName);
1517
1519
  const description = index.get(address);
1518
- const isLink = paramset !== 'MASTER' && paramset !== 'VALUES' && paramset !== 'SERVICE';
1520
+ // task 97: an HmIP router's ROUTING_TABLE is a paramset of its own (eQ-3's addendum), not a
1521
+ // peer address - asked as LINK it is refused, and the routing table dialog could not open
1522
+ const isLink = !OWN_PARAMSETS.has(paramset);
1519
1523
  const identity = description
1520
1524
  ? this.#caches.descriptions.identity(interfaceName, description, isLink ? 'LINK' : paramset, index.parentOf(address))
1521
1525
  : undefined;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homematic-manager/backend",
3
- "version": "3.1.4",
3
+ "version": "3.2.0",
4
4
  "type": "module",
5
5
  "description": "Homematic Manager backend: XML-RPC/BIN-RPC clients and callback servers, caches, optional ReGa",
6
6
  "license": "AGPL-3.0-or-later",
@@ -67,6 +67,12 @@ export declare const RSSI_BANDS: readonly RssiBand[];
67
67
  * offset of 256 or with the sign dropped. `130…255` is `value - 256`, `-255…-130` is
68
68
  * `-value - 256` (which is what turns the maintainer's `-208` into a perfectly ordinary
69
69
  * -48 dBm), and a bare positive `2…126` is the same level without its minus.
70
+ * - The same two shapes come **from rfd itself**, without ReGa
71
+ * (https://github.com/OpenCCU/OpenCCU-Base/issues/185): it reads the RSSI byte of the module's
72
+ * send status (the ACK) into a `char` and negates it like an event's magnitude, so `RSSI_PEER`
73
+ * and `rssiInfo` carry a positive `2…126` on x86_64 (`char` is signed; `55` is -55 dBm) and
74
+ * `-130…-255` on ARM (`char` is unsigned; `-236` is -20 dBm). The same two branches catch
75
+ * them, and they stay after an upstream fix, for older firmware.
70
76
  *
71
77
  * The mapping is the one Home Assistant's `aiohomematic` applies (`model/generic/sensor.py`,
72
78
  * `_fix_rssi`); OpenCCU's WebUI does the `- 256` half in
@@ -50,6 +50,12 @@ export const RSSI_BANDS = [
50
50
  * offset of 256 or with the sign dropped. `130…255` is `value - 256`, `-255…-130` is
51
51
  * `-value - 256` (which is what turns the maintainer's `-208` into a perfectly ordinary
52
52
  * -48 dBm), and a bare positive `2…126` is the same level without its minus.
53
+ * - The same two shapes come **from rfd itself**, without ReGa
54
+ * (https://github.com/OpenCCU/OpenCCU-Base/issues/185): it reads the RSSI byte of the module's
55
+ * send status (the ACK) into a `char` and negates it like an event's magnitude, so `RSSI_PEER`
56
+ * and `rssiInfo` carry a positive `2…126` on x86_64 (`char` is signed; `55` is -55 dBm) and
57
+ * `-130…-255` on ARM (`char` is unsigned; `-236` is -20 dBm). The same two branches catch
58
+ * them, and they stay after an upstream fix, for older firmware.
53
59
  *
54
60
  * The mapping is the one Home Assistant's `aiohomematic` applies (`model/generic/sensor.py`,
55
61
  * `_fix_rssi`); OpenCCU's WebUI does the `- 256` half in
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homematic-manager/core",
3
- "version": "3.1.4",
3
+ "version": "3.2.0",
4
4
  "type": "module",
5
5
  "description": "Pure domain logic of the Homematic Manager: no I/O, no DOM",
6
6
  "license": "AGPL-3.0-or-later",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homematic-manager",
3
- "version": "3.1.4",
3
+ "version": "3.2.0",
4
4
  "type": "module",
5
5
  "description": "Configure and administer Homematic and HomematicIP devices - devices and channels, direct links, paramsets, RSSI, service messages, events and an RPC console - from a local HTTP/WebSocket server that also serves the web UI",
6
6
  "keywords": [
@@ -67,8 +67,8 @@
67
67
  "hm-simulator": "^1.4.0"
68
68
  },
69
69
  "dependencies": {
70
- "@homematic-manager/backend": "3.1.4",
71
- "@homematic-manager/core": "3.1.4",
70
+ "@homematic-manager/backend": "3.2.0",
71
+ "@homematic-manager/core": "3.2.0",
72
72
  "binrpc": "^4.2.0",
73
73
  "homematic-rega": "^2.0.0",
74
74
  "homematic-xmlrpc": "^2.0.0",