# UPB Binding Universal Powerline Bus (UPB) is a protocol for communication over household electrical wiring. ## Supported Things The binding has not yet been tested with a variety of devices, so specific device support is limited. Instead the binding provides some generic devices, and allows adding channels that match the type of device. * `serial-pim` - Serial PIM * `generic` - Generic UPB device * `virtual` - "Virtual" device that allows scene selection Specific devices that are supported: * `leviton-38a00-1` - 6-button scene switch ## Binding Configuration The following binding configuration parameters are supported: | Parameter | Description | Config | Default | | ------------------------ | ---------------------------------------------- |--------- | ------- | | networkId | Default UPB network ID (0-255) | Optional | - | ## Thing Configuration ### Serial PIM You need a Powerline Interface Module (PIM) for the binding to work. This is a piece of equipment that connects a computer to the powerline. There are a few different PIM interfaces but this binding only supports serial PIMs. The `serial-pim` takes the following configuration parameters: | Parameter | Description | Config | Default | | ------------------------ | ---------------------------------------------- |--------- | ------- | | port | Serial port where the PIM is connected | Required | - | ### Generic device The `generic` thing type supports most UPB devices such as dimmers, light switches, and appliance modules. It has the following configuration parameters: | Parameter | Description | Config | Default | | ------------------------ | ---------------------------------------------- |--------- | -------------- | | networkId | ID of the UPB network (0-255) | Optional | binding config | | unitId | Unit ID (unique address) of the device (1-250) | Required | - | ### Virtual device The `virtual` pseudo-device does not correspond to any real device on the UPB network. It is nevertheless useful for reading and setting the current scene. The device has two channels, `linkActivated` and `linkDeactivated`. If a device on the UPB network activates or de-activates a scene by broadcasting a link activation command, the link ID (or scene number) can be read from the corresponding channel. Similarly, updating the channel with a link ID will send out the corresponding link command on the UPB network. ## Channels These channels are available for generic devices: | Channel Type | Item type | Description | | --------------- | --------- | ----------------------------------------------- | | dimmer | Dimmer | Level/brightness, or on/off for switches | | scene-selection | - | Trigger channel for scene selection | The virtual device supports the `link` channel type: | Channel Type | Item type | Description | | ------------ | --------- | -------------------------------------- | | link | Number | A scene to activate or deactivate | ## Full Example Here is a sample `.things configuration file: ``` Bridge upb:serial-pim:pim "UPB PIM" @ "Basement" [port="/dev/ttyUSB0"] { Thing generic light-switch "Living Room Light" [networkId=1, unitId=1] Thing virtual upb-scene "UPB Scene Control" [networkId=1, unitId=250] Thing leviton-38a00-1 scene-switch "Scene Switch" @ "Bedroom" [networkId=1, unitId=2] { Channels: Type scene-selection : btnOn [linkId=1] Type scene-selection : btnOff [linkId=2] Type scene-selection : btnA [linkId=3] Type scene-selection : btnB [linkId=4] Type scene-selection : btnC [linkId=5] Type scene-selection : btnD [linkId=6] } } ``` And the items: ``` // Configure as either Switch or Dimmer Dimmer LivingRoomLight "UPB Light Switch" {channel="upb:generic:pim:light-switch:dimmer"} // A scene selector (does not correspond to a physical device) Number UPB_Active_Scene "Active UPB Scene" {channel="upb:virtual:pim:upb-scene:linkActivated"} ```