homebridge-dyson-solarcycle-morph 1.4.2 → 1.4.3

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/CHANGELOG.md CHANGED
@@ -5,6 +5,53 @@ All notable changes to this project are documented here.
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.4.3] — 2026-09-22
9
+
10
+ ### Fixed
11
+
12
+ - **A setting the lamp refuses is no longer reported as applied.** The lamp
13
+ answers every write to its location with a success status and then, on some
14
+ lamps, keeps its own value — so coordinates put in the configuration could sit
15
+ there for months doing nothing while the log claimed on every connection that
16
+ they had been applied. Measured on a CF06: roughly fifteen writes across a
17
+ day, every one acknowledged, the factory location still in place afterwards,
18
+ and the same lamp accepting the coordinates from the MyDyson app minutes
19
+ later. What the app does differently is not yet known.
20
+
21
+ Writes to the location and the time zone are now read back and checked, and a
22
+ refusal is logged as a refusal. If your lamp is one of these, set the location
23
+ once in the MyDyson app: daylight tracking needs the lamp to *have* a
24
+ location, not to have been given one by this plugin, and the Daylight switch
25
+ works normally once it does.
26
+
27
+ ### Added
28
+
29
+ - **The log says what the lamp makes of its location.** Once a connection is up:
30
+
31
+ ```
32
+ F0:B1:A7:75:B1:D1 puts today's daylight between 07:09 and 19:22
33
+ ```
34
+
35
+ This is the lamp's own sunrise and sunset, and the only honest answer to
36
+ whether daylight tracking is really running. The Daylight switch is not: the
37
+ lamp accepts the mode, acknowledges it, never reports it back off, and then
38
+ does nothing at all if it has no location to work from — saying so only
39
+ through a small LED on its own base. A lamp in that state now says so in the
40
+ log instead.
41
+
42
+ - **The lamp is told what time zone it is in.** Daylight tracking turns a place
43
+ into an hour, so the lamp needs the time zone as well as the coordinates, and
44
+ the MyDyson app writes both on every connection. This plugin only ever wrote
45
+ the coordinates. The offset and the daylight-saving rules now go in beside
46
+ them, and only when the lamp disagrees, so a lamp already holding the right
47
+ values is never written to.
48
+
49
+ Both come from the time zone of the machine Homebridge runs on — no setting to
50
+ fill in, and nothing asked over the network, which matters because these are
51
+ written while reconnecting, exactly when the network may still be down. A time
52
+ zone whose clock changes on a pattern this cannot state is left alone rather
53
+ than guessed at.
54
+
8
55
  ## [1.4.2] — 2026-09-22
9
56
 
10
57
  ### Fixed
package/README.md CHANGED
@@ -248,6 +248,23 @@ lamp was set up on, and never asks again — so a lamp added through the app
248
248
  already knows, and one that has moved house still believes it is at the old
249
249
  address.
250
250
 
251
+ > **Not every lamp accepts them.** One CF06 measured on 2026-09-22 acknowledged
252
+ > both coordinates and stored neither — roughly fifteen attempts across a day,
253
+ > every one reported as successful by the lamp itself, and the factory location
254
+ > still in place afterwards. The same lamp took them from the MyDyson app
255
+ > minutes later. Nobody has yet worked out what the app does differently. The
256
+ > plugin now reads the values back after writing and says plainly in the log
257
+ > when they did not stick:
258
+ >
259
+ > ```
260
+ > F0:B1:A7:75:B1:D1 would not take the latitude: it acknowledges the write and
261
+ > keeps its own value. Set it in the MyDyson app instead — see the README.
262
+ > ```
263
+ >
264
+ > If you see that, set the location once in the MyDyson app. It sticks, and
265
+ > daylight tracking works from then on — including through the plugin, which
266
+ > needs the lamp to *have* a location but not to have been the one to give it.
267
+
251
268
  The two fields exist to set the coordinates without the app, and to correct them
252
269
  afterwards. Leave them empty and the plugin does not touch what the lamp holds —
253
270
  it still reads them on connecting and puts them in the debug log, which is the
@@ -273,6 +290,31 @@ connection goes out through a VPN. Nothing is sent to either service: they read
273
290
  the public address the request arrives from, which is what every site this
274
291
  machine contacts already sees. Check what it filled in before saving.
275
292
 
293
+ ### And what time it is there
294
+
295
+ Coordinates alone are not enough: the lamp turns them into a sunrise using a
296
+ clock, and it keeps neither reliably. **Take the lamp off the mains and it comes
297
+ back holding Dyson's own coordinates in Wiltshire**, and its offset from UTC has
298
+ been seen an hour out with nobody having written it. A lamp in that state blinks
299
+ a few times when daylight tracking is switched on and then drops out of it —
300
+ from the Home app and from the button on its base alike, because nothing is
301
+ wrong with the command.
302
+
303
+ So the plugin puts the time zone in beside the coordinates, on every connection,
304
+ and only when the lamp disagrees:
305
+
306
+ ```
307
+ UTC offset of F0:B1:A7:75:B1:D1 set to 2 (was 1)
308
+ ```
309
+
310
+ **There is nothing to configure.** Both the offset and the daylight-saving rules
311
+ come from the time zone of the machine Homebridge runs on, which already knows
312
+ them exactly and knows them without asking the network — worth having, since
313
+ these go in while reconnecting, which after a power cut is the moment the
314
+ network is least likely to be up. A time zone whose clock changes on a pattern
315
+ the lamp has no way of being told is left alone rather than guessed at; the
316
+ common European and British rules are exact.
317
+
276
318
  ### Age adjustment
277
319
 
278
320
  The lamp can trim the brightness of its **Study and Relax modes** to suit the
@@ -316,8 +316,39 @@ export declare class DysonMorphLamp extends EventEmitter {
316
316
  * Read first, write only on a difference: these are settings rather than
317
317
  * controls, and rewriting them every connection would be churn on a channel
318
318
  * shared with the mode switches.
319
+ *
320
+ * **Some lamps will not take them at all.** Measured on a CF06 on 2026-09-22:
321
+ * both coordinates acknowledged with status `00`, neither stored, not even
322
+ * for the rest of the session, across roughly fifteen attempts in a day. The
323
+ * same lamp took the coordinates from the MyDyson app minutes later. Until
324
+ * somebody works out what the app does differently, the write is attempted,
325
+ * checked, and reported honestly when it fails — see {@link writeAndVerify}.
319
326
  */
320
327
  private syncLocation;
328
+ /**
329
+ * Put the host's time zone in the lamp, so it can turn a place into an hour.
330
+ *
331
+ * Sunrise needs a position *and* a clock. The MyDyson app writes the offset
332
+ * and the daylight-saving rules on every connection (`nd0/e.java`), taking
333
+ * both from the phone; this takes them from the host, which knows them
334
+ * exactly and knows them without asking the network — worth having, because
335
+ * these go out while reconnecting.
336
+ *
337
+ * Written only when the lamp disagrees, so a lamp that already holds the
338
+ * right values is never touched and the log stays quiet. Some lamps refuse
339
+ * the offset outright and say otherwise; see {@link writeAndVerify}.
340
+ */
341
+ private syncClock;
342
+ /**
343
+ * Say what the lamp makes of its location, for the log.
344
+ *
345
+ * These two are the only honest answer to "is daylight tracking actually
346
+ * running?". The mode attribute is no answer at all — the lamp takes the
347
+ * write, acknowledges it, never reports it back off, and then does nothing if
348
+ * it has no location to work from, saying so only through a small LED on its
349
+ * base. Sunrise and sunset are what it has actually computed.
350
+ */
351
+ private reportDaylightHours;
321
352
  /**
322
353
  * Put the configured age adjustment in the lamp.
323
354
  *
@@ -359,6 +390,24 @@ export declare class DysonMorphLamp extends EventEmitter {
359
390
  private writeAttribute;
360
391
  /** Ask the lamp for one coordinate, in degrees. */
361
392
  private readCoordinate;
393
+ /**
394
+ * Write an attribute and check the lamp actually took it.
395
+ *
396
+ * The acknowledgement is not proof for the settings behind daylight tracking.
397
+ * `0x2003`, `0x2004` and `0x2005` are all answered with status `00` and then,
398
+ * on some lamps, simply not stored — measured on a CF06 on 2026-09-22 by
399
+ * reading them back in the same session, immediately after the write. A
400
+ * plugin that believed the reply reported success for months while the lamp
401
+ * sat on the factory location.
402
+ *
403
+ * Tried once, not repeated. Repetition is the answer to most of this lamp's
404
+ * refusals, but not this one: five attempts in a row were refused just as
405
+ * uniformly as one, and each costs a write and a read on a link that would
406
+ * rather be left alone.
407
+ *
408
+ * @returns whether the lamp ended up holding the wanted value.
409
+ */
410
+ private writeAndVerify;
362
411
  private refreshState;
363
412
  /** Read what the lamp currently reports. Values it will not give up are absent. */
364
413
  private readState;
@@ -18,7 +18,8 @@ import { PendingModes } from './pending.js';
18
18
  import { OperationQueue } from './queue.js';
19
19
  import { planReconciliation } from './reconcile.js';
20
20
  import { SettleWindow } from './settle.js';
21
- import { CHAR_AUTH, CHAR_BRIGHTNESS_LM, CHAR_COLOR_TEMP, CHAR_AUTO_BRIGHTNESS, CHAR_MOVEMENT, CHAR_POWER, CHAR_RSSI, CHAR_WRITE_ATTR, attributeValue, buildAgeAdjustWrite, buildAttributeRead, buildCoordinateWrite, buildDaylightWrite, buildPresetWrite, buildYearOfBirthSetAt, buildYearOfBirthWrite, decodeYearOfBirth, encodeYearOfBirth, ATTR_AGE_ADJUST, ATTR_DAYLIGHT, ATTR_YEAR_OF_BIRTH, ATTR_YEAR_OF_BIRTH_SET_AT, COORDINATES, PRESETS, decodeAttributeReport, decodeAttributeValue, MAX_KELVIN, MessageAssembler, MIN_KELVIN, MsgType, fragmentMessage, lumensToPercent, percentToLumens, } from './protocol.js';
21
+ import { daylightSavingRules, utcOffset } from './timezone.js';
22
+ import { CHAR_AUTH, CHAR_BRIGHTNESS_LM, CHAR_COLOR_TEMP, CHAR_AUTO_BRIGHTNESS, CHAR_MOVEMENT, CHAR_POWER, CHAR_RSSI, CHAR_WRITE_ATTR, attributeValue, buildAgeAdjustWrite, buildAttributeRead, buildCoordinateWrite, buildDaylightWrite, buildPresetWrite, buildYearOfBirthSetAt, buildYearOfBirthWrite, decodeYearOfBirth, encodeYearOfBirth, ATTR_AGE_ADJUST, ATTR_DST_RULES, ATTR_SUNRISE, ATTR_SUNSET, ATTR_UTC_OFFSET, buildDstRulesWrite, buildUtcOffsetWrite, ATTR_DAYLIGHT, ATTR_YEAR_OF_BIRTH, ATTR_YEAR_OF_BIRTH_SET_AT, COORDINATES, PRESETS, decodeAttributeReport, decodeAttributeValue, MAX_KELVIN, MessageAssembler, MIN_KELVIN, MsgType, fragmentMessage, lumensToPercent, percentToLumens, } from './protocol.js';
22
23
  /** Characteristics we look for. Anything else the lamp exposes is ignored. */
23
24
  const WANTED_CHARACTERISTICS = new Set([
24
25
  CHAR_AUTH,
@@ -147,6 +148,8 @@ const ATTRIBUTE_REPLY_MS = 2_000;
147
148
  * then with no cause anyone has managed to isolate, and the acknowledgement is
148
149
  * what makes retrying possible rather than hopeful.
149
150
  */
151
+ /** How long to let a write land before reading it back to check. */
152
+ const ATTRIBUTE_SETTLE_GAP_MS = 300;
150
153
  const ATTRIBUTE_WRITE_ATTEMPTS = 3;
151
154
  const ATTRIBUTE_WRITE_RETRY_MS = 400;
152
155
  /**
@@ -583,6 +586,8 @@ export class DysonMorphLamp extends EventEmitter {
583
586
  await this.subscribeToState();
584
587
  await this.readDaylight();
585
588
  await this.syncLocation();
589
+ await this.syncClock();
590
+ await this.reportDaylightHours();
586
591
  await this.syncAgeAdjust();
587
592
  await this.subscribeToSignal();
588
593
  this.startPolling();
@@ -830,6 +835,13 @@ export class DysonMorphLamp extends EventEmitter {
830
835
  * Read first, write only on a difference: these are settings rather than
831
836
  * controls, and rewriting them every connection would be churn on a channel
832
837
  * shared with the mode switches.
838
+ *
839
+ * **Some lamps will not take them at all.** Measured on a CF06 on 2026-09-22:
840
+ * both coordinates acknowledged with status `00`, neither stored, not even
841
+ * for the rest of the session, across roughly fifteen attempts in a day. The
842
+ * same lamp took the coordinates from the MyDyson app minutes later. Until
843
+ * somebody works out what the app does differently, the write is attempted,
844
+ * checked, and reported honestly when it fails — see {@link writeAndVerify}.
833
845
  */
834
846
  async syncLocation() {
835
847
  if (!this.chars[CHAR_WRITE_ATTR]) {
@@ -853,12 +865,13 @@ export class DysonMorphLamp extends EventEmitter {
853
865
  if (settled) {
854
866
  return;
855
867
  }
868
+ const near = (value, degrees) => value?.length === 8 && Math.abs(value.readDoubleLE(0) - degrees) < COORDINATE_EPSILON;
856
869
  let written = false;
857
870
  try {
858
871
  written = (await this.enqueue(async () => {
859
- const latitude = await this.writeAttribute(COORDINATES.latitude, buildCoordinateWrite('latitude', wanted.latitude), 'latitude');
872
+ const latitude = await this.writeAndVerify(COORDINATES.latitude, buildCoordinateWrite('latitude', wanted.latitude), (value) => near(value, wanted.latitude), 'latitude');
860
873
  await sleep(COORDINATE_WRITE_GAP_MS);
861
- const longitude = await this.writeAttribute(COORDINATES.longitude, buildCoordinateWrite('longitude', wanted.longitude), 'longitude');
874
+ const longitude = await this.writeAndVerify(COORDINATES.longitude, buildCoordinateWrite('longitude', wanted.longitude), (value) => near(value, wanted.longitude), 'longitude');
862
875
  return latitude && longitude;
863
876
  })) === true;
864
877
  }
@@ -874,6 +887,82 @@ export class DysonMorphLamp extends EventEmitter {
874
887
  : '';
875
888
  this.log.info(`Location of ${this.mac} set to ${describeLocation(wanted)}${was}`);
876
889
  }
890
+ /**
891
+ * Put the host's time zone in the lamp, so it can turn a place into an hour.
892
+ *
893
+ * Sunrise needs a position *and* a clock. The MyDyson app writes the offset
894
+ * and the daylight-saving rules on every connection (`nd0/e.java`), taking
895
+ * both from the phone; this takes them from the host, which knows them
896
+ * exactly and knows them without asking the network — worth having, because
897
+ * these go out while reconnecting.
898
+ *
899
+ * Written only when the lamp disagrees, so a lamp that already holds the
900
+ * right values is never touched and the log stays quiet. Some lamps refuse
901
+ * the offset outright and say otherwise; see {@link writeAndVerify}.
902
+ */
903
+ async syncClock() {
904
+ if (!this.chars[CHAR_WRITE_ATTR]) {
905
+ return;
906
+ }
907
+ const offset = await this.readAttribute(ATTR_UTC_OFFSET, 'UTC offset');
908
+ const rules = await this.readAttribute(ATTR_DST_RULES, 'daylight-saving rules');
909
+ this.log.debug(`Clock of ${this.mac}: UTC offset ${describeUtcOffset(offset)}, ` +
910
+ `daylight-saving rules ${describeDstRules(rules)}`);
911
+ const wantedOffset = utcOffset();
912
+ // A float's own rounding, not a tolerance for being wrong: the lamp stores
913
+ // four bytes and reads back what fits in them.
914
+ const offsetMatches = (value) => value?.length === 4 && Math.abs(value.readFloatLE(0) - wantedOffset) < 0.005;
915
+ if (!offsetMatches(offset)) {
916
+ const settled = await this.enqueue(() => this.writeAndVerify(ATTR_UTC_OFFSET, buildUtcOffsetWrite(wantedOffset), offsetMatches, 'UTC offset'));
917
+ if (settled === true) {
918
+ this.log.info(`UTC offset of ${this.mac} set to ${wantedOffset}` +
919
+ (offset?.length === 4 ? ` (was ${offset.readFloatLE(0)})` : ''));
920
+ }
921
+ }
922
+ const wantedRules = daylightSavingRules();
923
+ if (!wantedRules) {
924
+ // A zone whose rules this cannot state; see daylightSavingRules. Leaving
925
+ // the lamp's own is the honest answer.
926
+ this.log.debug(`No daylight-saving rules to give ${this.mac} for this time zone`);
927
+ return;
928
+ }
929
+ const rulesMatch = (value) => value?.equals(wantedRules) === true;
930
+ if (rulesMatch(rules)) {
931
+ return;
932
+ }
933
+ await sleep(COORDINATE_WRITE_GAP_MS);
934
+ const settled = await this.enqueue(() => this.writeAndVerify(ATTR_DST_RULES, buildDstRulesWrite(wantedRules), rulesMatch, 'daylight-saving rules'));
935
+ if (settled === true) {
936
+ this.log.info(`Daylight-saving rules of ${this.mac} set to ${describeDstRules(wantedRules)}` +
937
+ (rules ? ` (was ${rules.toString('hex')})` : ''));
938
+ }
939
+ }
940
+ /**
941
+ * Say what the lamp makes of its location, for the log.
942
+ *
943
+ * These two are the only honest answer to "is daylight tracking actually
944
+ * running?". The mode attribute is no answer at all — the lamp takes the
945
+ * write, acknowledges it, never reports it back off, and then does nothing if
946
+ * it has no location to work from, saying so only through a small LED on its
947
+ * base. Sunrise and sunset are what it has actually computed.
948
+ */
949
+ async reportDaylightHours() {
950
+ if (!this.chars[CHAR_WRITE_ATTR]) {
951
+ return;
952
+ }
953
+ const minutes = (value) => value?.length === 2 ? value.readUInt16LE(0) : undefined;
954
+ const sunrise = minutes(await this.readAttribute(ATTR_SUNRISE, 'sunrise'));
955
+ const sunset = minutes(await this.readAttribute(ATTR_SUNSET, 'sunset'));
956
+ if (sunrise === undefined || sunset === undefined) {
957
+ return;
958
+ }
959
+ if (sunrise === 0 && sunset === 0) {
960
+ this.log.warn(`${this.mac} has worked out no sunrise or sunset, which means it holds no location. ` +
961
+ 'Daylight tracking cannot run until one is set; see the README.');
962
+ return;
963
+ }
964
+ this.log.info(`${this.mac} puts today's daylight between ${clock(sunrise)} and ${clock(sunset)}`);
965
+ }
877
966
  /**
878
967
  * Put the configured age adjustment in the lamp.
879
968
  *
@@ -1034,6 +1123,33 @@ export class DysonMorphLamp extends EventEmitter {
1034
1123
  const value = await this.readAttribute(COORDINATES[coordinate], coordinate);
1035
1124
  return value?.length === 8 ? value.readDoubleLE(0) : undefined;
1036
1125
  }
1126
+ /**
1127
+ * Write an attribute and check the lamp actually took it.
1128
+ *
1129
+ * The acknowledgement is not proof for the settings behind daylight tracking.
1130
+ * `0x2003`, `0x2004` and `0x2005` are all answered with status `00` and then,
1131
+ * on some lamps, simply not stored — measured on a CF06 on 2026-09-22 by
1132
+ * reading them back in the same session, immediately after the write. A
1133
+ * plugin that believed the reply reported success for months while the lamp
1134
+ * sat on the factory location.
1135
+ *
1136
+ * Tried once, not repeated. Repetition is the answer to most of this lamp's
1137
+ * refusals, but not this one: five attempts in a row were refused just as
1138
+ * uniformly as one, and each costs a write and a read on a link that would
1139
+ * rather be left alone.
1140
+ *
1141
+ * @returns whether the lamp ended up holding the wanted value.
1142
+ */
1143
+ async writeAndVerify(attribute, fragments, matches, label) {
1144
+ await this.writeAttribute(attribute, fragments, label);
1145
+ await sleep(ATTRIBUTE_SETTLE_GAP_MS);
1146
+ if (matches(await this.readAttribute(attribute, label))) {
1147
+ return true;
1148
+ }
1149
+ this.log.warn(`${this.mac} would not take the ${label}: it acknowledges the write and keeps its own value. ` +
1150
+ 'Set it in the MyDyson app instead — see the README.');
1151
+ return false;
1152
+ }
1037
1153
  async refreshState() {
1038
1154
  this.patchState(this.pending.filter(await this.readState()));
1039
1155
  }
@@ -1414,6 +1530,34 @@ export function describeState(state) {
1414
1530
  * Five decimal places is about a metre, which is as fine as the lamp's own use
1415
1531
  * of it — sunrise and sunset — can possibly care about.
1416
1532
  */
1533
+ /** Minutes past midnight as a wall clock, for the log. */
1534
+ function clock(minutes) {
1535
+ return `${String(Math.floor(minutes / 60)).padStart(2, '0')}:${String(minutes % 60).padStart(2, '0')}`;
1536
+ }
1537
+ function describeUtcOffset(value) {
1538
+ if (value === undefined) {
1539
+ return 'no answer';
1540
+ }
1541
+ // Hours.minutes, so 5.30 is half past five and not 5.5 hours; see
1542
+ // ATTR_UTC_OFFSET. Printed raw, because the point here is what the lamp holds.
1543
+ return value.length === 4 ? `${value.readFloatLE(0)}` : `unreadable (${value.toString('hex')})`;
1544
+ }
1545
+ function describeDstRules(value) {
1546
+ if (value === undefined) {
1547
+ return 'no answer';
1548
+ }
1549
+ if (value.length !== 8) {
1550
+ return `unreadable (${value.toString('hex')})`;
1551
+ }
1552
+ const [start, startDate, startTime, adjustment, end, endDate, endTime, days] = value;
1553
+ const nibbles = (byte) => [byte >> 4, byte & 0x0f];
1554
+ const [startRule, startMonth] = nibbles(start);
1555
+ const [endRule, endMonth] = nibbles(end);
1556
+ const [endDay, startDay] = nibbles(days);
1557
+ return (`${value.toString('hex')} — start rule ${startRule} month ${startMonth} date ${startDate} ` +
1558
+ `at ${startTime} min, adjustment ${adjustment} min; end rule ${endRule} month ${endMonth} ` +
1559
+ `date ${endDate} at ${endTime} min; days ${startDay}/${endDay}`);
1560
+ }
1417
1561
  function describeLocation(location) {
1418
1562
  return `${location.latitude.toFixed(5)}, ${location.longitude.toFixed(5)}`;
1419
1563
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lamp.js","sourceRoot":"","sources":["../../src/dyson/lamp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lamp.js","sourceRoot":"","sources":["../../src/dyson/lamp.ts"],"names":[],"mappings":"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"}
@@ -123,6 +123,52 @@ export declare const COORDINATES: {
123
123
  readonly longitude: 8196;
124
124
  };
125
125
  export type Coordinate = keyof typeof COORDINATES;
126
+ /**
127
+ * The lamp's clock: how far it is from UTC, and when its local time jumps.
128
+ *
129
+ * `0x2005` is the offset as a little-endian `float`, and it is written
130
+ * **hours.minutes rather than decimal hours** (`pd0/d.java`): the app takes
131
+ * `getRawOffset() + DST_OFFSET` in hours and rebuilds it as the whole part plus
132
+ * the fraction times 0.6, rounded to two places. So half past five reads `5.30`,
133
+ * not `5.5`. Germany in summer is `2.0` under either reading, which is why the
134
+ * encoding went unnoticed until the app was read closely.
135
+ *
136
+ * `0x201d` carries the daylight-saving rules in eight bytes (`pd0/a.java`):
137
+ * start rule and month packed into one byte, start date, start time in minutes,
138
+ * the adjustment in minutes, then the same three for the end, and finally the
139
+ * two days of the week packed together. A packed byte is `(rule << 4) | month`
140
+ * (`bm0/c.java`'s `a()`, which builds it from two hex nibbles and so refuses
141
+ * anything above 15).
142
+ *
143
+ * The app fills both on **every connection** (`nd0/e.java`), 500 ms after the
144
+ * coordinates: the offset from the phone's own time zone, and the rules from a
145
+ * Dyson cloud endpoint keyed by the zone's IANA id (`pj0/b.java`).
146
+ */
147
+ export declare const ATTR_UTC_OFFSET = 8197;
148
+ /**
149
+ * When the lamp's own day starts and ends, in minutes past midnight.
150
+ *
151
+ * Read as 480 and 1080 — 08:00 and 18:00 — and written by the app as plain
152
+ * two-byte counts (`he0/u.java`). The settings screen calls them "when your day
153
+ * starts and ends" and the lamp falls back to its baseline once the day is
154
+ * over, natural or custom.
155
+ */
156
+ /**
157
+ * The lamp's own sunrise and sunset for today, minutes past local midnight.
158
+ *
159
+ * Worked out by the lamp from its coordinates and its UTC offset, and the only
160
+ * way to see from outside whether it has actually taken a location: the
161
+ * daylight attribute accepts a write whether or not the lamp can act on it, and
162
+ * a lamp with no location refuses the mode with nothing but an LED on its base.
163
+ *
164
+ * Checked against a NOAA calculation for 48.6719, 9.2807 on two dates and
165
+ * agreeing to the minute; see docs/PROTOCOL.md.
166
+ */
167
+ export declare const ATTR_SUNRISE = 8212;
168
+ export declare const ATTR_SUNSET = 8213;
169
+ export declare const ATTR_DAY_START = 8227;
170
+ export declare const ATTR_DAY_END = 8228;
171
+ export declare const ATTR_DST_RULES = 8221;
126
172
  /**
127
173
  * Age adjustment: the lamp trims Study and Relax brightness for the eyes of
128
174
  * someone born in a given year.
@@ -184,6 +230,15 @@ export declare function attributeValue(buffer: Buffer, attribute: number): Buffe
184
230
  * Both lengths are little-endian, matching every other multi-byte value here.
185
231
  */
186
232
  export declare function buildAttributeWrite(attribute: number, value: Buffer): Buffer[];
233
+ /**
234
+ * Tell the lamp how far it is from UTC.
235
+ *
236
+ * A little-endian `float`, and the value is hours.minutes rather than decimal
237
+ * hours; see {@link ATTR_UTC_OFFSET} and `utcOffset` in `timezone.ts`.
238
+ */
239
+ export declare function buildUtcOffsetWrite(offset: number): Buffer[];
240
+ /** Give the lamp the eight bytes that say when the local clock jumps. */
241
+ export declare function buildDstRulesWrite(rules: Buffer): Buffer[];
187
242
  /** Switch daylight tracking on or off. */
188
243
  export declare function buildDaylightWrite(on: boolean): Buffer[];
189
244
  /** Activate a preset, or clear it. */
@@ -124,6 +124,52 @@ export const COORDINATES = {
124
124
  latitude: 0x2003,
125
125
  longitude: 0x2004,
126
126
  };
127
+ /**
128
+ * The lamp's clock: how far it is from UTC, and when its local time jumps.
129
+ *
130
+ * `0x2005` is the offset as a little-endian `float`, and it is written
131
+ * **hours.minutes rather than decimal hours** (`pd0/d.java`): the app takes
132
+ * `getRawOffset() + DST_OFFSET` in hours and rebuilds it as the whole part plus
133
+ * the fraction times 0.6, rounded to two places. So half past five reads `5.30`,
134
+ * not `5.5`. Germany in summer is `2.0` under either reading, which is why the
135
+ * encoding went unnoticed until the app was read closely.
136
+ *
137
+ * `0x201d` carries the daylight-saving rules in eight bytes (`pd0/a.java`):
138
+ * start rule and month packed into one byte, start date, start time in minutes,
139
+ * the adjustment in minutes, then the same three for the end, and finally the
140
+ * two days of the week packed together. A packed byte is `(rule << 4) | month`
141
+ * (`bm0/c.java`'s `a()`, which builds it from two hex nibbles and so refuses
142
+ * anything above 15).
143
+ *
144
+ * The app fills both on **every connection** (`nd0/e.java`), 500 ms after the
145
+ * coordinates: the offset from the phone's own time zone, and the rules from a
146
+ * Dyson cloud endpoint keyed by the zone's IANA id (`pj0/b.java`).
147
+ */
148
+ export const ATTR_UTC_OFFSET = 0x2005;
149
+ /**
150
+ * When the lamp's own day starts and ends, in minutes past midnight.
151
+ *
152
+ * Read as 480 and 1080 — 08:00 and 18:00 — and written by the app as plain
153
+ * two-byte counts (`he0/u.java`). The settings screen calls them "when your day
154
+ * starts and ends" and the lamp falls back to its baseline once the day is
155
+ * over, natural or custom.
156
+ */
157
+ /**
158
+ * The lamp's own sunrise and sunset for today, minutes past local midnight.
159
+ *
160
+ * Worked out by the lamp from its coordinates and its UTC offset, and the only
161
+ * way to see from outside whether it has actually taken a location: the
162
+ * daylight attribute accepts a write whether or not the lamp can act on it, and
163
+ * a lamp with no location refuses the mode with nothing but an LED on its base.
164
+ *
165
+ * Checked against a NOAA calculation for 48.6719, 9.2807 on two dates and
166
+ * agreeing to the minute; see docs/PROTOCOL.md.
167
+ */
168
+ export const ATTR_SUNRISE = 0x2014;
169
+ export const ATTR_SUNSET = 0x2015;
170
+ export const ATTR_DAY_START = 0x2023;
171
+ export const ATTR_DAY_END = 0x2024;
172
+ export const ATTR_DST_RULES = 0x201d;
127
173
  /**
128
174
  * Age adjustment: the lamp trims Study and Relax brightness for the eyes of
129
175
  * someone born in a given year.
@@ -217,6 +263,21 @@ export function buildAttributeWrite(attribute, value) {
217
263
  header.writeUInt16LE(value.length, 2);
218
264
  return fragmentMessage(MsgType.ATTRIBUTE_SET, Buffer.concat([header, value]));
219
265
  }
266
+ /**
267
+ * Tell the lamp how far it is from UTC.
268
+ *
269
+ * A little-endian `float`, and the value is hours.minutes rather than decimal
270
+ * hours; see {@link ATTR_UTC_OFFSET} and `utcOffset` in `timezone.ts`.
271
+ */
272
+ export function buildUtcOffsetWrite(offset) {
273
+ const payload = Buffer.alloc(4);
274
+ payload.writeFloatLE(offset);
275
+ return buildAttributeWrite(ATTR_UTC_OFFSET, payload);
276
+ }
277
+ /** Give the lamp the eight bytes that say when the local clock jumps. */
278
+ export function buildDstRulesWrite(rules) {
279
+ return buildAttributeWrite(ATTR_DST_RULES, rules);
280
+ }
220
281
  /** Switch daylight tracking on or off. */
221
282
  export function buildDaylightWrite(on) {
222
283
  return buildAttributeWrite(ATTR_DAYLIGHT, Buffer.from([on ? 0x01 : 0x00]));
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/dyson/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/dyson/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The lamp's clock, worked out from the machine the plugin runs on.
3
+ *
4
+ * Daylight tracking needs two things the lamp cannot discover for itself: where
5
+ * it is, and what the time is there. The first comes from the configuration.
6
+ * The second is already known to the Homebridge host — it has a time zone, and
7
+ * that zone carries both the current offset and the dates the local clock jumps
8
+ * — so nothing here asks the network, which matters because these values are
9
+ * written while reconnecting, exactly when the network may not be up yet.
10
+ *
11
+ * The MyDyson app gets the same two from the phone: the offset from its own
12
+ * time zone, and the rules from a Dyson cloud endpoint keyed by the zone's name
13
+ * (`nd0/e.java`, `pj0/b.java`). The lamp cannot tell the difference.
14
+ */
15
+ /** Minutes east of UTC at an instant. Injectable so tests need not move the machine. */
16
+ export type OffsetAt = (instant: Date) => number;
17
+ /**
18
+ * The offset the lamp wants in `0x2005`, which is **hours.minutes**.
19
+ *
20
+ * Not decimal hours: the app takes the offset in hours and rebuilds it as the
21
+ * whole part plus the fraction times 0.6 (`nd0/e.java`), so half past five is
22
+ * `5.30` rather than `5.5`. A whole-hour zone reads the same either way, which
23
+ * is why the encoding stayed hidden until the app was read closely.
24
+ */
25
+ export declare function utcOffset(now?: Date, offsetAt?: OffsetAt): number;
26
+ /**
27
+ * The eight bytes the lamp wants in `0x201d`, or nothing when the zone's rules
28
+ * cannot be stated in the form it takes.
29
+ *
30
+ * Silence is deliberate. Only one rule number is known for certain — `2`, the
31
+ * last given weekday of a month, read back from a lamp holding the EU rule —
32
+ * and a zone that changes its clock on some other pattern would need a number
33
+ * this project has never seen. Writing a guess would leave the lamp tracking
34
+ * daylight against rules nobody has checked, which is worse than leaving the
35
+ * ones it already has.
36
+ */
37
+ export declare function daylightSavingRules(now?: Date, offsetAt?: OffsetAt): Buffer | undefined;
@@ -0,0 +1,136 @@
1
+ /**
2
+ * The lamp's clock, worked out from the machine the plugin runs on.
3
+ *
4
+ * Daylight tracking needs two things the lamp cannot discover for itself: where
5
+ * it is, and what the time is there. The first comes from the configuration.
6
+ * The second is already known to the Homebridge host — it has a time zone, and
7
+ * that zone carries both the current offset and the dates the local clock jumps
8
+ * — so nothing here asks the network, which matters because these values are
9
+ * written while reconnecting, exactly when the network may not be up yet.
10
+ *
11
+ * The MyDyson app gets the same two from the phone: the offset from its own
12
+ * time zone, and the rules from a Dyson cloud endpoint keyed by the zone's name
13
+ * (`nd0/e.java`, `pj0/b.java`). The lamp cannot tell the difference.
14
+ */
15
+ const hostOffset = (instant) => -instant.getTimezoneOffset();
16
+ /** Days scanned when looking for the two clock changes in a year. */
17
+ const DAYS_IN_YEAR = 366;
18
+ /**
19
+ * The offset the lamp wants in `0x2005`, which is **hours.minutes**.
20
+ *
21
+ * Not decimal hours: the app takes the offset in hours and rebuilds it as the
22
+ * whole part plus the fraction times 0.6 (`nd0/e.java`), so half past five is
23
+ * `5.30` rather than `5.5`. A whole-hour zone reads the same either way, which
24
+ * is why the encoding stayed hidden until the app was read closely.
25
+ */
26
+ export function utcOffset(now = new Date(), offsetAt = hostOffset) {
27
+ const minutes = offsetAt(now);
28
+ const sign = minutes < 0 ? -1 : 1;
29
+ const magnitude = Math.abs(minutes);
30
+ return sign * (Math.trunc(magnitude / 60) + (magnitude % 60) / 100);
31
+ }
32
+ /**
33
+ * The eight bytes the lamp wants in `0x201d`, or nothing when the zone's rules
34
+ * cannot be stated in the form it takes.
35
+ *
36
+ * Silence is deliberate. Only one rule number is known for certain — `2`, the
37
+ * last given weekday of a month, read back from a lamp holding the EU rule —
38
+ * and a zone that changes its clock on some other pattern would need a number
39
+ * this project has never seen. Writing a guess would leave the lamp tracking
40
+ * daylight against rules nobody has checked, which is worse than leaving the
41
+ * ones it already has.
42
+ */
43
+ export function daylightSavingRules(now = new Date(), offsetAt = hostOffset) {
44
+ const changes = transitions(now.getUTCFullYear(), offsetAt);
45
+ if (changes.length !== 2) {
46
+ // No daylight saving at all, or a zone that changes more than twice.
47
+ return undefined;
48
+ }
49
+ // Which is which by direction, not by date: south of the equator the clock
50
+ // goes forward in the second half of the year.
51
+ const start = changes.find((change) => change.after > change.before);
52
+ const end = changes.find((change) => change.after < change.before);
53
+ if (!start || !end) {
54
+ return undefined;
55
+ }
56
+ const from = describe(start);
57
+ const to = describe(end);
58
+ const adjustment = start.after - start.before;
59
+ if (!from || !to || adjustment < 0 || adjustment > 0xff) {
60
+ return undefined;
61
+ }
62
+ return Buffer.from([
63
+ pack(from.rule, from.month),
64
+ 0, // The date, unused while the rule names a weekday rather than a day.
65
+ from.minutes,
66
+ adjustment,
67
+ pack(to.rule, to.month),
68
+ 0,
69
+ to.minutes,
70
+ pack(to.weekday, from.weekday),
71
+ ]);
72
+ }
73
+ /**
74
+ * State one clock change the way the lamp does.
75
+ *
76
+ * The moment is named in the wall time that was running just before it — the
77
+ * European change is "02:00 on the last Sunday in March", which is 01:00 UTC
78
+ * read in the offset still in force. Reading it in the new offset would name
79
+ * the hour the clock jumped to instead.
80
+ */
81
+ function describe(change) {
82
+ const wall = new Date(change.at + change.before * 60_000);
83
+ const month = wall.getUTCMonth() + 1;
84
+ const lastOfMonth = new Date(Date.UTC(wall.getUTCFullYear(), month, 0)).getUTCDate();
85
+ if (wall.getUTCDate() <= lastOfMonth - 7) {
86
+ // Not the last such weekday of the month, so not a rule we can name.
87
+ return undefined;
88
+ }
89
+ const minutes = wall.getUTCHours() * 60 + wall.getUTCMinutes();
90
+ if (minutes > 0xff) {
91
+ return undefined;
92
+ }
93
+ return {
94
+ rule: 2,
95
+ month,
96
+ minutes,
97
+ // Sunday is 7 here, not 0: the lamp's own EU rule ends in `77`.
98
+ weekday: wall.getUTCDay() === 0 ? 7 : wall.getUTCDay(),
99
+ };
100
+ }
101
+ /** Two nibbles in one byte, as `bm0/c.java`'s `a()` builds them. */
102
+ function pack(high, low) {
103
+ return ((high & 0x0f) << 4) | (low & 0x0f);
104
+ }
105
+ /**
106
+ * Every clock change in a year, found by walking it a day at a time and then
107
+ * halving the day that differs down to the minute.
108
+ *
109
+ * A day-wide sweep is enough to find a change, and the halving costs a handful
110
+ * of lookups to place it exactly. Done once per connection on a value that only
111
+ * moves twice a year, so nothing here is worth caching.
112
+ */
113
+ function transitions(year, offsetAt) {
114
+ const found = [];
115
+ let previous = new Date(Date.UTC(year, 0, 1));
116
+ for (let day = 1; day < DAYS_IN_YEAR; day++) {
117
+ const current = new Date(Date.UTC(year, 0, 1 + day));
118
+ if (offsetAt(current) !== offsetAt(previous)) {
119
+ let low = previous.getTime();
120
+ let high = current.getTime();
121
+ while (high - low > 60_000) {
122
+ const middle = Math.floor((low + high) / 2 / 60_000) * 60_000;
123
+ if (offsetAt(new Date(middle)) === offsetAt(previous)) {
124
+ low = middle;
125
+ }
126
+ else {
127
+ high = middle;
128
+ }
129
+ }
130
+ found.push({ at: high, before: offsetAt(new Date(low)), after: offsetAt(new Date(high)) });
131
+ }
132
+ previous = current;
133
+ }
134
+ return found;
135
+ }
136
+ //# sourceMappingURL=timezone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone.js","sourceRoot":"","sources":["../../src/dyson/timezone.ts"],"names":[],"mappings":"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"}
package/docs/PROTOCOL.md CHANGED
@@ -210,12 +210,12 @@ held, which is a better starting point than the shapes alone.
210
210
  | `0x201b` | `1` | **age adjustment on/off**, one byte |
211
211
  | `0x2006` | `300` | |
212
212
  | `0x2007` | `30` | |
213
- | `0x2014` | `424` | |
214
- | `0x2015` | `1170` | plausibly a lumen bound |
213
+ | `0x2014` | `424` | **sunrise**, minutes past local midnight |
214
+ | `0x2015` | `1170` | **sunset**, minutes past local midnight |
215
215
  | `0x2017` | `200` | plausibly a lumen bound |
216
216
  | `0x2018` | `3000` | plausibly a colour-temperature bound |
217
- | `0x2023` | `480` | |
218
- | `0x2024` | `1080` | |
217
+ | `0x2023` | `480` | **day start**, minutes past midnight — 08:00 |
218
+ | `0x2024` | `1080` | **day end** — 18:00 |
219
219
  | `0x201e` | `0` | **STUDY preset** |
220
220
  | `0x201f` | `0` | **RELAX preset** |
221
221
  | `0x2021` | `0` | **PRECISION preset** |
@@ -257,14 +257,125 @@ longitude, countryCode }` record (`sc0/c.java`). There is no search in the other
257
257
  direction — `getFromLocationName` appears nowhere in the APK — so a place name
258
258
  is a label on coordinates the app already has, never a way to obtain them.
259
259
 
260
- Two neighbours belong to the same setting. `0x2005` is the UTC offset in hours
261
- as a little-endian `float` (`pd0/d.java`); `2.0` was read during German summer
262
- time. `0x201d` carries the daylight-saving rules in eight bytes (`pd0/a.java`):
263
- start rule and month packed into one byte, start date, start time in minutes,
264
- the adjustment in minutes, then the same three for the end, and finally the two
265
- days of the week packed together. The `23 00 78 3c 2a 00 b4 77` above is the EU
266
- rule — last Sunday in March at 02:00, plus 60 minutes, last Sunday in October
267
- at 03:00.
260
+ ### What the lamp makes of it
261
+
262
+ `0x2014` and `0x2015` are the lamp's own sunrise and sunset for today, in
263
+ minutes past local midnight, computed from the coordinates and the UTC offset.
264
+ They are the only way to see from outside whether the lamp has actually taken a
265
+ location, which matters because the daylight attribute accepts a write whether
266
+ or not the lamp can act on it.
267
+
268
+ Checked against a NOAA calculation for 48.6719, 9.2807 on two dates, and they
269
+ agree to the minute:
270
+
271
+ | date | lamp | calculated | offset then |
272
+ | --- | --- | --- | --- |
273
+ | 2026-09-18 | 424 / 1170 | 423 / 1170 | 2 |
274
+ | 2026-09-22 | 489 / 1222 | 489 / 1222 | 3 |
275
+
276
+ The second row is an hour later than the real sunrise in Stuttgart that day,
277
+ because the lamp was holding an offset of 3. Whether that shifts what the lamp
278
+ *does* depends on whether its clock is shifted with it, which has not been
279
+ established.
280
+
281
+ `0x2023` and `0x2024` are the day the user can set by hand — the settings screen
282
+ calls them "when your day starts and ends", and the lamp falls back to its
283
+ baseline once the day is over, natural or custom. Probed on 2026-09-22 by
284
+ writing 490 and reading it back: taken immediately, then restored to 480.
285
+
286
+ ### The location cannot be written by anything but the app
287
+
288
+ **Measured 2026-09-22.** `0x2003` and `0x2004` are acknowledged with status `00`
289
+ and not stored — not after the write, not for the rest of the session, not once
290
+ in roughly fifteen attempts across a day. Reading them back immediately after
291
+ the write returns the factory value every time. Minutes later the MyDyson app
292
+ set the same coordinates and they stuck, and daylight tracking began working at
293
+ once.
294
+
295
+ `0x2005` behaves the same way but not always: a write of 2 over 1 was taken at
296
+ 11:47 while the lamp still held the factory location, and five consecutive
297
+ writes of 2 over 3 were refused at 13:49 after the app had completed the
298
+ location set-up. Writing against a read rather than against the reply does not
299
+ help; that was tried.
300
+
301
+ This is the opposite of everything else on this lamp, where the answer to a
302
+ refusal is repetition. It is also not the framing: `0x2023` takes a write over
303
+ the same path in the same session, and the app's frame is
304
+ `attribute(2) || length(2) || value` (`jr/c.java` case 10), byte for byte what
305
+ `buildAttributeWrite` produces. **What the app does differently is unknown.**
306
+ The one step in its connect routine that this plugin does not perform is the
307
+ beacon-UUID write that opens the chain (`nd0/e.java`, a `primary`/`alternative`
308
+ pair from `c50/a.java`), which is the obvious place to look next.
309
+
310
+ **A refused daylight mode is invisible from the protocol.** `0x2013` accepts the
311
+ write, acknowledges it, and the lamp never reports the mode back off — it simply
312
+ does not act. The lamp says so only through a small LED at the daylight button.
313
+ Colour temperature standing still, and `0x2014`/`0x2015` reading zero or stale,
314
+ are the signals that carry.
315
+
316
+ Those eight connections in one morning that each read back `51.5864, -2.1028`
317
+ and wrote the configured pair again were not the lamp forgetting overnight, as
318
+ first assumed — the lamp had simply never taken the write. See above.
319
+
320
+ The lamp on this rig is taken off the mains overnight, and the year of birth
321
+ survives that, so nothing here is a wholesale reset.
322
+
323
+ ### The clock
324
+
325
+ Two neighbours belong to the same setting. `0x2005` is the UTC offset as a
326
+ little-endian `float` (`pd0/d.java`), and it is written **hours.minutes rather
327
+ than decimal hours**: the app takes `getRawOffset() + DST_OFFSET` in hours and
328
+ rebuilds it as the whole part plus the fraction times `0.6`, rounded to two
329
+ places (`nd0/e.java`), so half past five is `5.30` and not `5.5`. A whole-hour
330
+ zone reads the same either way, which is why this stayed hidden while only
331
+ Germany was ever measured.
332
+
333
+ `0x201d` carries the daylight-saving rules in eight bytes (`pd0/a.java`): start
334
+ rule and month packed into one byte, start date, start time in minutes, the
335
+ adjustment in minutes, then the same three for the end, and finally the two days
336
+ of the week packed together. A packed byte is `(rule << 4) | month`
337
+ (`bm0/c.java`'s `a()`, built from two hex nibbles, which is why it refuses
338
+ anything above 15). The `23 00 78 3c 2a 00 b4 77` above is the EU rule — rule 2
339
+ in month 3 at 120 minutes, adjustment 60, rule 2 in month 10 at 180 minutes,
340
+ Sunday and Sunday.
341
+
342
+ **Rule `2` means the last such weekday of the month**, and it is the only rule
343
+ number read back from a lamp. The others are presumably Java's `SimpleTimeZone`
344
+ modes, which is where the whole field set comes from, but nothing here has seen
345
+ one — so `src/dyson/timezone.ts` writes the attribute only for a zone whose
346
+ changes fall on a last weekday and leaves it alone otherwise.
347
+
348
+ The times are wall clock **immediately before** the change: the European spring
349
+ change is 01:00 UTC, which is 02:00 in the offset still in force, and the autumn
350
+ one is 01:00 UTC at 03:00 in the offset still in force. Reading either in the
351
+ new offset names the hour the clock jumped to and is off by one.
352
+
353
+ ### What the app writes on every connection
354
+
355
+ `nd0/e.java` is the app's connect routine, and it is where the four settings
356
+ above are put back. In order:
357
+
358
+ 1. latitude `0x2003` (`md0/l.java` → `pd0/b`)
359
+ 2. 300 ms later, longitude `0x2004` (`pd0/c`)
360
+ 3. 500 ms later, the UTC offset `0x2005`, from the phone's own time zone (`pd0/d`)
361
+ 4. the daylight-saving rules `0x201d` (`pd0/a`, written from `lt/g.java` case 13)
362
+
363
+ The rules come from a Dyson cloud endpoint, a plain GET keyed by the phone's
364
+ IANA zone id (`pj0/b.java`), returning `StartMonth`, `StartRule`, `StartDate`,
365
+ `StartDayOfWeek`, `StartTime`, `Adjustment` and the same four for the end
366
+ (`aj0/b.java`). The endpoint is not needed: the fields are derivable from any
367
+ machine's own time-zone database, and doing so reproduces this lamp's own eight
368
+ bytes exactly.
369
+
370
+ **This is a connect-time sync, not a settings screen**, and it is the reason a
371
+ lamp opened in the app behaves while the same lamp left alone does not.
372
+
373
+ **There is no attribute for the current time.** The app's whole table is
374
+ `vc0/a.java` — ids stored as `{low, 0x20}`, little-endian — and holds nothing
375
+ time-related beyond these two and `0x2025`, which `he0/u.java`'s `x()` writes
376
+ only in the same breath as the sealed year of birth, as the timestamp of that
377
+ write. So the lamp keeps its own clock, and what a night without power does to
378
+ it is not yet known.
268
379
 
269
380
  ### Age adjustment
270
381
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "homebridge-dyson-solarcycle-morph",
3
3
  "displayName": "Dyson Solarcycle Morph",
4
- "version": "1.4.2",
4
+ "version": "1.4.3",
5
5
  "description": "Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light",
6
6
  "license": "MIT",
7
7
  "author": "Oliver Rummeyer",