daikin-local-control 0.3.1 → 0.5.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.
Files changed (150) hide show
  1. package/DESIGN.md +156 -2
  2. package/README.md +274 -48
  3. package/UNSUPPORTED.md +66 -3
  4. package/dist/clients/airbase.d.ts +64 -0
  5. package/dist/clients/airbase.d.ts.map +1 -0
  6. package/dist/clients/airbase.js +175 -0
  7. package/dist/clients/airbase.js.map +1 -0
  8. package/dist/clients/classic.d.ts +2 -2
  9. package/dist/clients/classic.d.ts.map +1 -1
  10. package/dist/clients/classic.js +4 -4
  11. package/dist/clients/classic.js.map +1 -1
  12. package/dist/clients/client.d.ts +7 -2
  13. package/dist/clients/client.d.ts.map +1 -1
  14. package/dist/clients/dsiot.d.ts +3 -1
  15. package/dist/clients/dsiot.d.ts.map +1 -1
  16. package/dist/clients/dsiot.js +7 -2
  17. package/dist/clients/dsiot.js.map +1 -1
  18. package/dist/codecs/airbase/capabilities.d.ts +23 -0
  19. package/dist/codecs/airbase/capabilities.d.ts.map +1 -0
  20. package/dist/codecs/airbase/capabilities.js +108 -0
  21. package/dist/codecs/airbase/capabilities.js.map +1 -0
  22. package/dist/codecs/airbase/state.d.ts +29 -0
  23. package/dist/codecs/airbase/state.d.ts.map +1 -0
  24. package/dist/codecs/airbase/state.js +166 -0
  25. package/dist/codecs/airbase/state.js.map +1 -0
  26. package/dist/codecs/airbase/tables.d.ts +7 -0
  27. package/dist/codecs/airbase/tables.d.ts.map +1 -0
  28. package/dist/codecs/airbase/tables.js +27 -0
  29. package/dist/codecs/airbase/tables.js.map +1 -0
  30. package/dist/codecs/airbase/zone.d.ts +12 -0
  31. package/dist/codecs/airbase/zone.d.ts.map +1 -0
  32. package/dist/codecs/airbase/zone.js +50 -0
  33. package/dist/codecs/airbase/zone.js.map +1 -0
  34. package/dist/codecs/classic/capabilities.d.ts.map +1 -1
  35. package/dist/codecs/classic/capabilities.js +5 -11
  36. package/dist/codecs/classic/capabilities.js.map +1 -1
  37. package/dist/codecs/classic/extendedControl.d.ts.map +1 -1
  38. package/dist/codecs/classic/extendedControl.js +10 -19
  39. package/dist/codecs/classic/extendedControl.js.map +1 -1
  40. package/dist/codecs/classic/state.d.ts.map +1 -1
  41. package/dist/codecs/classic/state.js +36 -95
  42. package/dist/codecs/classic/state.js.map +1 -1
  43. package/dist/codecs/classic/tables.d.ts +34 -0
  44. package/dist/codecs/classic/tables.d.ts.map +1 -0
  45. package/dist/codecs/classic/tables.js +96 -0
  46. package/dist/codecs/classic/tables.js.map +1 -0
  47. package/dist/codecs/credentials.d.ts +3 -2
  48. package/dist/codecs/credentials.d.ts.map +1 -1
  49. package/dist/codecs/credentials.js +8 -3
  50. package/dist/codecs/credentials.js.map +1 -1
  51. package/dist/codecs/device.d.ts +7 -1
  52. package/dist/codecs/device.d.ts.map +1 -1
  53. package/dist/codecs/device.js +15 -3
  54. package/dist/codecs/device.js.map +1 -1
  55. package/dist/codecs/dsiot/capabilities.d.ts.map +1 -1
  56. package/dist/codecs/dsiot/capabilities.js +8 -15
  57. package/dist/codecs/dsiot/capabilities.js.map +1 -1
  58. package/dist/codecs/dsiot/device.d.ts.map +1 -1
  59. package/dist/codecs/dsiot/device.js +4 -8
  60. package/dist/codecs/dsiot/device.js.map +1 -1
  61. package/dist/codecs/dsiot/multireq.d.ts +0 -19
  62. package/dist/codecs/dsiot/multireq.d.ts.map +1 -1
  63. package/dist/codecs/dsiot/multireq.js +2 -25
  64. package/dist/codecs/dsiot/multireq.js.map +1 -1
  65. package/dist/codecs/dsiot/state.d.ts +6 -62
  66. package/dist/codecs/dsiot/state.d.ts.map +1 -1
  67. package/dist/codecs/dsiot/state.js +29 -148
  68. package/dist/codecs/dsiot/state.js.map +1 -1
  69. package/dist/codecs/dsiot/tables.d.ts +119 -0
  70. package/dist/codecs/dsiot/tables.d.ts.map +1 -0
  71. package/dist/codecs/dsiot/tables.js +188 -0
  72. package/dist/codecs/dsiot/tables.js.map +1 -0
  73. package/dist/discovery.d.ts +20 -9
  74. package/dist/discovery.d.ts.map +1 -1
  75. package/dist/discovery.js +102 -32
  76. package/dist/discovery.js.map +1 -1
  77. package/dist/factory.d.ts +13 -7
  78. package/dist/factory.d.ts.map +1 -1
  79. package/dist/factory.js +16 -4
  80. package/dist/factory.js.map +1 -1
  81. package/dist/index.d.ts +8 -0
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +8 -0
  84. package/dist/index.js.map +1 -1
  85. package/dist/models/device.d.ts +3 -2
  86. package/dist/models/device.d.ts.map +1 -1
  87. package/dist/models/device.js +1 -1
  88. package/dist/models/device.js.map +1 -1
  89. package/dist/models/state.d.ts +2 -3
  90. package/dist/models/state.d.ts.map +1 -1
  91. package/dist/models/zone.d.ts +9 -0
  92. package/dist/models/zone.d.ts.map +1 -0
  93. package/dist/models/zone.js +2 -0
  94. package/dist/models/zone.js.map +1 -0
  95. package/dist/simulators/airbase.d.ts +82 -0
  96. package/dist/simulators/airbase.d.ts.map +1 -0
  97. package/dist/simulators/airbase.js +352 -0
  98. package/dist/simulators/airbase.js.map +1 -0
  99. package/dist/simulators/classic.d.ts +61 -0
  100. package/dist/simulators/classic.d.ts.map +1 -0
  101. package/dist/simulators/classic.js +473 -0
  102. package/dist/simulators/classic.js.map +1 -0
  103. package/dist/simulators/dsiot.d.ts +49 -0
  104. package/dist/simulators/dsiot.d.ts.map +1 -0
  105. package/dist/simulators/dsiot.js +519 -0
  106. package/dist/simulators/dsiot.js.map +1 -0
  107. package/dist/simulators/index.d.ts +5 -0
  108. package/dist/simulators/index.d.ts.map +1 -0
  109. package/dist/simulators/index.js +4 -0
  110. package/dist/simulators/index.js.map +1 -0
  111. package/dist/simulators/simulator.d.ts +117 -0
  112. package/dist/simulators/simulator.d.ts.map +1 -0
  113. package/dist/simulators/simulator.js +141 -0
  114. package/dist/simulators/simulator.js.map +1 -0
  115. package/dist/transport.d.ts +8 -3
  116. package/dist/transport.d.ts.map +1 -1
  117. package/dist/transport.js +10 -2
  118. package/dist/transport.js.map +1 -1
  119. package/package.json +11 -4
  120. package/src/clients/airbase.ts +274 -0
  121. package/src/clients/classic.ts +8 -8
  122. package/src/clients/client.ts +8 -1
  123. package/src/clients/dsiot.ts +8 -1
  124. package/src/codecs/airbase/capabilities.ts +150 -0
  125. package/src/codecs/airbase/state.ts +223 -0
  126. package/src/codecs/airbase/tables.ts +32 -0
  127. package/src/codecs/airbase/zone.ts +62 -0
  128. package/src/codecs/classic/capabilities.ts +8 -11
  129. package/src/codecs/classic/extendedControl.ts +14 -25
  130. package/src/codecs/classic/state.ts +49 -101
  131. package/src/codecs/classic/tables.ts +126 -0
  132. package/src/codecs/credentials.ts +11 -3
  133. package/src/codecs/device.ts +19 -3
  134. package/src/codecs/dsiot/capabilities.ts +10 -17
  135. package/src/codecs/dsiot/device.ts +4 -9
  136. package/src/codecs/dsiot/multireq.ts +2 -25
  137. package/src/codecs/dsiot/state.ts +57 -193
  138. package/src/codecs/dsiot/tables.ts +253 -0
  139. package/src/discovery.ts +107 -34
  140. package/src/factory.ts +26 -7
  141. package/src/index.ts +8 -0
  142. package/src/models/device.ts +3 -2
  143. package/src/models/state.ts +2 -3
  144. package/src/models/zone.ts +8 -0
  145. package/src/simulators/airbase.ts +495 -0
  146. package/src/simulators/classic.ts +636 -0
  147. package/src/simulators/dsiot.ts +736 -0
  148. package/src/simulators/index.ts +10 -0
  149. package/src/simulators/simulator.ts +282 -0
  150. package/src/transport.ts +15 -4
@@ -0,0 +1,108 @@
1
+ import { OPERATING_MODES, SWING_MODES, } from "../../models/state.js";
2
+ const ALWAYS_OFFERED_MODES = ["cool", "heat", "fan"];
3
+ const THREE_FAN_LEVELS = ["level1", "level3", "level5"];
4
+ const TWO_FAN_LEVELS = ["level1", "level5"];
5
+ /** Merges the `basic_info` and `get_model_info` replies of an Airbase adapter
6
+ * into the one field map `parseAirbaseCapabilities`, `takesAirbaseFanAuto`,
7
+ * `takesAirbaseAirside` and `parseAirbaseZones` read. */
8
+ export function mergeAirbaseCapabilityFields(basicInfo, modelInfo) {
9
+ return { ...basicInfo, ...modelInfo };
10
+ }
11
+ /** Turns the field map from `mergeAirbaseCapabilityFields` into
12
+ * `DaikinCapabilities`. A unit with zones (`en_zone`) takes no `auto` fan
13
+ * speed and no direction. It lists no humidity setting, louver position or
14
+ * special mode, and reports `energyMonitoring` and `demandControl` as
15
+ * `false`: which field says a unit has either is not known. */
16
+ export function parseAirbaseCapabilities(fields) {
17
+ const offeredModes = OPERATING_MODES.filter((mode) => ALWAYS_OFFERED_MODES.includes(mode) ||
18
+ (mode === "auto" && fields.en_auto === "1") ||
19
+ (mode === "dehumidify" && fields.en_dry === "1"));
20
+ const offered = (mode, range) => offeredModes.includes(mode) ? range : null;
21
+ const none = { auto: [], dehumidify: [], cool: [], heat: [], fan: [] };
22
+ return {
23
+ modes: offeredModes,
24
+ fanSpeeds: fanSpeeds(fields),
25
+ swingModes: !hasZones(fields) && fields.en_fdir === "1" ? [...SWING_MODES] : [],
26
+ verticalPositions: [],
27
+ horizontalPositions: [],
28
+ targetTemperaturesInC: {
29
+ // Auto runs from the lowest setpoint of cool to the highest of heat.
30
+ auto: offered("auto", range(fields.cool_l, 18, fields.heat_h, 30)),
31
+ cool: offered("cool", range(fields.cool_l, 18, fields.cool_h, 32)),
32
+ heat: offered("heat", range(fields.heat_l, 10, fields.heat_h, 30)),
33
+ dehumidify: null,
34
+ fan: null,
35
+ },
36
+ targetHumidities: none,
37
+ specialModes: none,
38
+ specialOutlet: false,
39
+ energyMonitoring: false,
40
+ demandControl: false,
41
+ scheduleTimer: ["1", "2"].includes(fields.en_scdltmr ?? ""),
42
+ model: fields.model,
43
+ };
44
+ }
45
+ /** Whether a unit takes fan auto, read from the field map of
46
+ * `mergeAirbaseCapabilityFields`: one with zones that counts its fan speeds
47
+ * (`frate_steps`), unless `en_frate_auto` is 0. */
48
+ export function takesAirbaseFanAuto(fields) {
49
+ return (isFanControllable(fields) &&
50
+ hasZones(fields) &&
51
+ fanLevels(fields).length > 0 &&
52
+ "frate_steps" in fields &&
53
+ (fields.en_frate_auto ?? "1") === "1");
54
+ }
55
+ /** Whether a unit takes airside, read from the field map of
56
+ * `mergeAirbaseCapabilityFields`: one with zones that reports
57
+ * `en_airside=1`. */
58
+ export function takesAirbaseAirside(fields) {
59
+ return (isFanControllable(fields) && hasZones(fields) && fields.en_airside === "1");
60
+ }
61
+ /** How many zones a unit has, read from the field map of
62
+ * `mergeAirbaseCapabilityFields`: `en_zone`, and none without it. */
63
+ export function parseAirbaseZoneCount(fields) {
64
+ const count = Number.parseInt(fields.en_zone ?? "", 10);
65
+ return count > 0 ? count : 0;
66
+ }
67
+ function hasZones(fields) {
68
+ return "en_zone" in fields && fields.en_zone !== "0";
69
+ }
70
+ // A unit that sets each zone's airflow itself (`en_linear_zone=1`) takes no
71
+ // fan speed.
72
+ function isFanControllable(fields) {
73
+ return ((fields.reg ?? "") !== "" &&
74
+ fields.reg !== "jp" &&
75
+ fields.en_frate === "1" &&
76
+ fields.en_linear_zone !== "1");
77
+ }
78
+ // Three levels unless `frate_steps` is 2, and none when it is not a number.
79
+ function fanLevels(fields) {
80
+ if (!("frate_steps" in fields)) {
81
+ return THREE_FAN_LEVELS;
82
+ }
83
+ const steps = Number.parseInt(fields.frate_steps ?? "", 10);
84
+ if (!Number.isFinite(steps)) {
85
+ return [];
86
+ }
87
+ return steps === 2 ? TWO_FAN_LEVELS : THREE_FAN_LEVELS;
88
+ }
89
+ function fanSpeeds(fields) {
90
+ if (!isFanControllable(fields)) {
91
+ return [];
92
+ }
93
+ const takesAuto = !hasZones(fields) && fields.en_frate_auto === "1";
94
+ return [...(takesAuto ? ["auto"] : []), ...fanLevels(fields)];
95
+ }
96
+ // Setpoint limits are whole °C on the wire; any fraction is dropped.
97
+ function range(low, fallbackMin, high, fallbackMax) {
98
+ return {
99
+ min: wholeCelsius(low, fallbackMin),
100
+ max: wholeCelsius(high, fallbackMax),
101
+ step: 1,
102
+ };
103
+ }
104
+ function wholeCelsius(value, fallback) {
105
+ const parsed = Number.parseFloat(value ?? "");
106
+ return Number.isFinite(parsed) ? Math.trunc(parsed) : fallback;
107
+ }
108
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/codecs/airbase/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { DaikinControl, DaikinSensors, DaikinState } from "../../models/state.js";
2
+ /** Turns a `get_control_info` reply into a `DaikinState`. A `mode` or `f_rate`
3
+ * outside the model reads as `auto`, and an `f_dir` outside it as `off`. It
4
+ * reports no humidity setting, louver position or special mode: an Airbase
5
+ * unit is not known to have any. */
6
+ export declare function parseAirbaseState(fields: Record<string, string>): DaikinState;
7
+ export declare function parseAirbaseSensors(fields: Record<string, string>): DaikinSensors;
8
+ /** Whether fan auto is on in a `get_control_info` reply: the unit then picks
9
+ * the fan speed itself, up to the one that is set. */
10
+ export declare function parseAirbaseFanAuto(fields: Record<string, string>): boolean;
11
+ /** Whether airside is on in a `get_control_info` reply. */
12
+ export declare function parseAirbaseAirside(fields: Record<string, string>): boolean;
13
+ /** Turns `current`, the `get_control_info` reply, and a control into the
14
+ * `set_control_info` query: power, mode, setpoint, humidity, fan speed, fan
15
+ * auto, airside and direction, every time. When the mode changes, the
16
+ * setpoint, the fan and the direction come from what the unit remembers for
17
+ * cool or for heat. It drops a `targetTemperatureInC` in fan and dehumidify,
18
+ * every `targetHumidity` and louver position, and sends `shum` back as the
19
+ * unit holds it. A `fanSpeed` switches airside off and keeps fan auto. */
20
+ export declare function applyAirbaseControl(current: Record<string, string>, control: DaikinControl): Record<string, string>;
21
+ /** Turns `current`, the `get_control_info` reply, into the `set_control_info`
22
+ * query that switches fan auto on or off. It switches airside off, and keeps
23
+ * the fan speed. */
24
+ export declare function applyAirbaseFanAuto(current: Record<string, string>, enabled: boolean): Record<string, string>;
25
+ /** Turns `current`, the `get_control_info` reply, into the `set_control_info`
26
+ * query that switches airside on or off. Switching it on switches fan auto
27
+ * off and sets the lowest fan speed, which airside runs at. */
28
+ export declare function applyAirbaseAirside(current: Record<string, string>, enabled: boolean): Record<string, string>;
29
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/codecs/airbase/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,WAAW,EAIZ,MAAM,uBAAuB,CAAC;AA2C/B;;;oCAGoC;AACpC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAY7E;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,aAAa,CAMf;AAED;sDACsD;AACtD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAE3E;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAE3E;AAED;;;;;;0EAM0E;AAC1E,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,aAAa,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;;oBAEoB;AACpB,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;;+DAE+D;AAC/D,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB"}
@@ -0,0 +1,166 @@
1
+ import { AIRBASE_FAN_SPEED_CODES, AIRBASE_NO_SETPOINT, AIRBASE_OPERATING_MODE_CODES, AIRBASE_SWING_MODE_CODES, } from "./tables.js";
2
+ // Maps between `DaikinState` and an Airbase adapter's `control_info` fields,
3
+ // and reads `DaikinSensors` from its `get_sensor_info`.
4
+ //
5
+ // The unit remembers a setpoint, a fan and a direction for cool and for heat
6
+ // alone: `dt2`, `dfr2`, `dfd2`, `auto2` and `airside2` for cool, and the same
7
+ // fields ending in 1 for heat. Auto, fan and dehumidify run on one of the
8
+ // two, the one `bk_auto` names.
9
+ const OPERATING_MODES_BY_CODE = Object.fromEntries(Object.entries(AIRBASE_OPERATING_MODE_CODES).map(([mode, code]) => [
10
+ code,
11
+ mode,
12
+ ]));
13
+ const FAN_SPEEDS_BY_CODE = Object.fromEntries(Object.entries(AIRBASE_FAN_SPEED_CODES).map(([speed, code]) => [
14
+ code,
15
+ speed,
16
+ ]));
17
+ const SWING_MODES_BY_CODE = Object.fromEntries(Object.entries(AIRBASE_SWING_MODE_CODES).map(([swing, code]) => [
18
+ code,
19
+ swing,
20
+ ]));
21
+ const ON = "1";
22
+ const OFF = "0";
23
+ // What airside runs the fan at.
24
+ const AIRSIDE_FAN_SPEED = AIRBASE_FAN_SPEED_CODES.level1;
25
+ /** Turns a `get_control_info` reply into a `DaikinState`. A `mode` or `f_rate`
26
+ * outside the model reads as `auto`, and an `f_dir` outside it as `off`. It
27
+ * reports no humidity setting, louver position or special mode: an Airbase
28
+ * unit is not known to have any. */
29
+ export function parseAirbaseState(fields) {
30
+ return {
31
+ power: fields.pow === ON,
32
+ mode: OPERATING_MODES_BY_CODE[fields.mode ?? ""] ?? "auto",
33
+ targetTemperatureInC: parseNumeric(fields.stemp),
34
+ targetHumidity: null,
35
+ fanSpeed: FAN_SPEEDS_BY_CODE[fields.f_rate ?? ""] ?? "auto",
36
+ swingMode: SWING_MODES_BY_CODE[fields.f_dir ?? ""] ?? "off",
37
+ verticalPosition: null,
38
+ horizontalPosition: null,
39
+ specialModes: [],
40
+ };
41
+ }
42
+ export function parseAirbaseSensors(fields) {
43
+ return {
44
+ indoorTemperatureInC: parseNumeric(fields.htemp),
45
+ outdoorTemperatureInC: parseNumeric(fields.otemp),
46
+ indoorHumidityInPercent: parseNumeric(fields.hhum),
47
+ };
48
+ }
49
+ /** Whether fan auto is on in a `get_control_info` reply: the unit then picks
50
+ * the fan speed itself, up to the one that is set. */
51
+ export function parseAirbaseFanAuto(fields) {
52
+ return fields.f_auto === ON;
53
+ }
54
+ /** Whether airside is on in a `get_control_info` reply. */
55
+ export function parseAirbaseAirside(fields) {
56
+ return fields.f_airside === ON;
57
+ }
58
+ /** Turns `current`, the `get_control_info` reply, and a control into the
59
+ * `set_control_info` query: power, mode, setpoint, humidity, fan speed, fan
60
+ * auto, airside and direction, every time. When the mode changes, the
61
+ * setpoint, the fan and the direction come from what the unit remembers for
62
+ * cool or for heat. It drops a `targetTemperatureInC` in fan and dehumidify,
63
+ * every `targetHumidity` and louver position, and sends `shum` back as the
64
+ * unit holds it. A `fanSpeed` switches airside off and keeps fan auto. */
65
+ export function applyAirbaseControl(current, control) {
66
+ return buildControl(current, control, {});
67
+ }
68
+ /** Turns `current`, the `get_control_info` reply, into the `set_control_info`
69
+ * query that switches fan auto on or off. It switches airside off, and keeps
70
+ * the fan speed. */
71
+ export function applyAirbaseFanAuto(current, enabled) {
72
+ return buildControl(current, {}, { auto: enabled });
73
+ }
74
+ /** Turns `current`, the `get_control_info` reply, into the `set_control_info`
75
+ * query that switches airside on or off. Switching it on switches fan auto
76
+ * off and sets the lowest fan speed, which airside runs at. */
77
+ export function applyAirbaseAirside(current, enabled) {
78
+ return buildControl(current, {}, { airside: enabled });
79
+ }
80
+ function buildControl(current, control, fan) {
81
+ const { cool, heat, fan: fanMode, dehumidify } = AIRBASE_OPERATING_MODE_CODES;
82
+ // A mode outside the model is sent back as it came.
83
+ const currentMode = current.mode ?? "";
84
+ const mode = control.mode === undefined
85
+ ? currentMode
86
+ : AIRBASE_OPERATING_MODE_CODES[control.mode];
87
+ const modeChanged = mode !== currentMode;
88
+ // A change to cool or to heat makes that mode the one the others run on.
89
+ const backing = modeChanged && (mode === cool || mode === heat) ? mode : current.bk_auto;
90
+ // Which of the two memories applies: heat's, or cool's for anything else.
91
+ const memory = (backing || mode) === heat ? heat : cool;
92
+ const remembered = (field, memoryPrefix, fallback) => (modeChanged ? current[`${memoryPrefix}${memory}`] : undefined) ||
93
+ current[field] ||
94
+ fallback;
95
+ const power = control.power ?? current.pow === ON;
96
+ const next = { pow: power ? ON : OFF, mode };
97
+ if (backing) {
98
+ next.bk_auto = backing;
99
+ }
100
+ next.stemp =
101
+ mode === dehumidify
102
+ ? AIRBASE_NO_SETPOINT
103
+ : control.targetTemperatureInC != null && mode !== fanMode
104
+ ? control.targetTemperatureInC.toFixed(1)
105
+ : remembered("stemp", "dt", AIRBASE_NO_SETPOINT);
106
+ // Each mode's setpoint is written to its own memory as well, and auto's to
107
+ // the memory of the mode it runs on.
108
+ const setpointMemory = mode === cool || mode === heat || mode === fanMode || mode === dehumidify
109
+ ? mode
110
+ : mode === AIRBASE_OPERATING_MODE_CODES.auto && backing
111
+ ? memory
112
+ : undefined;
113
+ if (setpointMemory !== undefined) {
114
+ next[`dt${setpointMemory}`] = next.stemp;
115
+ }
116
+ next.shum = current.shum || AIRBASE_NO_SETPOINT;
117
+ next.f_rate =
118
+ control.fanSpeed === undefined
119
+ ? remembered("f_rate", "dfr", AIRBASE_FAN_SPEED_CODES.auto)
120
+ : AIRBASE_FAN_SPEED_CODES[control.fanSpeed];
121
+ next.f_auto = remembered("f_auto", "auto", OFF);
122
+ next.f_airside = remembered("f_airside", "airside", OFF);
123
+ const fanChanged = control.fanSpeed !== undefined || fan.auto !== undefined;
124
+ if (fan.auto !== undefined) {
125
+ next.f_auto = fan.auto ? ON : OFF;
126
+ }
127
+ if (fanChanged) {
128
+ next.f_airside = OFF;
129
+ }
130
+ if (fan.airside !== undefined) {
131
+ next.f_airside = fan.airside ? ON : OFF;
132
+ }
133
+ if (fan.airside) {
134
+ next.f_rate = AIRSIDE_FAN_SPEED;
135
+ }
136
+ // Airside and fan auto are never on together.
137
+ if (next.f_airside === ON) {
138
+ next.f_auto = OFF;
139
+ }
140
+ // A change to the fan is written to the memory as well.
141
+ if (fanChanged) {
142
+ next[`dfr${memory}`] = next.f_rate;
143
+ next[`auto${memory}`] = next.f_auto;
144
+ }
145
+ if (fanChanged || fan.airside !== undefined) {
146
+ next[`airside${memory}`] = next.f_airside;
147
+ }
148
+ next.f_dir =
149
+ control.swingMode === undefined
150
+ ? remembered("f_dir", "dfd", AIRBASE_SWING_MODE_CODES.off)
151
+ : AIRBASE_SWING_MODE_CODES[control.swingMode];
152
+ if (control.swingMode !== undefined) {
153
+ next[`dfd${memory}`] = next.f_dir;
154
+ }
155
+ return next;
156
+ }
157
+ function parseNumeric(value) {
158
+ if (value === undefined || value === "") {
159
+ return null;
160
+ }
161
+ const parsed = Number(value);
162
+ // A reading the unit lacks is "-", and a mode without a setpoint holds
163
+ // "--" or a letter, none of which is a number.
164
+ return Number.isFinite(parsed) ? parsed : null;
165
+ }
166
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/codecs/airbase/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { FanSpeed, OperatingMode, SwingMode } from "../../models/state.js";
2
+ export declare const AIRBASE_OPERATING_MODE_CODES: Record<OperatingMode, string>;
3
+ export declare const AIRBASE_FAN_SPEED_CODES: Record<FanSpeed, string>;
4
+ export declare const AIRBASE_SWING_MODE_CODES: Record<SwingMode, string>;
5
+ /** What `stemp` holds in a mode without a setpoint, such as dehumidify. */
6
+ export declare const AIRBASE_NO_SETPOINT = "--";
7
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../src/codecs/airbase/tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKhF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAMtE,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQ5D,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAK9D,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,OAAO,CAAC"}
@@ -0,0 +1,27 @@
1
+ // The codes an Airbase adapter holds each value of a model as. It numbers
2
+ // the modes and the fan speeds differently from a classic adapter.
3
+ export const AIRBASE_OPERATING_MODE_CODES = {
4
+ fan: "0",
5
+ heat: "1",
6
+ cool: "2",
7
+ auto: "3",
8
+ dehumidify: "7",
9
+ };
10
+ export const AIRBASE_FAN_SPEED_CODES = {
11
+ auto: "0",
12
+ silent: "B",
13
+ level1: "1",
14
+ level2: "2",
15
+ level3: "3",
16
+ level4: "4",
17
+ level5: "5",
18
+ };
19
+ export const AIRBASE_SWING_MODE_CODES = {
20
+ off: "0",
21
+ vertical: "1",
22
+ horizontal: "2",
23
+ both: "3",
24
+ };
25
+ /** What `stemp` holds in a mode without a setpoint, such as dehumidify. */
26
+ export const AIRBASE_NO_SETPOINT = "--";
27
+ //# sourceMappingURL=tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../src/codecs/airbase/tables.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,mEAAmE;AAEnE,MAAM,CAAC,MAAM,4BAA4B,GAAkC;IACzE,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAA8B;IACjE,GAAG,EAAE,GAAG;IACR,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IACf,IAAI,EAAE,GAAG;CACV,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { DaikinZone } from "../../models/zone.js";
2
+ /** Turns a `get_zone_setting` reply into the unit's zones, the first
3
+ * `en_zone` of them. `capabilityFields` is the field map of
4
+ * `mergeAirbaseCapabilityFields`. */
5
+ export declare function parseAirbaseZones(zoneSetting: Record<string, string>, capabilityFields: Record<string, string>): DaikinZone[];
6
+ /** Turns `current`, the `get_zone_setting` reply, into the `set_zone_setting`
7
+ * query that opens or closes the zone at `index`, counted from 0. Every name
8
+ * goes back as the unit holds it, with each zone's temperatures where the
9
+ * unit has them. It throws an `Error` for an index the unit has no zone
10
+ * at. */
11
+ export declare function applyAirbaseZone(current: Record<string, string>, capabilityFields: Record<string, string>, index: number, enabled: boolean): Record<string, string>;
12
+ //# sourceMappingURL=zone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zone.d.ts","sourceRoot":"","sources":["../../../src/codecs/airbase/zone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAiBvD;;qCAEqC;AACrC,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,UAAU,EAAE,CAQd;AAED;;;;SAIS;AACT,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB"}
@@ -0,0 +1,50 @@
1
+ import { decodeClassicText } from "../classic/keyValue.js";
2
+ import { parseAirbaseZoneCount } from "./capabilities.js";
3
+ // `get_zone_setting` answers the zones as lists joined by `;`, form-encoded:
4
+ // their names in `zone_name`, and 1 or 0 for each in `zone_onoff`.
5
+ const SEPARATOR = ";";
6
+ // A unit that sets a temperature for each zone answers these two as well, and
7
+ // takes them back with every write.
8
+ const ZONE_TEMPERATURE_FIELDS = ["lztemp_c", "lztemp_h"];
9
+ function decodeList(value) {
10
+ return value === undefined || value === ""
11
+ ? []
12
+ : decodeClassicText(value).split(SEPARATOR);
13
+ }
14
+ /** Turns a `get_zone_setting` reply into the unit's zones, the first
15
+ * `en_zone` of them. `capabilityFields` is the field map of
16
+ * `mergeAirbaseCapabilityFields`. */
17
+ export function parseAirbaseZones(zoneSetting, capabilityFields) {
18
+ const flags = decodeList(zoneSetting.zone_onoff);
19
+ return decodeList(zoneSetting.zone_name)
20
+ .slice(0, parseAirbaseZoneCount(capabilityFields))
21
+ .map((name, index) => ({
22
+ name: name.trim(),
23
+ enabled: flags[index] === "1",
24
+ }));
25
+ }
26
+ /** Turns `current`, the `get_zone_setting` reply, into the `set_zone_setting`
27
+ * query that opens or closes the zone at `index`, counted from 0. Every name
28
+ * goes back as the unit holds it, with each zone's temperatures where the
29
+ * unit has them. It throws an `Error` for an index the unit has no zone
30
+ * at. */
31
+ export function applyAirbaseZone(current, capabilityFields, index, enabled) {
32
+ const zoneCount = parseAirbaseZones(current, capabilityFields).length;
33
+ if (!Number.isInteger(index) || index < 0 || index >= zoneCount) {
34
+ throw new Error(`The unit has no zone ${index}: it has ${zoneCount}`);
35
+ }
36
+ const flags = decodeList(current.zone_onoff);
37
+ flags[index] = enabled ? "1" : "0";
38
+ const query = {
39
+ zone_name: decodeList(current.zone_name).join(SEPARATOR),
40
+ zone_onoff: flags.join(SEPARATOR),
41
+ };
42
+ for (const field of ZONE_TEMPERATURE_FIELDS) {
43
+ const value = current[field];
44
+ if (value !== undefined) {
45
+ query[field] = decodeClassicText(value);
46
+ }
47
+ }
48
+ return query;
49
+ }
50
+ //# sourceMappingURL=zone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zone.js","sourceRoot":"","sources":["../../../src/codecs/airbase/zone.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,6EAA6E;AAC7E,mEAAmE;AACnE,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,8EAA8E;AAC9E,oCAAoC;AACpC,MAAM,uBAAuB,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAEzD,SAAS,UAAU,CAAC,KAAyB;IAC3C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QACxC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED;;qCAEqC;AACrC,MAAM,UAAU,iBAAiB,CAC/B,WAAmC,EACnC,gBAAwC;IAExC,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC;SACrC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;SACjD,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACjB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG;KAC9B,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;;SAIS;AACT,MAAM,UAAU,gBAAgB,CAC9B,OAA+B,EAC/B,gBAAwC,EACxC,KAAa,EACb,OAAgB;IAEhB,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,YAAY,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACnC,MAAM,KAAK,GAA2B;QACpC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QACxD,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;KAClC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,uBAAuB,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/codecs/classic/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,8BAA8B,CAAC;AAwDtC;;;;yBAIyB;AACzB,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED;;;qBAGqB;AACrB,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,kBAAkB,CAmCpB;AAyED;wEACwE;AACxE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAE5E;AAoCD;wCACwC;AACxC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAY7E"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/codecs/classic/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,8BAA8B,CAAC;AAoDtC;;;;yBAIyB;AACzB,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED;;;qBAGqB;AACrB,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,kBAAkB,CAmCpB;AA0ED;wEACwE;AACxE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAE5E;AAoCD;wCACwC;AACxC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAY7E"}
@@ -1,13 +1,6 @@
1
1
  import { FIXED_LOUVER_POSITIONS, HUMIDITY_SETTINGS, OPERATING_MODES, SPECIAL_MODES, SWING_MODES, } from "../../models/state.js";
2
+ import { CLASSIC_COOLING_ONLY_TYPE, CLASSIC_SPECIAL_MODE_BITS, } from "./tables.js";
2
3
  const CAPABILITY_VERSIONS = ["0", "1", "2", "3"];
3
- // `en_spmode` sets one bit for each special mode the unit takes. Bit 8 is a
4
- // mode outside `SpecialMode`. The powerful and econo bits count only at
5
- // `cpv=3` with a `cpv_minor` other than `00`: see UNSUPPORTED.md.
6
- const SPECIAL_MODE_BITS = {
7
- powerful: 1,
8
- econo: 2,
9
- streamer: 4,
10
- };
11
4
  const COOLING_ONLY_MODES = [
12
5
  "cool",
13
6
  "dehumidify",
@@ -87,11 +80,12 @@ export function parseClassicCapabilities(fields) {
87
80
  };
88
81
  }
89
82
  // Lists none for a unit that reports no `en_spmode`, and econo in every mode
90
- // but fan: see UNSUPPORTED.md.
83
+ // but fan. The powerful and econo bits count only at `cpv=3` with a
84
+ // `cpv_minor` other than `00`: see UNSUPPORTED.md.
91
85
  function specialModes(fields, cpv, offeredModes) {
92
86
  const bits = Number.parseInt(fields.en_spmode ?? "", 10);
93
87
  const followsPowerfulAndEcono = cpv === "3" && (fields.cpv_minor ?? "00") !== "00";
94
- const taken = SPECIAL_MODES.filter((specialMode) => (bits & SPECIAL_MODE_BITS[specialMode]) !== 0 &&
88
+ const taken = SPECIAL_MODES.filter((specialMode) => (bits & CLASSIC_SPECIAL_MODE_BITS[specialMode]) !== 0 &&
95
89
  (specialMode === "streamer" || followsPowerfulAndEcono));
96
90
  const inMode = (mode) => offeredModes.includes(mode)
97
91
  ? taken.filter((specialMode) => mode !== "fan" || specialMode !== "econo")
@@ -111,7 +105,7 @@ function modes(fields, cpv) {
111
105
  if (!CAPABILITY_VERSIONS.includes(cpv)) {
112
106
  return [];
113
107
  }
114
- return fields.model_type === "C"
108
+ return fields.model_type === CLASSIC_COOLING_ONLY_TYPE
115
109
  ? OPERATING_MODES.filter((mode) => COOLING_ONLY_MODES.includes(mode))
116
110
  : [...OPERATING_MODES];
117
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/codecs/classic/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/codecs/classic/capabilities.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extendedControl.d.ts","sourceRoot":"","sources":["../../../src/codecs/classic/extendedControl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,WAAW,EACX,cAAc,EACd,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAkCzD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEpE;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,GAAG,IAAI,CAEhB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;eACe;AACf,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,GAAG,IAAI,CAEhB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIxB;AAED;kBACkB;AAClB,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,GAAG,IAAI,CAIhB;AAED;;yEAEyE;AACzE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB;AAED;;qBAEqB;AACrB,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEtE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEtE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE7E;AAED;;mBAEmB;AACnB,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,cAAc,CAahB;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE5E;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,aAAa,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB"}
1
+ {"version":3,"file":"extendedControl.d.ts","sourceRoot":"","sources":["../../../src/codecs/classic/extendedControl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,WAAW,EACX,cAAc,EACd,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAkBzD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEpE;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,GAAG,IAAI,CAEhB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;eACe;AACf,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,GAAG,IAAI,CAEhB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED;kBACkB;AAClB,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,GAAG,IAAI,CAIhB;AAED;;yEAEyE;AACzE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAED;;qBAEqB;AACrB,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEtE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEtE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE7E;AAED;;mBAEmB;AACnB,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,cAAc,CAahB;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE5E;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,aAAa,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB"}
@@ -1,25 +1,11 @@
1
1
  import { decodeClassicText } from "./keyValue.js";
2
+ import { CLASSIC_REMOTE_METHODS, CLASSIC_SPECIAL_MODE_KIND_CODES, CLASSIC_TERMINAL_SCOPE_CODES, } from "./tables.js";
2
3
  // Encodes each control outside `DaikinState` as the query its classic `set_*`
3
4
  // endpoint takes, and reads each one back from the reply that reports it.
4
- const TERMINAL_SCOPE_CODES = {
5
- self: "0",
6
- others: "1",
7
- all: "2",
8
- };
9
5
  const DEMAND_MODE_CODES = {
10
6
  manual: "0",
11
7
  auto: "2",
12
8
  };
13
- // `spmode_kind` on the wire, which numbers the modes differently from the
14
- // `adv` that `parseClassicState` reads.
15
- const SPECIAL_MODE_KIND_CODES = {
16
- powerful: "1",
17
- econo: "2",
18
- };
19
- // `method`: the adapter is reached from outside the home network while it
20
- // polls, and from inside only otherwise.
21
- const REMOTE_METHOD_POLLING = "polling";
22
- const REMOTE_METHOD_HOME_ONLY = "home only";
23
9
  const REMOTE_METHOD_INTERVALS = ["notice_ip_int", "notice_sync_int"];
24
10
  export function encodeClassicLed(on) {
25
11
  return { led: flag(on) };
@@ -47,21 +33,26 @@ export function encodeClassicDemandControl(demand) {
47
33
  export function encodeClassicSpecialMode(mode, enabled) {
48
34
  return mode === "streamer"
49
35
  ? { en_streamer: flag(enabled) }
50
- : { set_spmode: flag(enabled), spmode_kind: SPECIAL_MODE_KIND_CODES[mode] };
36
+ : {
37
+ set_spmode: flag(enabled),
38
+ spmode_kind: CLASSIC_SPECIAL_MODE_KIND_CODES[mode],
39
+ };
51
40
  }
52
41
  /** Reads out-of-home access from a `basic_info` reply: `null` when it carries
53
42
  * no `method`. */
54
43
  export function parseClassicOutOfHomeAccess(fields) {
55
44
  return fields.method === undefined
56
45
  ? null
57
- : fields.method === REMOTE_METHOD_POLLING;
46
+ : fields.method === CLASSIC_REMOTE_METHODS.polling;
58
47
  }
59
48
  /** Turns `current`, the `get_remote_method` reply, and `enabled` into the
60
49
  * `set_remote_method` query. The endpoint takes the intervals back unchanged,
61
50
  * so the reply's `notice_ip_int` and `notice_sync_int` are copied in. */
62
51
  export function applyClassicOutOfHomeAccess(current, enabled) {
63
52
  const query = {
64
- method: enabled ? REMOTE_METHOD_POLLING : REMOTE_METHOD_HOME_ONLY,
53
+ method: enabled
54
+ ? CLASSIC_REMOTE_METHODS.polling
55
+ : CLASSIC_REMOTE_METHODS.homeOnly,
65
56
  };
66
57
  for (const key of REMOTE_METHOD_INTERVALS) {
67
58
  const value = current[key];
@@ -112,7 +103,7 @@ export function encodeClassicTerminalKey(key) {
112
103
  return { key };
113
104
  }
114
105
  export function encodeClassicTerminalScope(scope) {
115
- return { type: TERMINAL_SCOPE_CODES[scope] };
106
+ return { type: CLASSIC_TERMINAL_SCOPE_CODES[scope] };
116
107
  }
117
108
  function flag(on) {
118
109
  return on ? "1" : "0";