Custom Home Assistant integration that extends the standard w800rf32 component to support both:
- Standard X10 devices (motion sensors, keypads, switches)
- DS10A security sensors (door/window sensors with battery monitoring)
- Copy this folder to
/config/custom_components/w800rf32_security/ - Restart Home Assistant
- Add configuration to
configuration.yaml
w800rf32_security:
device: /dev/ttyUSB0 # Your W800RF32 serial device
binary_sensor:
- platform: w800rf32_security
devices:
# X10 motion sensor
a1:
name: motion_hall
device_type: x10 # Required: "x10" or "security"
device_class: motion
off_delay:
seconds: 5
# X10 motion sensor
c3:
name: motion_kitchen
device_type: x10
device_class: motion
# DS10A door sensor
5a:
name: bedroom_door
device_type: security # Required: "x10" or "security"
device_class: door
# DS10A window sensor
3f:
name: front_window
device_type: security
device_class: windowFor each device you MUST specify:
name- Friendly namedevice_type- Eitherx10orsecurity
Optional fields:
device_class- Type of sensor (motion, door, window, etc.)off_delay- Auto-off delay (useful for motion sensors)
Some addresses like a1, c3, f5 could be either X10 or security sensors. By explicitly specifying the type, there's no ambiguity.
Address format: House code (a-p) + unit number (1-16)
- Examples:
a1,c3,p16 - Supported: Motion sensors, keypads, remotes, switches
- Events: On/Off commands
Address format: 2-digit hexadecimal (00-ff)
- Examples:
5a,3f,a1(yes, same as X10 address!) - Supported: DS10A door/window sensors
- Events: Open/closed with battery status
Security sensor attributes:
low_battery- Boolean indicating if battery is lowmin_delay- Boolean indicating minimum delay modelast_update- ISO timestamp of last update
automation:
- id: ds10a_low_battery_alert
alias: "Door Sensor Low Battery Alert"
trigger:
platform: state
entity_id:
- binary_sensor.bedroom_door
- binary_sensor.front_window
attribute: low_battery
to: true
action:
- service: notify.notify
data:
title: "Door Sensor Low Battery"
message: "{{ trigger.to_state.name }} needs a battery replacement!"automation:
- id: door_opened
alias: "Bedroom Door Opened"
trigger:
platform: state
entity_id: binary_sensor.bedroom_door
to: 'on'
action:
- service: notify.notify
data:
message: "Bedroom door was opened"Add to configuration.yaml:
logger:
default: info
logs:
custom_components.w800rf32_security: debug
W800rf32: debugThis shows:
- Raw packet data in hex
- Security sensor detection
- X10 event parsing
- Event dispatching
For X10 devices:
- Set on the device (usually DIP switches or dial)
- Format: House code (A-P) + Unit (1-16)
For DS10A sensors:
- Enable debug logging
- Trigger the sensor (open/close)
- Look for log entry like:
RAW PACKET: 5a3f8001 Security event: {'device_type': 'ds10a', 'address': '5a', ...} - Use the
addressvalue in your config
Component doesn't load:
- Verify files are in
/config/custom_components/w800rf32_security/ - Check serial device path (
/dev/ttyUSB0or similar) - Check logs for errors
X10 devices not responding:
- Verify
device_type: x10is set - Check address format (e.g.,
a1, notA1or1a) - Enable debug logging to see received packets
Security sensors not responding:
- Verify
device_type: securityis set - Check address is 2-digit hex (e.g.,
5a,3f) - Trigger sensor and check debug logs
- Verify address matches configuration
This integration:
- Opens the W800RF32 serial connection directly
- Intercepts raw 4-byte packets
- Checks if packet is security sensor (using upper nibble matching)
- Routes security packets to custom parser
- Routes standard X10 packets to the W800rf32 library
- Dispatches events to appropriate binary sensor entities
The integration uses the proven pyW800rf32 library for X10 parsing (same as Home Assistant core) while adding DS10A security sensor support on top.