Skip to content

Diagnostic Device Programming

anotherjulien edited this page Sep 14, 2026 · 1 revision

Overview

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.

Device Selection

WHAT9 - Programming Selection

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.

Relationship with WHAT10

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.

Automatic Device Description

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.

Read vs Programming Path

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.

Programming Phase

WHAT14 - Programming Preparation

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.

Per-Module Programming

Each programmed Module follows the observed pattern:

#DIM30
   │
   ▼
Assign Object
   │
   ▼
#DIM35
   │
   ▼
Write configuration properties
   │
   ▼
WHAT4
   │
   ▼
WHAT52

Modules are programmed sequentially.

Object Assignment with #DIM30

#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.

See Device Modules and DIM30.

Configuration with #DIM35

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.

Example: Internal Slot 3

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.

Example: Internal Slot 4

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.

Per-Object Completion

After writing the properties of each Object, two additional commands are observed.

WHAT4

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.

WHAT52

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.

Programming Completion

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

Read/Write Symmetry

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.

Relationship with the MH Catalogue

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.

Observed Example

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.

See Also

Clone this wiki locally