x10
x10 is a Theatersoft bus service module that
encapsulates the X10) home automation protocol to provide
consistent device APIs for X10 control and state management.
The CM15A USB Transceiver is currently supported by encoding and decoding the interface streams from the USB controller using open sourced information about the X10 controller protocol.
X10 obviously has been legacy technology for a long time however I personally have X10 outdoor motion sensor floodlights that
are still working reliably. This x10 module allows them to be used within the Theatersoft platform.
Installation
Install Theatersoft.
Add an X10 service configuration object to your site
config.jsonto theservicesarray of ahostsobject. E.g:{ "enabled": true, "module": "@theatersoft/x10", "export": "X10", "name": "X10", "config": { "vid": 3015, "pid": 1, "devices": [ { "name": "Garage", "model": "VT38A", "id": "A3", "type": "Switch" }, { "name": "Deck", "model": "PR511", "id": "A8", "type": "Switch" }, { "name": "Deck Motion", "id": "A9", "type": "MotionSensor" } ] } }X10 cannot discover devices on its own so you’ll need to preconfigure your own devices.
npm run config deployif you installed Theatersoft using@theatersoft/home; otherwise install@theatersoft/x10and restart the server manually.
API
Actions control devices through the X10.dispatch (action :Action) API. Within the X10 module, an action would appear
as {type: "ON", id: "A3"}. (Applications normally invoke actions indirectly through the device module, so the id
would actually be X10.A3.)
State is accessed by listening to state signals on the x10 bus service object. A device state has the form:
"X10.A3" : {
name: "Garage",
value: false,
type: "Switch",
id: "X10.A3",
time: 1516156060728
}
Virtual motion sensor device for VT38A Floodlight
Since this device reports its motion status on the same address that controls it, any motion state would normally only affect the switch state. Instead, add "model": "VT38A" to the device config to enable special handling:
- automatically create an associated virtual
MotionSensordevice e.g.X10.A3.0 - discriminate incoming commands between motion reports that update virtual device state and switch commands that update switch state