-
Notifications
You must be signed in to change notification settings - Fork 31
Diagnostic Device Programming
The WHO1001 diagnostic protocol supports programming the configuration of a Device.
Programming begins by selecting the Device with WHAT9. The Device then automatically reports its identity and Module structure, similarly to the initial response produced after WHAT10.
MyHOME Suite subsequently enters the programming phase and writes the required Object and configuration data.
The observed workflow is:
WHAT9 - Select Device for programming
│
▼
Automatic Device description
│
▼
WHAT4
│
▼
WHAT14 - Open programming phase
│
▼
Program Module/Object
│
▼
Program configuration
│
▼
Finalize Object
│
├── repeat as required
▼
WHAT2 - End programming
The clearest capture currently available is the configuration push to Device 007B269D.
Programming begins by selecting the Device using its hardware ID:
*1001*9#DEVICE_ID*0##
For Device 007B269D, whose decimal hardware ID is 8070813:
*1001*9#8070813*0##
The Device acknowledges the command and automatically begins reporting its Device description.
WHAT9 can therefore be understood as selecting a Device in programming mode.
WHAT9 and WHAT10 select a Device for different purposes:
| Command | Selection mode |
|---|---|
WHAT10#ID |
Device interview/read |
WHAT9#ID |
Device programming |
Despite this distinction, both commands initially cause the Device to produce essentially the same automatic Device-description sequence.
The difference appears in what MyHOME Suite does after that description has completed.
After WHAT9 selection, MyHOME Suite does not explicitly request each Device-information dimension.
Instead, the Device automatically reports information such as DIM1, DIM2, DIM4, DIM7, DIM13, DIM30, and other applicable dimensions.
For 007B269D, the Module structure includes:
*#1001*0*30*1*510*1##
*#1001*0*30*2*510*1##
*#1001*0*30*3*406*0##
*#1001*0*30*4*406*0##
This identifies four internal slots, with slots 3 and 4 enabled as Object 406, Scheduled scenario PLUS.
The automatic description terminates with WHAT4.
The initial Device-description mechanism is shared between WHAT10 and WHAT9, but the subsequent paths differ:
Device selection
│
┌─────────┴─────────┐
│ │
WHAT10 WHAT9
│ │
└─────────┬─────────┘
▼
Automatic description
│
▼
WHAT4
│
┌─────────┴─────────┐
▼ ▼
DIM38 WHAT14
│ │
▼ ▼
Configuration reading Programming
With WHAT10, MyHOME Suite can explicitly request the configuration-reading phase using DIM38.
With WHAT9, the observed programming capture proceeds instead with WHAT14.
The automatic description should therefore not be confused with a complete configuration read: Object properties normally exposed through DIM35 are not explicitly requested at this stage.
After the automatic Device description, MyHOME Suite sends:
*1001*14#0*0##
The Device acknowledges the command.
WHAT14 appears to prepare or open the programming phase. Its exact internal operation remains unknown.
Each programmed Module follows the observed pattern:
#DIM30
│
▼
Assign Object
│
▼
#DIM35
│
▼
Write configuration properties
│
▼
WHAT4
│
▼
WHAT52
Modules are programmed sequentially.
#DIM30 assigns an Object to an internal Module slot:
*#1001*WHERE*#30*INTERNAL_SLOT*OBJECT_ID##
For internal slot 3 of 007B269D:
*#1001*0*#30*3*406##
This assigns Object 406, Scheduled scenario PLUS, to the Module.
The Device acknowledges the write before configuration properties are sent.
Unlike the DIM30 read form, the observed #DIM30 write form does not contain the DISABLED field.
After assigning the Object, MyHOME Suite writes its configuration properties through #DIM35:
*#1001*WHERE*#35#CONF_IDX#INTERNAL_SLOT*VALUE##
CONF_IDX corresponds to EN_CONF.idx for the Object assigned to that Module.
For Object 406:
*#1001*0*#35#0#3*33##
*#1001*0*#35#1#3*0##
*#1001*0*#35#2#3*5##
*#1001*0*#35#3#3*6##
These values represent:
CONF_IDX |
Property | Value |
|---|---|---|
0 |
CEN low byte | 33 |
1 |
CEN high byte | 0 |
2 |
Upper button | 5 |
3 |
Lower button | 6 |
The CEN number is reconstructed as LOW + (HIGH << 8), giving CEN 33.
Each #DIM35 write is individually acknowledged.
The next Module is programmed independently:
*#1001*0*#30*4*406##
*#1001*0*#35#0#4*33##
*#1001*0*#35#1#4*0##
*#1001*0*#35#2#4*7##
*#1001*0*#35#3#4*8##
This configures CEN 33, upper button 7, and lower button 8.
See Module Configuration and DIM35.
After writing the properties of each Object, two additional commands are observed.
MyHOME Suite sends:
*1001*4*0##
The command is acknowledged.
Its position indicates a completion or application boundary for the current Object/programming step. Its exact operation remains unknown.
WHAT4 is followed by:
*1001*52*0##
WHAT52 occurs after each programmed Object and therefore appears to perform a post-Object programming operation.
Its precise semantics remain unknown.
The complete per-Object pattern is:
#DIM30
#DIM35
#DIM35
...
WHAT4
WHAT52
The sequence then repeats for the next Module.
After all requested Modules have been programmed, MyHOME Suite sends:
*1001*2*0##
The Device acknowledges the command.
WHAT2 appears to finalize or close the programming session.
The complete observed lifecycle is therefore:
WHAT9
│
▼
Select Device for programming
│
▼
Automatic Device description
│
▼
WHAT4
│
▼
WHAT14
│
▼
#DIM30
│
▼
#DIM35 × N
│
▼
WHAT4
│
▼
WHAT52
│
├── repeat for next Module
│
▼
WHAT2
│
▼
Programming complete
The programming capture reveals a strong symmetry between configuration reading and writing:
| Information | Read | Write |
|---|---|---|
| Module/Object association | DIM30 |
#DIM30 |
| Object configuration | DIM35 |
#DIM35 |
For example:
READ
*#1001*0*30*3*406*0##
*#1001*0*35#0#3*33##
WRITE
*#1001*0*#30*3*406##
*#1001*0*#35#0#3*33##
The diagnostic dimensions therefore form part of a bidirectional configuration serialization mechanism rather than being limited to status reporting.
Programming uses the same catalogue model required for configuration decoding:
Device + Firmware
│
▼
Available Modules
│
▼
Allowed Objects
│
▼
#DIM30
│
▼
Selected Object
│
▼
EN_CONF / EN_CONF_RANGE
│
▼
#DIM35
│
▼
Programmed configuration
The catalogue determines which Objects are valid for a Module and which configuration properties and values apply to the selected Object.
Firmware-specific restrictions must also be considered when constructing configuration writes.
The essential programming sequence for Device 007B269D is:
*1001*9#8070813*0##
ACK
... automatic Device description ...
*1001*4*0##
*1001*14#0*0##
ACK
*#1001*0*#30*3*406##
ACK
*#1001*0*#35#0#3*33##
ACK
*#1001*0*#35#1#3*0##
ACK
*#1001*0*#35#2#3*5##
ACK
*#1001*0*#35#3#3*6##
ACK
*1001*4*0##
ACK
*1001*52*0##
*#1001*0*#30*4*406##
ACK
*#1001*0*#35#0#4*33##
ACK
*#1001*0*#35#1#4*0##
ACK
*#1001*0*#35#2#4*7##
ACK
*#1001*0*#35#3#4*8##
ACK
*1001*4*0##
ACK
*1001*52*0##
*1001*2*0##
ACK
This provides the current reference model for WHO1001 Device programming.