The X9C102, X9C103, X9C104, X9C503 are digitally controlled (XDCP) potentiometers. The device consists of a resistor array, wiper switches, a control section, and nonvolatile memory. The wiper position is controlled by a three-wire interface.


X9C103S - digital potentiometer
X9C103S – digital potentiometer

Connecting X9C10X to a Zigbee module

From X9C10X to a Zigbee module:
GND: connected to GND on a Zigbee module.
CS (chip select): Connected to any pin configured as X9C100 (P00 – DIO0, see below).
INC (increment): Connected to any pin configured as I2C SCL/SPI CLK (e.g., P02 – DIO2).
U/D (up/down): : Connected to any pin configured as an additional parameter (e.g., P04 – DIO4).
VCC: Connected to 3.3V.

Firmware configuration

Firmware configuration

Remember state – if this option is active, the firmware remembers the last level and restores it after power up. Otherwise, the firmware sets the maximum resistance on the X9C10X output (VL – VW).
Pin (Up/Down) – it is the “U/D” pin. It has the same pull-up resistor settings as the master output pin.
Transition time (ms) – if this interval is not zero, the firmware smoothly changes the output resistance between two states.
Linked input – the mode of the linked input that controls this output.

Zigbee commands

The device acts as a level control device. You can change the level from 0 to 255, and the firmware scales it to 0 – 99 levels in X9C10X. When you set the zero level in Zigbee, the firmware forcibly makes 99 steps down. It allows synchronizing levels between the device and Zigbee. In other cases, the firmware calculates a difference and makes the necessary number of steps up or down.

Zigbee attributes: ATTRID_LEVEL_CURRENT_LEVEL (uint8)
Zigbee commands: read, write, moveToLevel, moveToLevelWithOff

Zigbee2MQTT commands

on/off - The "Off" command sets the minimum level, and the "On" command restores the last level (before off). Look for commands and examples for GPIO outputs.
write - sets the level.
Topic: zigbee2mqtt/[friedly_name]/[channel]/set/brightness
Channel: l1, l2, l3 … l16
Payload: value (0 - 255)
Topic: zigbee2mqtt/[friedly_name]/set/[channel]
Channel: l1, l2, l3 … l16
Payload: {"brightness": value, "transition": 3}
value - 0 - 255.
transition - (optional) the transition time in seconds between states.
read - reads the current value
Topic: zigbee2mqtt/[friedly_name]/[channel]/get/brightness
Payload: none
Returns: {"brightness_[channel]": value}

There are no comments.

Leave a Reply