homebridge-dyson-solarcycle-morph 1.4.2 → 1.4.4

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,68 @@ 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.4] — 2026-09-22
9
+
10
+ ### Changed
11
+
12
+ - **Says what actually lifts the location refusal, which 1.4.3 got half right.**
13
+ It reported that some lamps will not accept a location and left it there. The
14
+ missing half is the part that helps: a lamp refuses only until it has been
15
+ through the location set-up in the MyDyson app, and one pass through that
16
+ lifts it for good. The same lamp that had refused fifteen writes in a morning
17
+ took one from this plugin minutes after the app had set it up, and has
18
+ accepted them since. So the `latitude` and `longitude` fields work on any lamp
19
+ that was added the ordinary way, and a lamp that refuses names the fix in the
20
+ log rather than sounding like a dead end. Documentation and one log message;
21
+ no behaviour change.
22
+
23
+ ## [1.4.3] — 2026-09-22
24
+
25
+ ### Fixed
26
+
27
+ - **A setting the lamp refuses is no longer reported as applied.** The lamp
28
+ answers every write to its location with a success status and then, on some
29
+ lamps, keeps its own value — so coordinates put in the configuration could sit
30
+ there for months doing nothing while the log claimed on every connection that
31
+ they had been applied. Measured on a CF06: roughly fifteen writes across a
32
+ day, every one acknowledged, the factory location still in place afterwards,
33
+ and the same lamp accepting the coordinates from the MyDyson app minutes
34
+ later. What the app does differently is not yet known.
35
+
36
+ Writes to the location and the time zone are now read back and checked, and a
37
+ refusal is logged as a refusal. If your lamp is one of these, set the location
38
+ once in the MyDyson app: daylight tracking needs the lamp to *have* a
39
+ location, not to have been given one by this plugin, and the Daylight switch
40
+ works normally once it does.
41
+
42
+ ### Added
43
+
44
+ - **The log says what the lamp makes of its location.** Once a connection is up:
45
+
46
+ ```
47
+ F0:B1:A7:75:B1:D1 puts today's daylight between 07:09 and 19:22
48
+ ```
49
+
50
+ This is the lamp's own sunrise and sunset, and the only honest answer to
51
+ whether daylight tracking is really running. The Daylight switch is not: the
52
+ lamp accepts the mode, acknowledges it, never reports it back off, and then
53
+ does nothing at all if it has no location to work from — saying so only
54
+ through a small LED on its own base. A lamp in that state now says so in the
55
+ log instead.
56
+
57
+ - **The lamp is told what time zone it is in.** Daylight tracking turns a place
58
+ into an hour, so the lamp needs the time zone as well as the coordinates, and
59
+ the MyDyson app writes both on every connection. This plugin only ever wrote
60
+ the coordinates. The offset and the daylight-saving rules now go in beside
61
+ them, and only when the lamp disagrees, so a lamp already holding the right
62
+ values is never written to.
63
+
64
+ Both come from the time zone of the machine Homebridge runs on — no setting to
65
+ fill in, and nothing asked over the network, which matters because these are
66
+ written while reconnecting, exactly when the network may still be down. A time
67
+ zone whose clock changes on a pattern this cannot state is left alone rather
68
+ than guessed at.
69
+
8
70
  ## [1.4.2] — 2026-09-22
9
71
 
10
72
  ### Fixed
package/README.md CHANGED
@@ -248,6 +248,19 @@ 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
+ > **A lamp that has never been set up in the MyDyson app will not accept a
252
+ > location from anything else.** It answers the write with a success status and
253
+ > keeps the factory coordinates — measured on a CF06 on 2026-09-22, roughly
254
+ > fifteen writes across a day, every one acknowledged and none of them stored.
255
+ > Daylight tracking cannot run in that state, and the lamp says so only through
256
+ > a small LED at its daylight button.
257
+ >
258
+ > **Set the location once in the app and that lifts for good.** The same lamp
259
+ > accepted the next write from this plugin minutes later, and has ever since.
260
+ > So the fields below work on a lamp that has been through the app's set-up,
261
+ > which is every lamp that was added the ordinary way; if yours refuses, the log
262
+ > says so in as many words and one pass through the app is the whole fix.
263
+
251
264
  The two fields exist to set the coordinates without the app, and to correct them
252
265
  afterwards. Leave them empty and the plugin does not touch what the lamp holds —
253
266
  it still reads them on connecting and puts them in the debug log, which is the
@@ -273,6 +286,31 @@ connection goes out through a VPN. Nothing is sent to either service: they read
273
286
  the public address the request arrives from, which is what every site this
274
287
  machine contacts already sees. Check what it filled in before saving.
275
288
 
289
+ ### And what time it is there
290
+
291
+ Coordinates alone are not enough: the lamp turns them into a sunrise using a
292
+ clock, and it keeps neither reliably. **Take the lamp off the mains and it comes
293
+ back holding Dyson's own coordinates in Wiltshire**, and its offset from UTC has
294
+ been seen an hour out with nobody having written it. A lamp in that state blinks
295
+ a few times when daylight tracking is switched on and then drops out of it —
296
+ from the Home app and from the button on its base alike, because nothing is
297
+ wrong with the command.
298
+
299
+ So the plugin puts the time zone in beside the coordinates, on every connection,
300
+ and only when the lamp disagrees:
301
+
302
+ ```
303
+ UTC offset of F0:B1:A7:75:B1:D1 set to 2 (was 1)
304
+ ```
305
+
306
+ **There is nothing to configure.** Both the offset and the daylight-saving rules
307
+ come from the time zone of the machine Homebridge runs on, which already knows
308
+ them exactly and knows them without asking the network — worth having, since
309
+ these go in while reconnecting, which after a power cut is the moment the
310
+ network is least likely to be up. A time zone whose clock changes on a pattern
311
+ the lamp has no way of being told is left alone rather than guessed at; the
312
+ common European and British rules are exact.
313
+
276
314
  ### Age adjustment
277
315
 
278
316
  The lamp can trim the brightness of its **Study and Relax modes** to suit the
@@ -316,8 +316,40 @@ 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
+ * **A lamp that has never been set up in the MyDyson app refuses these**,
321
+ * acknowledging the write with a success status and keeping the factory
322
+ * coordinates — measured on a CF06 on 2026-09-22, roughly fifteen attempts
323
+ * across a day, none of them stored. One pass through the app's set-up lifts
324
+ * it for good: the same lamp took this plugin's write minutes later. So the
325
+ * write is attempted, read back, and a refusal is reported as one rather than
326
+ * guessed at — see {@link writeAndVerify}.
319
327
  */
320
328
  private syncLocation;
329
+ /**
330
+ * Put the host's time zone in the lamp, so it can turn a place into an hour.
331
+ *
332
+ * Sunrise needs a position *and* a clock. The MyDyson app writes the offset
333
+ * and the daylight-saving rules on every connection (`nd0/e.java`), taking
334
+ * both from the phone; this takes them from the host, which knows them
335
+ * exactly and knows them without asking the network — worth having, because
336
+ * these go out while reconnecting.
337
+ *
338
+ * Written only when the lamp disagrees, so a lamp that already holds the
339
+ * right values is never touched and the log stays quiet. Some lamps refuse
340
+ * the offset outright and say otherwise; see {@link writeAndVerify}.
341
+ */
342
+ private syncClock;
343
+ /**
344
+ * Say what the lamp makes of its location, for the log.
345
+ *
346
+ * These two are the only honest answer to "is daylight tracking actually
347
+ * running?". The mode attribute is no answer at all — the lamp takes the
348
+ * write, acknowledges it, never reports it back off, and then does nothing if
349
+ * it has no location to work from, saying so only through a small LED on its
350
+ * base. Sunrise and sunset are what it has actually computed.
351
+ */
352
+ private reportDaylightHours;
321
353
  /**
322
354
  * Put the configured age adjustment in the lamp.
323
355
  *
@@ -359,6 +391,25 @@ export declare class DysonMorphLamp extends EventEmitter {
359
391
  private writeAttribute;
360
392
  /** Ask the lamp for one coordinate, in degrees. */
361
393
  private readCoordinate;
394
+ /**
395
+ * Write an attribute and check the lamp actually took it.
396
+ *
397
+ * The acknowledgement is not proof for the settings behind daylight tracking.
398
+ * `0x2003`, `0x2004` and `0x2005` are all answered with status `00` and then,
399
+ * on a lamp that has never been through the MyDyson app's location set-up,
400
+ * simply not stored — measured on a CF06 on 2026-09-22 by reading them back
401
+ * in the same session, immediately after the write. A plugin that believed
402
+ * the reply reported success for months while the lamp sat on the factory
403
+ * location and daylight tracking could not run.
404
+ *
405
+ * Tried once, not repeated. Repetition is the answer to most of this lamp's
406
+ * refusals, but not this one: five attempts in a row were refused just as
407
+ * uniformly as one, and each costs a write and a read on a link that would
408
+ * rather be left alone.
409
+ *
410
+ * @returns whether the lamp ended up holding the wanted value.
411
+ */
412
+ private writeAndVerify;
362
413
  private refreshState;
363
414
  /** Read what the lamp currently reports. Values it will not give up are absent. */
364
415
  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,14 @@ 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
+ * **A lamp that has never been set up in the MyDyson app refuses these**,
840
+ * acknowledging the write with a success status and keeping the factory
841
+ * coordinates — measured on a CF06 on 2026-09-22, roughly fifteen attempts
842
+ * across a day, none of them stored. One pass through the app's set-up lifts
843
+ * it for good: the same lamp took this plugin's write minutes later. So the
844
+ * write is attempted, read back, and a refusal is reported as one rather than
845
+ * guessed at — see {@link writeAndVerify}.
833
846
  */
834
847
  async syncLocation() {
835
848
  if (!this.chars[CHAR_WRITE_ATTR]) {
@@ -853,12 +866,13 @@ export class DysonMorphLamp extends EventEmitter {
853
866
  if (settled) {
854
867
  return;
855
868
  }
869
+ const near = (value, degrees) => value?.length === 8 && Math.abs(value.readDoubleLE(0) - degrees) < COORDINATE_EPSILON;
856
870
  let written = false;
857
871
  try {
858
872
  written = (await this.enqueue(async () => {
859
- const latitude = await this.writeAttribute(COORDINATES.latitude, buildCoordinateWrite('latitude', wanted.latitude), 'latitude');
873
+ const latitude = await this.writeAndVerify(COORDINATES.latitude, buildCoordinateWrite('latitude', wanted.latitude), (value) => near(value, wanted.latitude), 'latitude');
860
874
  await sleep(COORDINATE_WRITE_GAP_MS);
861
- const longitude = await this.writeAttribute(COORDINATES.longitude, buildCoordinateWrite('longitude', wanted.longitude), 'longitude');
875
+ const longitude = await this.writeAndVerify(COORDINATES.longitude, buildCoordinateWrite('longitude', wanted.longitude), (value) => near(value, wanted.longitude), 'longitude');
862
876
  return latitude && longitude;
863
877
  })) === true;
864
878
  }
@@ -874,6 +888,82 @@ export class DysonMorphLamp extends EventEmitter {
874
888
  : '';
875
889
  this.log.info(`Location of ${this.mac} set to ${describeLocation(wanted)}${was}`);
876
890
  }
891
+ /**
892
+ * Put the host's time zone in the lamp, so it can turn a place into an hour.
893
+ *
894
+ * Sunrise needs a position *and* a clock. The MyDyson app writes the offset
895
+ * and the daylight-saving rules on every connection (`nd0/e.java`), taking
896
+ * both from the phone; this takes them from the host, which knows them
897
+ * exactly and knows them without asking the network — worth having, because
898
+ * these go out while reconnecting.
899
+ *
900
+ * Written only when the lamp disagrees, so a lamp that already holds the
901
+ * right values is never touched and the log stays quiet. Some lamps refuse
902
+ * the offset outright and say otherwise; see {@link writeAndVerify}.
903
+ */
904
+ async syncClock() {
905
+ if (!this.chars[CHAR_WRITE_ATTR]) {
906
+ return;
907
+ }
908
+ const offset = await this.readAttribute(ATTR_UTC_OFFSET, 'UTC offset');
909
+ const rules = await this.readAttribute(ATTR_DST_RULES, 'daylight-saving rules');
910
+ this.log.debug(`Clock of ${this.mac}: UTC offset ${describeUtcOffset(offset)}, ` +
911
+ `daylight-saving rules ${describeDstRules(rules)}`);
912
+ const wantedOffset = utcOffset();
913
+ // A float's own rounding, not a tolerance for being wrong: the lamp stores
914
+ // four bytes and reads back what fits in them.
915
+ const offsetMatches = (value) => value?.length === 4 && Math.abs(value.readFloatLE(0) - wantedOffset) < 0.005;
916
+ if (!offsetMatches(offset)) {
917
+ const settled = await this.enqueue(() => this.writeAndVerify(ATTR_UTC_OFFSET, buildUtcOffsetWrite(wantedOffset), offsetMatches, 'UTC offset'));
918
+ if (settled === true) {
919
+ this.log.info(`UTC offset of ${this.mac} set to ${wantedOffset}` +
920
+ (offset?.length === 4 ? ` (was ${offset.readFloatLE(0)})` : ''));
921
+ }
922
+ }
923
+ const wantedRules = daylightSavingRules();
924
+ if (!wantedRules) {
925
+ // A zone whose rules this cannot state; see daylightSavingRules. Leaving
926
+ // the lamp's own is the honest answer.
927
+ this.log.debug(`No daylight-saving rules to give ${this.mac} for this time zone`);
928
+ return;
929
+ }
930
+ const rulesMatch = (value) => value?.equals(wantedRules) === true;
931
+ if (rulesMatch(rules)) {
932
+ return;
933
+ }
934
+ await sleep(COORDINATE_WRITE_GAP_MS);
935
+ const settled = await this.enqueue(() => this.writeAndVerify(ATTR_DST_RULES, buildDstRulesWrite(wantedRules), rulesMatch, 'daylight-saving rules'));
936
+ if (settled === true) {
937
+ this.log.info(`Daylight-saving rules of ${this.mac} set to ${describeDstRules(wantedRules)}` +
938
+ (rules ? ` (was ${rules.toString('hex')})` : ''));
939
+ }
940
+ }
941
+ /**
942
+ * Say what the lamp makes of its location, for the log.
943
+ *
944
+ * These two are the only honest answer to "is daylight tracking actually
945
+ * running?". The mode attribute is no answer at all — the lamp takes the
946
+ * write, acknowledges it, never reports it back off, and then does nothing if
947
+ * it has no location to work from, saying so only through a small LED on its
948
+ * base. Sunrise and sunset are what it has actually computed.
949
+ */
950
+ async reportDaylightHours() {
951
+ if (!this.chars[CHAR_WRITE_ATTR]) {
952
+ return;
953
+ }
954
+ const minutes = (value) => value?.length === 2 ? value.readUInt16LE(0) : undefined;
955
+ const sunrise = minutes(await this.readAttribute(ATTR_SUNRISE, 'sunrise'));
956
+ const sunset = minutes(await this.readAttribute(ATTR_SUNSET, 'sunset'));
957
+ if (sunrise === undefined || sunset === undefined) {
958
+ return;
959
+ }
960
+ if (sunrise === 0 && sunset === 0) {
961
+ this.log.warn(`${this.mac} has worked out no sunrise or sunset, which means it holds no location. ` +
962
+ 'Daylight tracking cannot run until one is set; see the README.');
963
+ return;
964
+ }
965
+ this.log.info(`${this.mac} puts today's daylight between ${clock(sunrise)} and ${clock(sunset)}`);
966
+ }
877
967
  /**
878
968
  * Put the configured age adjustment in the lamp.
879
969
  *
@@ -1034,6 +1124,35 @@ export class DysonMorphLamp extends EventEmitter {
1034
1124
  const value = await this.readAttribute(COORDINATES[coordinate], coordinate);
1035
1125
  return value?.length === 8 ? value.readDoubleLE(0) : undefined;
1036
1126
  }
1127
+ /**
1128
+ * Write an attribute and check the lamp actually took it.
1129
+ *
1130
+ * The acknowledgement is not proof for the settings behind daylight tracking.
1131
+ * `0x2003`, `0x2004` and `0x2005` are all answered with status `00` and then,
1132
+ * on a lamp that has never been through the MyDyson app's location set-up,
1133
+ * simply not stored — measured on a CF06 on 2026-09-22 by reading them back
1134
+ * in the same session, immediately after the write. A plugin that believed
1135
+ * the reply reported success for months while the lamp sat on the factory
1136
+ * location and daylight tracking could not run.
1137
+ *
1138
+ * Tried once, not repeated. Repetition is the answer to most of this lamp's
1139
+ * refusals, but not this one: five attempts in a row were refused just as
1140
+ * uniformly as one, and each costs a write and a read on a link that would
1141
+ * rather be left alone.
1142
+ *
1143
+ * @returns whether the lamp ended up holding the wanted value.
1144
+ */
1145
+ async writeAndVerify(attribute, fragments, matches, label) {
1146
+ await this.writeAttribute(attribute, fragments, label);
1147
+ await sleep(ATTRIBUTE_SETTLE_GAP_MS);
1148
+ if (matches(await this.readAttribute(attribute, label))) {
1149
+ return true;
1150
+ }
1151
+ this.log.warn(`${this.mac} would not take the ${label}: it acknowledges the write and keeps its own value. ` +
1152
+ 'Lamps refuse this until they have been through the location set-up in the MyDyson app; ' +
1153
+ 'one pass through it lifts that for good. See the README.');
1154
+ return false;
1155
+ }
1037
1156
  async refreshState() {
1038
1157
  this.patchState(this.pending.filter(await this.readState()));
1039
1158
  }
@@ -1414,6 +1533,34 @@ export function describeState(state) {
1414
1533
  * Five decimal places is about a metre, which is as fine as the lamp's own use
1415
1534
  * of it — sunrise and sunset — can possibly care about.
1416
1535
  */
1536
+ /** Minutes past midnight as a wall clock, for the log. */
1537
+ function clock(minutes) {
1538
+ return `${String(Math.floor(minutes / 60)).padStart(2, '0')}:${String(minutes % 60).padStart(2, '0')}`;
1539
+ }
1540
+ function describeUtcOffset(value) {
1541
+ if (value === undefined) {
1542
+ return 'no answer';
1543
+ }
1544
+ // Hours.minutes, so 5.30 is half past five and not 5.5 hours; see
1545
+ // ATTR_UTC_OFFSET. Printed raw, because the point here is what the lamp holds.
1546
+ return value.length === 4 ? `${value.readFloatLE(0)}` : `unreadable (${value.toString('hex')})`;
1547
+ }
1548
+ function describeDstRules(value) {
1549
+ if (value === undefined) {
1550
+ return 'no answer';
1551
+ }
1552
+ if (value.length !== 8) {
1553
+ return `unreadable (${value.toString('hex')})`;
1554
+ }
1555
+ const [start, startDate, startTime, adjustment, end, endDate, endTime, days] = value;
1556
+ const nibbles = (byte) => [byte >> 4, byte & 0x0f];
1557
+ const [startRule, startMonth] = nibbles(start);
1558
+ const [endRule, endMonth] = nibbles(end);
1559
+ const [endDay, startDay] = nibbles(days);
1560
+ return (`${value.toString('hex')} — start rule ${startRule} month ${startMonth} date ${startDate} ` +
1561
+ `at ${startTime} min, adjustment ${adjustment} min; end rule ${endRule} month ${endMonth} ` +
1562
+ `date ${endDate} at ${endTime} min; days ${startDay}/${endDay}`);
1563
+ }
1417
1564
  function describeLocation(location) {
1418
1565
  return `${location.latitude.toFixed(5)}, ${location.longitude.toFixed(5)}`;
1419
1566
  }
@@ -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,127 @@ 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 is refused until the app has set one up
287
+
288
+ **Measured 2026-09-22.** On a lamp that had never been through the MyDyson app's
289
+ location set-up, `0x2003` and `0x2004` are acknowledged with status `00` and not
290
+ stored — not after the write, not for the rest of the session, not once in
291
+ roughly fifteen attempts across a day. Reading them back immediately after the
292
+ write returns the factory value every time.
293
+
294
+ **Once the app has set a location, the lock lifts and stays lifted.** Minutes
295
+ after the app wrote its GPS fix, this plugin overwrote it with the configured
296
+ coordinates, read them back, and the write verified. Same lamp, same session
297
+ shape, same bytes as all the refused attempts.
298
+
299
+ So this is a set-up gate rather than a protocol difference, which is consistent
300
+ with everything else that was ruled out: the frame is identical (`jr/c.java`
301
+ case 10 versus `buildAttributeWrite`), the channel works — `0x2023` took a write
302
+ in the same session, while the coordinates were still being refused — and
303
+ retrying does not help, five consecutive attempts being refused as uniformly as
304
+ one.
305
+
306
+ `0x2005` behaved the same way and recovered at the same moment: a write of 2
307
+ over 1 was taken at 11:47, five writes of 2 over 3 were refused at 13:49, and
308
+ after the app's set-up it simply read 2 again with nothing needing to be
309
+ written. The lamp's daylight hours moved from 08:09-20:22 to 07:04-19:30 in the
310
+ same breath, matching the app's own display to within six minutes.
311
+
312
+ **A refused daylight mode is invisible from the protocol.** `0x2013` accepts the
313
+ write, acknowledges it, and the lamp never reports the mode back off — it simply
314
+ does not act. The lamp says so only through a small LED at the daylight button.
315
+ Colour temperature standing still, and `0x2014`/`0x2015` reading zero or stale,
316
+ are the signals that carry.
317
+
318
+ Those eight connections in one morning that each read back `51.5864, -2.1028`
319
+ and wrote the configured pair again were not the lamp forgetting overnight, as
320
+ first assumed — the lamp had simply never taken the write. See above.
321
+
322
+ The lamp on this rig is taken off the mains overnight, and the year of birth
323
+ survives that, so nothing here is a wholesale reset.
324
+
325
+ ### The clock
326
+
327
+ Two neighbours belong to the same setting. `0x2005` is the UTC offset as a
328
+ little-endian `float` (`pd0/d.java`), and it is written **hours.minutes rather
329
+ than decimal hours**: the app takes `getRawOffset() + DST_OFFSET` in hours and
330
+ rebuilds it as the whole part plus the fraction times `0.6`, rounded to two
331
+ places (`nd0/e.java`), so half past five is `5.30` and not `5.5`. A whole-hour
332
+ zone reads the same either way, which is why this stayed hidden while only
333
+ Germany was ever measured.
334
+
335
+ `0x201d` carries the daylight-saving rules in eight bytes (`pd0/a.java`): start
336
+ rule and month packed into one byte, start date, start time in minutes, the
337
+ adjustment in minutes, then the same three for the end, and finally the two days
338
+ of the week packed together. A packed byte is `(rule << 4) | month`
339
+ (`bm0/c.java`'s `a()`, built from two hex nibbles, which is why it refuses
340
+ anything above 15). The `23 00 78 3c 2a 00 b4 77` above is the EU rule — rule 2
341
+ in month 3 at 120 minutes, adjustment 60, rule 2 in month 10 at 180 minutes,
342
+ Sunday and Sunday.
343
+
344
+ **Rule `2` means the last such weekday of the month**, and it is the only rule
345
+ number read back from a lamp. The others are presumably Java's `SimpleTimeZone`
346
+ modes, which is where the whole field set comes from, but nothing here has seen
347
+ one — so `src/dyson/timezone.ts` writes the attribute only for a zone whose
348
+ changes fall on a last weekday and leaves it alone otherwise.
349
+
350
+ The times are wall clock **immediately before** the change: the European spring
351
+ change is 01:00 UTC, which is 02:00 in the offset still in force, and the autumn
352
+ one is 01:00 UTC at 03:00 in the offset still in force. Reading either in the
353
+ new offset names the hour the clock jumped to and is off by one.
354
+
355
+ ### What the app writes on every connection
356
+
357
+ `nd0/e.java` is the app's connect routine, and it is where the four settings
358
+ above are put back. In order:
359
+
360
+ 1. latitude `0x2003` (`md0/l.java` → `pd0/b`)
361
+ 2. 300 ms later, longitude `0x2004` (`pd0/c`)
362
+ 3. 500 ms later, the UTC offset `0x2005`, from the phone's own time zone (`pd0/d`)
363
+ 4. the daylight-saving rules `0x201d` (`pd0/a`, written from `lt/g.java` case 13)
364
+
365
+ The rules come from a Dyson cloud endpoint, a plain GET keyed by the phone's
366
+ IANA zone id (`pj0/b.java`), returning `StartMonth`, `StartRule`, `StartDate`,
367
+ `StartDayOfWeek`, `StartTime`, `Adjustment` and the same four for the end
368
+ (`aj0/b.java`). The endpoint is not needed: the fields are derivable from any
369
+ machine's own time-zone database, and doing so reproduces this lamp's own eight
370
+ bytes exactly.
371
+
372
+ **This is a connect-time sync, not a settings screen**, and it is the reason a
373
+ lamp opened in the app behaves while the same lamp left alone does not.
374
+
375
+ **There is no attribute for the current time.** The app's whole table is
376
+ `vc0/a.java` — ids stored as `{low, 0x20}`, little-endian — and holds nothing
377
+ time-related beyond these two and `0x2025`, which `he0/u.java`'s `x()` writes
378
+ only in the same breath as the sealed year of birth, as the timestamp of that
379
+ write. So the lamp keeps its own clock, and what a night without power does to
380
+ it is not yet known.
268
381
 
269
382
  ### Age adjustment
270
383
 
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.4",
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",