homematic-manager 3.0.0 → 3.0.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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-09-30T14:40:52.310Z",
2
+ "generatedAt": "2026-09-30T20:15:59.038Z",
3
3
  "sources": [
4
4
  {
5
5
  "name": "openccu-data/easymode_extract",
@@ -34,7 +34,7 @@
34
34
  {
35
35
  "name": "homematic-manager/legacy-easymode-localization",
36
36
  "version": "2.7.1",
37
- "url": "https://github.com/hobbyquaker/homematic-manager/tree/master/www/easymodes/localization",
37
+ "url": "https://github.com/hobbyquaker/homematic-manager/tree/2.7.1/www/easymodes/localization",
38
38
  "sha256": "00e0e2d79c7fbc1f97b8e7cb10d4da4473a3f693d0d07493ad909c14ddfb906c"
39
39
  }
40
40
  ],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homematic-manager/backend",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
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",
@@ -5,7 +5,7 @@
5
5
  * sticker shows them twice:
6
6
  *
7
7
  * - as a QR code, `EQ01SG<SGTIN, 24 hex>DLK<key, 32 hex>` - the form 2.x's scanner parsed
8
- * (`legacy/www/js/homematic-manager.js`), with a four-character prefix before `SG`;
8
+ * (`www/js/homematic-manager.js` at the tag 2.7.1), with a four-character prefix before `SG`;
9
9
  * - printed, the SGTIN in groups of four and the key as 26 characters of eQ-3's base-32 alphabet in
10
10
  * groups of 5-5-5-5-6 (`XXXXX-XXXXX-XXXXX-XXXXX-XXXXXX`).
11
11
  *
@@ -5,7 +5,7 @@
5
5
  * sticker shows them twice:
6
6
  *
7
7
  * - as a QR code, `EQ01SG<SGTIN, 24 hex>DLK<key, 32 hex>` - the form 2.x's scanner parsed
8
- * (`legacy/www/js/homematic-manager.js`), with a four-character prefix before `SG`;
8
+ * (`www/js/homematic-manager.js` at the tag 2.7.1), with a four-character prefix before `SG`;
9
9
  * - printed, the SGTIN in groups of four and the key as 26 characters of eQ-3's base-32 alphabet in
10
10
  * groups of 5-5-5-5-6 (`XXXXX-XXXXX-XXXXX-XXXXX-XXXXXX`).
11
11
  *
@@ -45,6 +45,20 @@ export interface DecodedLinkFlags {
45
45
  readonly unknownBits: number;
46
46
  }
47
47
  export declare function decodeLinkFlags(flags: number | undefined): DecodedLinkFlags;
48
+ /**
49
+ * Is this a link between two channels of one device - the button of a switch or dimmer actuator
50
+ * driving its own relay (`KEQ…:1` → `KEQ…:1`), or a dimmer's real channel and its virtual ones
51
+ * (`JEQ…:1` → `JEQ…:2`)? An address that does not parse is never part of one.
52
+ */
53
+ export declare function isInternalLink(link: Pick<Link, 'SENDER' | 'RECEIVER'>): boolean;
54
+ /**
55
+ * The `FLAGS` of a link as the grid shows them (B-86): rfd reports every device-internal link with
56
+ * `SENDER_BROKEN` set (a lab HM-LC-Sw1's own `:1` → `:1` answers `FLAGS: 1`, and the maintainer's
57
+ * dimmers and switch plugs flag each of their internal links), although the links work. For such a
58
+ * link the two broken bits carry no information and are dropped; a link to or from a peer that is
59
+ * not a device of this interface (`@1A2B3C:14`) keeps them, as does every other link.
60
+ */
61
+ export declare function linkFlags(link: Pick<Link, 'SENDER' | 'RECEIVER' | 'FLAGS'>): DecodedLinkFlags;
48
62
  /** `getLinks` request flags, as the RPC console offers them. */
49
63
  export declare const GET_LINKS_FLAGS: {
50
64
  readonly GROUP: 1;
@@ -11,7 +11,7 @@
11
11
  * roles), the maintenance channel `:0` never does, and a channel without the matching role list is
12
12
  * not offered at all.
13
13
  */
14
- import { isMaintenanceAddress } from '../address/address.js';
14
+ import { isMaintenanceAddress, tryParseAddress } from '../address/address.js';
15
15
  import { isChannelDescription, parseRoles } from '../devices/index.js';
16
16
  /**
17
17
  * `FLAGS` of a link record: the interface process marks the side whose configuration it could not
@@ -36,6 +36,30 @@ export function decodeLinkFlags(flags) {
36
36
  unknownBits: bits & ~(LINK_FLAGS.SENDER_BROKEN | LINK_FLAGS.RECEIVER_BROKEN),
37
37
  };
38
38
  }
39
+ /**
40
+ * Is this a link between two channels of one device - the button of a switch or dimmer actuator
41
+ * driving its own relay (`KEQ…:1` → `KEQ…:1`), or a dimmer's real channel and its virtual ones
42
+ * (`JEQ…:1` → `JEQ…:2`)? An address that does not parse is never part of one.
43
+ */
44
+ export function isInternalLink(link) {
45
+ const sender = tryParseAddress(link.SENDER);
46
+ const receiver = tryParseAddress(link.RECEIVER);
47
+ return sender !== undefined && receiver !== undefined && sender.device === receiver.device;
48
+ }
49
+ /**
50
+ * The `FLAGS` of a link as the grid shows them (B-86): rfd reports every device-internal link with
51
+ * `SENDER_BROKEN` set (a lab HM-LC-Sw1's own `:1` → `:1` answers `FLAGS: 1`, and the maintainer's
52
+ * dimmers and switch plugs flag each of their internal links), although the links work. For such a
53
+ * link the two broken bits carry no information and are dropped; a link to or from a peer that is
54
+ * not a device of this interface (`@1A2B3C:14`) keeps them, as does every other link.
55
+ */
56
+ export function linkFlags(link) {
57
+ const decoded = decodeLinkFlags(link.FLAGS);
58
+ if (!decoded.broken || !isInternalLink(link)) {
59
+ return decoded;
60
+ }
61
+ return { senderBroken: false, receiverBroken: false, broken: false, unknownBits: decoded.unknownBits };
62
+ }
39
63
  /** `getLinks` request flags, as the RPC console offers them. */
40
64
  export const GET_LINKS_FLAGS = {
41
65
  GROUP: 1,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homematic-manager/core",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
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.0.0",
3
+ "version": "3.0.1",
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.3.0"
68
68
  },
69
69
  "dependencies": {
70
- "@homematic-manager/backend": "3.0.0",
71
- "@homematic-manager/core": "3.0.0",
70
+ "@homematic-manager/backend": "3.0.1",
71
+ "@homematic-manager/core": "3.0.1",
72
72
  "binrpc": "^4.2.0",
73
73
  "homematic-rega": "^2.0.0",
74
74
  "homematic-xmlrpc": "^2.0.0",