daikin-local-control 0.3.0 → 0.4.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.
- package/DESIGN.md +113 -2
- package/README.md +131 -13
- package/UNSUPPORTED.md +42 -4
- package/dist/clients/classic.d.ts +2 -2
- package/dist/clients/classic.d.ts.map +1 -1
- package/dist/clients/classic.js +4 -4
- package/dist/clients/classic.js.map +1 -1
- package/dist/clients/client.d.ts +6 -2
- package/dist/clients/client.d.ts.map +1 -1
- package/dist/clients/dsiot.d.ts +3 -1
- package/dist/clients/dsiot.d.ts.map +1 -1
- package/dist/clients/dsiot.js +11 -3
- package/dist/clients/dsiot.js.map +1 -1
- package/dist/codecs/classic/capabilities.d.ts.map +1 -1
- package/dist/codecs/classic/capabilities.js +5 -11
- package/dist/codecs/classic/capabilities.js.map +1 -1
- package/dist/codecs/classic/extendedControl.d.ts.map +1 -1
- package/dist/codecs/classic/extendedControl.js +10 -19
- package/dist/codecs/classic/extendedControl.js.map +1 -1
- package/dist/codecs/classic/state.d.ts.map +1 -1
- package/dist/codecs/classic/state.js +36 -95
- package/dist/codecs/classic/state.js.map +1 -1
- package/dist/codecs/classic/tables.d.ts +32 -0
- package/dist/codecs/classic/tables.d.ts.map +1 -0
- package/dist/codecs/classic/tables.js +94 -0
- package/dist/codecs/classic/tables.js.map +1 -0
- package/dist/codecs/credentials.d.ts +3 -2
- package/dist/codecs/credentials.d.ts.map +1 -1
- package/dist/codecs/credentials.js +8 -3
- package/dist/codecs/credentials.js.map +1 -1
- package/dist/codecs/device.d.ts +2 -1
- package/dist/codecs/device.d.ts.map +1 -1
- package/dist/codecs/device.js +7 -6
- package/dist/codecs/device.js.map +1 -1
- package/dist/codecs/dsiot/capabilities.d.ts.map +1 -1
- package/dist/codecs/dsiot/capabilities.js +8 -15
- package/dist/codecs/dsiot/capabilities.js.map +1 -1
- package/dist/codecs/dsiot/device.d.ts +4 -2
- package/dist/codecs/dsiot/device.d.ts.map +1 -1
- package/dist/codecs/dsiot/device.js +8 -8
- package/dist/codecs/dsiot/device.js.map +1 -1
- package/dist/codecs/dsiot/multireq.d.ts +0 -18
- package/dist/codecs/dsiot/multireq.d.ts.map +1 -1
- package/dist/codecs/dsiot/multireq.js +2 -24
- package/dist/codecs/dsiot/multireq.js.map +1 -1
- package/dist/codecs/dsiot/state.d.ts +6 -62
- package/dist/codecs/dsiot/state.d.ts.map +1 -1
- package/dist/codecs/dsiot/state.js +29 -148
- package/dist/codecs/dsiot/state.js.map +1 -1
- package/dist/codecs/dsiot/tables.d.ts +116 -0
- package/dist/codecs/dsiot/tables.d.ts.map +1 -0
- package/dist/codecs/dsiot/tables.js +185 -0
- package/dist/codecs/dsiot/tables.js.map +1 -0
- package/dist/discovery.d.ts +2 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +9 -5
- package/dist/discovery.js.map +1 -1
- package/dist/factory.d.ts +7 -4
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +4 -2
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/models/device.d.ts +3 -1
- package/dist/models/device.d.ts.map +1 -1
- package/dist/models/state.d.ts +2 -3
- package/dist/models/state.d.ts.map +1 -1
- package/dist/simulators/classic.d.ts +61 -0
- package/dist/simulators/classic.d.ts.map +1 -0
- package/dist/simulators/classic.js +473 -0
- package/dist/simulators/classic.js.map +1 -0
- package/dist/simulators/dsiot.d.ts +49 -0
- package/dist/simulators/dsiot.d.ts.map +1 -0
- package/dist/simulators/dsiot.js +519 -0
- package/dist/simulators/dsiot.js.map +1 -0
- package/dist/simulators/index.d.ts +4 -0
- package/dist/simulators/index.d.ts.map +1 -0
- package/dist/simulators/index.js +3 -0
- package/dist/simulators/index.js.map +1 -0
- package/dist/simulators/simulator.d.ts +116 -0
- package/dist/simulators/simulator.d.ts.map +1 -0
- package/dist/simulators/simulator.js +141 -0
- package/dist/simulators/simulator.js.map +1 -0
- package/dist/transport.d.ts +6 -2
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +7 -2
- package/dist/transport.js.map +1 -1
- package/package.json +5 -2
- package/src/clients/classic.ts +8 -8
- package/src/clients/client.ts +7 -1
- package/src/clients/dsiot.ts +12 -2
- package/src/codecs/classic/capabilities.ts +8 -11
- package/src/codecs/classic/extendedControl.ts +14 -25
- package/src/codecs/classic/state.ts +49 -101
- package/src/codecs/classic/tables.ts +123 -0
- package/src/codecs/credentials.ts +11 -3
- package/src/codecs/device.ts +8 -7
- package/src/codecs/dsiot/capabilities.ts +10 -17
- package/src/codecs/dsiot/device.ts +8 -9
- package/src/codecs/dsiot/multireq.ts +2 -24
- package/src/codecs/dsiot/state.ts +57 -193
- package/src/codecs/dsiot/tables.ts +249 -0
- package/src/discovery.ts +9 -5
- package/src/factory.ts +7 -4
- package/src/index.ts +2 -0
- package/src/models/device.ts +3 -1
- package/src/models/state.ts +2 -3
- package/src/simulators/classic.ts +635 -0
- package/src/simulators/dsiot.ts +736 -0
- package/src/simulators/index.ts +9 -0
- package/src/simulators/simulator.ts +281 -0
- package/src/transport.ts +10 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/codecs/credentials.ts"],"names":[],"mappings":"AAAA;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/codecs/credentials.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAE/C;;0EAE0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,0BAA0B,CACxC,aAAqB;IAErB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;AAChC,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,wBAAwB,CACtC,aAAqB;IAErB,OAAO,EAAE,aAAa,EAAE,SAAS,aAAa,EAAE,EAAE,CAAC;AACrD,CAAC"}
|
package/dist/codecs/device.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ import type { DaikinDevice, DaikinDeviceInfo } from "../models/device.js";
|
|
|
3
3
|
* adapter, and `api_port`, when present, is the HTTP port and is appended to
|
|
4
4
|
* `host`, the address the reply came from. */
|
|
5
5
|
export declare function parseDevice(host: string, basicInfo: Record<string, string>): DaikinDevice;
|
|
6
|
-
/** Reads what a `basic_info` reply says to identify the adapter.
|
|
6
|
+
/** Reads what a `basic_info` reply says to identify the adapter. The name
|
|
7
|
+
* arrives form-encoded. */
|
|
7
8
|
export declare function parseDeviceInfo(basicInfo: Record<string, string>): DaikinDeviceInfo;
|
|
8
9
|
/** The adapter sends a MAC address without separators. It keeps the adapter's
|
|
9
10
|
* letter case. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/codecs/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM1E;;8CAE8C;AAC9C,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,YAAY,
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/codecs/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM1E;;8CAE8C;AAC9C,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,YAAY,CAiBd;AAED;2BAC2B;AAC3B,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,gBAAgB,CASlB;AAED;kBACkB;AAClB,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAEpB;AAED;;+DAE+D;AAC/D,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAOpB"}
|
package/dist/codecs/device.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { decodeClassicText } from "./classic/keyValue.js";
|
|
2
|
-
|
|
2
|
+
import { DSIOT_ADAPTER_TYPE } from "./dsiot/tables.js";
|
|
3
3
|
const MARVELL_ADP_KIND = "3";
|
|
4
4
|
/** Turns a `basic_info` reply into a `DaikinDevice`: `type=GPF` marks a DSIOT
|
|
5
5
|
* adapter, and `api_port`, when present, is the HTTP port and is appended to
|
|
6
6
|
* `host`, the address the reply came from. */
|
|
7
7
|
export function parseDevice(host, basicInfo) {
|
|
8
|
-
const protocol = basicInfo.type ===
|
|
8
|
+
const protocol = basicInfo.type === DSIOT_ADAPTER_TYPE ? "dsiot" : "classic";
|
|
9
9
|
const secure = basicInfo.en_secure === "1";
|
|
10
10
|
return {
|
|
11
11
|
host: basicInfo.api_port ? `${host}:${basicInfo.api_port}` : host,
|
|
12
12
|
protocol,
|
|
13
|
-
name: basicInfo.name === undefined
|
|
14
|
-
? undefined
|
|
15
|
-
: decodeClassicText(basicInfo.name),
|
|
16
13
|
// Only classic adapters register terminals.
|
|
17
14
|
requiresRegistration: secure && protocol === "classic",
|
|
18
15
|
// Only a Marvell adapter (adp_kind=3) in secure mode speaks HTTPS; every
|
|
@@ -24,9 +21,13 @@ export function parseDevice(host, basicInfo) {
|
|
|
24
21
|
...parseDeviceInfo(basicInfo),
|
|
25
22
|
};
|
|
26
23
|
}
|
|
27
|
-
/** Reads what a `basic_info` reply says to identify the adapter.
|
|
24
|
+
/** Reads what a `basic_info` reply says to identify the adapter. The name
|
|
25
|
+
* arrives form-encoded. */
|
|
28
26
|
export function parseDeviceInfo(basicInfo) {
|
|
29
27
|
return {
|
|
28
|
+
name: basicInfo.name === undefined
|
|
29
|
+
? undefined
|
|
30
|
+
: decodeClassicText(basicInfo.name),
|
|
30
31
|
macAddress: decodeMacAddress(basicInfo.mac),
|
|
31
32
|
firmwareVersion: decodeFirmwareVersion(basicInfo.ver),
|
|
32
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/codecs/device.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/codecs/device.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;8CAE8C;AAC9C,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,SAAiC;IAEjC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,KAAK,GAAG,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;QACjE,QAAQ;QACR,4CAA4C;QAC5C,oBAAoB,EAAE,MAAM,IAAI,QAAQ,KAAK,SAAS;QACtD,yEAAyE;QACzE,2DAA2D;QAC3D,SAAS,EACP,MAAM;YACN,QAAQ,KAAK,SAAS;YACtB,SAAS,CAAC,QAAQ,KAAK,gBAAgB;QACzC,qBAAqB,EAAE,SAAS,CAAC,QAAQ,KAAK,GAAG;QACjD,GAAG,eAAe,CAAC,SAAS,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED;2BAC2B;AAC3B,MAAM,UAAU,eAAe,CAC7B,SAAiC;IAEjC,OAAO;QACL,IAAI,EACF,SAAS,CAAC,IAAI,KAAK,SAAS;YAC1B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC;QACvC,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC;QAC3C,eAAe,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;kBACkB;AAClB,MAAM,UAAU,gBAAgB,CAC9B,KAAyB;IAEzB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED;;+DAE+D;AAC/D,MAAM,UAAU,qBAAqB,CACnC,KAAyB;IAEzB,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACnE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/codecs/dsiot/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/codecs/dsiot/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,8BAA8B,CAAC;AA6CtC;;;4DAG4D;AAC5D,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,kBAAkB,CAoFpB"}
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import { FAN_SPEEDS, FIXED_LOUVER_POSITIONS, HORIZONTAL_POSITIONS, HUMIDITY_SETTINGS, OPERATING_MODES, SPECIAL_MODES, SWING_MODES, VERTICAL_POSITIONS, } from "../../models/state.js";
|
|
2
|
-
import {
|
|
2
|
+
import { decodeDsiotLittleEndian } from "./state.js";
|
|
3
|
+
import { DSIOT_ADAPTER_PATHS, DSIOT_COOLING_ONLY_MODEL_TYPE, DSIOT_HORIZONTAL_POSITION_VALUES, DSIOT_MODE_PATHS, DSIOT_PATHS, DSIOT_SPECIAL_MODE_PATHS, DSIOT_VERTICAL_POSITION_VALUES, } from "./tables.js";
|
|
3
4
|
const MODE_PATHS = Object.values(DSIOT_MODE_PATHS);
|
|
4
|
-
const ADAPTER_PATHS = {
|
|
5
|
-
region: "adp_i.reg",
|
|
6
|
-
kind: "adp_i.kind",
|
|
7
|
-
energyMonitoring: "adp_i.func.en_ipower",
|
|
8
|
-
demandControl: "adp_i.func.en_demand",
|
|
9
|
-
scheduleTimer: "adp_i.func.en_scdltmr",
|
|
10
|
-
};
|
|
11
5
|
// The `pt` of a special mode's leaf on a unit that takes the mode.
|
|
12
6
|
const SPECIAL_MODE_OFFERED_TYPE = "2";
|
|
13
|
-
const COOLING_ONLY_MODEL_TYPE = "01";
|
|
14
7
|
const COOLING_ONLY_MODES = [
|
|
15
8
|
"dehumidify",
|
|
16
9
|
"cool",
|
|
@@ -24,7 +17,7 @@ const FIXED_POSITIONS = FIXED_LOUVER_POSITIONS;
|
|
|
24
17
|
* degrees. Without the outdoor tree, `specialModes` lists no `powerful`. It
|
|
25
18
|
* lists econo in every mode but fan: see UNSUPPORTED.md. */
|
|
26
19
|
export function parseDsiotCapabilities(values) {
|
|
27
|
-
const modes = values[DSIOT_PATHS.modelType] ===
|
|
20
|
+
const modes = values[DSIOT_PATHS.modelType] === DSIOT_COOLING_ONLY_MODEL_TYPE
|
|
28
21
|
? [...COOLING_ONLY_MODES]
|
|
29
22
|
: [...OPERATING_MODES];
|
|
30
23
|
const offered = (mode, range) => modes.includes(mode) ? range : null;
|
|
@@ -42,7 +35,7 @@ export function parseDsiotCapabilities(values) {
|
|
|
42
35
|
: [];
|
|
43
36
|
const vertical = hasLouver(values, "vertical");
|
|
44
37
|
const horizontal = hasLouver(values, "horizontal");
|
|
45
|
-
const energyMonitoring = values[
|
|
38
|
+
const energyMonitoring = values[DSIOT_ADAPTER_PATHS.energyMonitoring] === "1" &&
|
|
46
39
|
values[DSIOT_PATHS.energyMonitoring] === "01";
|
|
47
40
|
return {
|
|
48
41
|
modes,
|
|
@@ -81,9 +74,9 @@ export function parseDsiotCapabilities(values) {
|
|
|
81
74
|
specialOutlet: false,
|
|
82
75
|
energyMonitoring,
|
|
83
76
|
demandControl: energyMonitoring &&
|
|
84
|
-
values[
|
|
85
|
-
values[
|
|
86
|
-
scheduleTimer: ["1", "2"].includes(values[
|
|
77
|
+
values[DSIOT_ADAPTER_PATHS.kind] === "4" &&
|
|
78
|
+
values[DSIOT_ADAPTER_PATHS.demandControl] === "1",
|
|
79
|
+
scheduleTimer: ["1", "2"].includes(values[DSIOT_ADAPTER_PATHS.scheduleTimer] ?? ""),
|
|
87
80
|
model: values[DSIOT_PATHS.model],
|
|
88
81
|
};
|
|
89
82
|
}
|
|
@@ -99,7 +92,7 @@ function takes(mask, value) {
|
|
|
99
92
|
}
|
|
100
93
|
// Japanese units (`jp`) follow other rules: see UNSUPPORTED.md.
|
|
101
94
|
function fanSpeeds(values) {
|
|
102
|
-
const region = values[
|
|
95
|
+
const region = values[DSIOT_ADAPTER_PATHS.region];
|
|
103
96
|
if (!region || region === "jp") {
|
|
104
97
|
return [];
|
|
105
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/codecs/dsiot/capabilities.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EAEV,sBAAsB,EACtB,oBAAoB,EAEpB,iBAAiB,EACjB,eAAe,EAEf,aAAa,EACb,WAAW,EAEX,kBAAkB,GAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gCAAgC,EAChC,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,8BAA8B,
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/codecs/dsiot/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { DaikinDeviceInfo } from "../../models/device.js";
|
|
2
|
-
/** Reads what the flattened `adp_i`
|
|
3
|
-
* leaves hold the value a classic adapter sends in
|
|
2
|
+
/** Reads what the flattened `adp_i` and `adp_d` trees say to identify the
|
|
3
|
+
* adapter. Both `adp_i` leaves hold the value a classic adapter sends in
|
|
4
|
+
* `basic_info`. `adp_d.name` holds the name as plain text, where a classic
|
|
5
|
+
* adapter form-encodes it. */
|
|
4
6
|
export declare function parseDsiotDeviceInfo(values: Record<string, string>): DaikinDeviceInfo;
|
|
5
7
|
//# sourceMappingURL=device.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../src/codecs/dsiot/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../src/codecs/dsiot/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D;;;8BAG8B;AAC9B,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,gBAAgB,CAQlB"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { decodeFirmwareVersion, decodeMacAddress } from "../device.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* leaves hold the value a classic adapter sends in `basic_info`. */
|
|
2
|
+
import { DSIOT_ADAPTER_PATHS } from "./tables.js";
|
|
3
|
+
/** Reads what the flattened `adp_i` and `adp_d` trees say to identify the
|
|
4
|
+
* adapter. Both `adp_i` leaves hold the value a classic adapter sends in
|
|
5
|
+
* `basic_info`. `adp_d.name` holds the name as plain text, where a classic
|
|
6
|
+
* adapter form-encodes it. */
|
|
8
7
|
export function parseDsiotDeviceInfo(values) {
|
|
9
8
|
return {
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
name: values[DSIOT_ADAPTER_PATHS.name],
|
|
10
|
+
macAddress: decodeMacAddress(values[DSIOT_ADAPTER_PATHS.macAddress]),
|
|
11
|
+
firmwareVersion: decodeFirmwareVersion(values[DSIOT_ADAPTER_PATHS.firmwareVersion]),
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=device.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../../src/codecs/dsiot/device.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../../src/codecs/dsiot/device.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;8BAG8B;AAC9B,MAAM,UAAU,oBAAoB,CAClC,MAA8B;IAE9B,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;QACtC,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACpE,eAAe,EAAE,qBAAqB,CACpC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAC5C;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
export declare const DSIOT_OPERATIONS: {
|
|
2
|
-
readonly get: 2;
|
|
3
|
-
readonly update: 3;
|
|
4
|
-
readonly delete: 4;
|
|
5
|
-
};
|
|
6
|
-
/** The indoor and the outdoor unit are separate edges on the adapter. */
|
|
7
|
-
export declare const DSIOT_EDGES: {
|
|
8
|
-
readonly indoor: "adr_0100";
|
|
9
|
-
readonly outdoor: "adr_0200";
|
|
10
|
-
};
|
|
11
|
-
/** What a read fetches, as the `to` of a request: whole trees, never single
|
|
12
|
-
* leaves. The status trees come with `pt`, which `parseDsiotCapabilities`
|
|
13
|
-
* reads. */
|
|
14
|
-
export declare const DSIOT_TARGETS: {
|
|
15
|
-
readonly adapterInfo: "/dsiot/edge.adp_i?filter=pv";
|
|
16
|
-
readonly indoorStatus: "/dsiot/edge/adr_0100.dgc_status?filter=pv,pt,md";
|
|
17
|
-
readonly outdoorStatus: "/dsiot/edge/adr_0200.dgc_status?filter=pv,pt,md";
|
|
18
|
-
};
|
|
19
1
|
/** One leaf to write: `path` is dotted from its resource, such as
|
|
20
2
|
* `dgc_status.e_1002.e_A002.p_01`, and `value` is the leaf's hex string. */
|
|
21
3
|
export interface DsiotUpdate {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multireq.d.ts","sourceRoot":"","sources":["../../../src/codecs/dsiot/multireq.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"multireq.d.ts","sourceRoot":"","sources":["../../../src/codecs/dsiot/multireq.ts"],"names":[],"mappings":"AAqBA;4EAC4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAIxE;AAED;;8BAE8B;AAC9B,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,WAAW,EAAE,EACtB,IAAI,GAAE,MAA2B,GAChC,MAAM,CAqBR;AAWD;;;;;;;uDAOuD;AACvD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoB5E"}
|
|
@@ -1,27 +1,5 @@
|
|
|
1
1
|
import { DaikinError } from "../../error.js";
|
|
2
|
-
|
|
3
|
-
// carrying operations on property trees. A request addresses a resource (`to`);
|
|
4
|
-
// a tree node has pn (name) / pt (type) / pch (children) / pv (value) / md
|
|
5
|
-
// (metadata: mi min, mx max, st step).
|
|
6
|
-
export const DSIOT_OPERATIONS = {
|
|
7
|
-
get: 2,
|
|
8
|
-
update: 3,
|
|
9
|
-
delete: 4,
|
|
10
|
-
};
|
|
11
|
-
/** The indoor and the outdoor unit are separate edges on the adapter. */
|
|
12
|
-
export const DSIOT_EDGES = {
|
|
13
|
-
indoor: "adr_0100",
|
|
14
|
-
outdoor: "adr_0200",
|
|
15
|
-
};
|
|
16
|
-
const EDGE_ROOT = "/dsiot/edge";
|
|
17
|
-
/** What a read fetches, as the `to` of a request: whole trees, never single
|
|
18
|
-
* leaves. The status trees come with `pt`, which `parseDsiotCapabilities`
|
|
19
|
-
* reads. */
|
|
20
|
-
export const DSIOT_TARGETS = {
|
|
21
|
-
adapterInfo: `${EDGE_ROOT}.adp_i?filter=pv`,
|
|
22
|
-
indoorStatus: `${EDGE_ROOT}/${DSIOT_EDGES.indoor}.dgc_status?filter=pv,pt,md`,
|
|
23
|
-
outdoorStatus: `${EDGE_ROOT}/${DSIOT_EDGES.outdoor}.dgc_status?filter=pv,pt,md`,
|
|
24
|
-
};
|
|
2
|
+
import { DSIOT_EDGE_ROOT, DSIOT_EDGES, DSIOT_OPERATIONS } from "./tables.js";
|
|
25
3
|
export function buildDsiotMultireqGet(targets) {
|
|
26
4
|
return {
|
|
27
5
|
requests: targets.map((to) => ({ op: DSIOT_OPERATIONS.get, to })),
|
|
@@ -47,7 +25,7 @@ export function buildDsiotMultireqUpdate(updates, edge = DSIOT_EDGES.indoor) {
|
|
|
47
25
|
return {
|
|
48
26
|
requests: roots.map((pc) => ({
|
|
49
27
|
op: DSIOT_OPERATIONS.update,
|
|
50
|
-
to: `${
|
|
28
|
+
to: `${DSIOT_EDGE_ROOT}/${edge}.${pc.pn}`,
|
|
51
29
|
pc,
|
|
52
30
|
})),
|
|
53
31
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multireq.js","sourceRoot":"","sources":["../../../src/codecs/dsiot/multireq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"multireq.js","sourceRoot":"","sources":["../../../src/codecs/dsiot/multireq.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +1,9 @@
|
|
|
1
|
-
import { type DaikinControl, type DaikinSensors, type DaikinState, type FanSpeed, type
|
|
2
|
-
import type
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
/** Sent with every control. */
|
|
8
|
-
readonly powerTransition: "dgc_status.e_1002.e_3003.p_2D";
|
|
9
|
-
readonly mode: "dgc_status.e_1002.e_3001.p_01";
|
|
10
|
-
readonly indoorTemperature: "dgc_status.e_1002.e_A00B.p_01";
|
|
11
|
-
readonly indoorHumidity: "dgc_status.e_1002.e_A00B.p_02";
|
|
12
|
-
readonly outdoorTemperature: "dgc_status.e_1003.e_A00D.p_01";
|
|
13
|
-
readonly model: "dgc_status.e_1002.e_A001.p_0D";
|
|
14
|
-
readonly modelType: "dgc_status.e_1002.e_A001.p_07";
|
|
15
|
-
readonly energyMonitoring: "dgc_status.e_1002.e_A011.p_01";
|
|
16
|
-
};
|
|
17
|
-
/** Each leaf holds `01` while its mode is on. Powerful is on the outdoor
|
|
18
|
-
* edge. */
|
|
19
|
-
export declare const DSIOT_SPECIAL_MODE_PATHS: Record<SpecialMode, string>;
|
|
20
|
-
export interface DsiotSetpoint {
|
|
21
|
-
path: string;
|
|
22
|
-
/** Auto and dehumidify are a signed byte; cool and heat are little-endian. */
|
|
23
|
-
signed: boolean;
|
|
24
|
-
/** The dehumidify setpoint is read-only. */
|
|
25
|
-
writable: boolean;
|
|
26
|
-
}
|
|
27
|
-
export interface DsiotHumidity {
|
|
28
|
-
/** Counted in steps of the leaf's `md.st`. */
|
|
29
|
-
value: string;
|
|
30
|
-
/** The setting: `00` or `05` off, `01` the percentage in `value`, and one
|
|
31
|
-
* value for each `HumiditySetting`. */
|
|
32
|
-
flag: string;
|
|
33
|
-
}
|
|
34
|
-
export interface DsiotModePaths {
|
|
35
|
-
/** Absent in fan mode. */
|
|
36
|
-
setpoint?: DsiotSetpoint;
|
|
37
|
-
/** Absent in fan mode. */
|
|
38
|
-
humidity?: DsiotHumidity;
|
|
39
|
-
fanSpeed: string;
|
|
40
|
-
vertical: string;
|
|
41
|
-
horizontal: string;
|
|
42
|
-
}
|
|
43
|
-
export declare const DSIOT_MODE_NODE = "dgc_status.e_1002.e_3001";
|
|
44
|
-
export declare const DSIOT_MODE_PATHS: Record<OperatingMode, DsiotModePaths>;
|
|
1
|
+
import { type DaikinControl, type DaikinSensors, type DaikinState, type FanSpeed, type OperatingMode, type SpecialMode } from "../../models/state.js";
|
|
2
|
+
import { type DsiotUpdate } from "./multireq.js";
|
|
3
|
+
/** Builds the body of the multireq write that turns a special mode on or off:
|
|
4
|
+
* its one leaf, on the outdoor edge for powerful and on the indoor edge for
|
|
5
|
+
* the rest. */
|
|
6
|
+
export declare function buildDsiotSpecialModeUpdate(mode: SpecialMode, enabled: boolean): object;
|
|
45
7
|
export declare function encodeDsiotBoolean(on: boolean): string;
|
|
46
8
|
export declare function decodeDsiotBoolean(pv: string | undefined): boolean;
|
|
47
9
|
export declare function decodeDsiotLittleEndian(pv: string): number;
|
|
@@ -57,25 +19,7 @@ export declare function encodeDsiotMode(mode: OperatingMode): string;
|
|
|
57
19
|
export declare function decodeDsiotMode(pv: string | undefined): OperatingMode | undefined;
|
|
58
20
|
export declare function encodeDsiotFanSpeed(speed: FanSpeed): string;
|
|
59
21
|
export declare function decodeDsiotFanSpeed(pv: string | undefined): FanSpeed | undefined;
|
|
60
|
-
/** The values a louver leaf holds besides a fixed position, which is 1-14.
|
|
61
|
-
* The leaf is three bytes, little-endian, and bit n of its `md.mx` is set
|
|
62
|
-
* when the unit takes value n. */
|
|
63
|
-
export declare const DSIOT_LOUVER_VALUES: {
|
|
64
|
-
readonly stop: 0;
|
|
65
|
-
readonly swing: 15;
|
|
66
|
-
readonly auto: 16;
|
|
67
|
-
readonly naturalWind: 19;
|
|
68
|
-
readonly floorWarming: 25;
|
|
69
|
-
};
|
|
70
|
-
export declare const DSIOT_LOUVER_STOP = "000000";
|
|
71
|
-
export declare const DSIOT_LOUVER_SWING = "0F0000";
|
|
72
22
|
export declare function isDsiotLouverSwinging(pv: string | undefined): boolean;
|
|
73
|
-
/** The value each `VerticalPosition` is held as. A fixed position has none: it
|
|
74
|
-
* is held as the value at its rank among the fixed values the unit takes. */
|
|
75
|
-
export declare const DSIOT_VERTICAL_POSITION_VALUES: Partial<Record<VerticalPosition, number>>;
|
|
76
|
-
/** The value each `HorizontalPosition` is held as. `stop` and a fixed position
|
|
77
|
-
* have none: see UNSUPPORTED.md. */
|
|
78
|
-
export declare const DSIOT_HORIZONTAL_POSITION_VALUES: Partial<Record<HorizontalPosition, number>>;
|
|
79
23
|
/** Turns the flattened indoor `dgc_status` tree, read with `md`, into a
|
|
80
24
|
* `DaikinState`. Every value is per mode: the setpoint, humidity, fan speed and
|
|
81
25
|
* louvers each have a leaf for each mode, and the state reads the current
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/codecs/dsiot/state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/codecs/dsiot/state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,EAKb,KAAK,aAAa,EAElB,KAAK,WAAW,EAKjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAuB3E;;eAEe;AACf,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,OAAO,GACf,MAAM,CAUR;AAMD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAElE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,MAAM,EAAE,OAAO,GACd,MAAM,GAAG,IAAI,CAMf;AAED,qDAAqD;AACrD,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,MAAM,GAAG,SAAS,GACrB,MAAM,GAAG,IAAI,CAEf;AAED,8CAA8C;AAC9C,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,GAAG,SAAS,GACrB,MAAM,GAAG,IAAI,CAEf;AAED,gFAAgF;AAChF,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,MAAM,GAAG,SAAS,GACrB,MAAM,GAAG,IAAI,CAOf;AAqBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,GAAG,SAAS,GACrB,aAAa,GAAG,SAAS,CAE3B;AASD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAE3D;AAED,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,GAAG,SAAS,GACrB,QAAQ,GAAG,SAAS,CAEtB;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAErE;AA0LD;;;;SAIS;AACT,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAkB3E;AAED;;;;;;;;mEAQmE;AACnE,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,OAAO,EAAE,aAAa,GACrB,WAAW,EAAE,CA4Ff;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,aAAa,CAYf"}
|