# PJLink Binding
This binding allows you to control devices with PJLink (opens new window) support. PJLink is a protocol that was developed to standardize IP control of digital projectors, but can also be used by other device types.
Aspects that can be controlled via PJLink are power on/off, input source selection and volume/mute setting.
# Supported Things
This binding supports devices which implement the PJLink protocol (Class 1).
Limitations at this point:
- only IPv4 connections are supported
- only PJLink Class 1 commands are supported. Class 2 devices should work fine nevertheless, it is just the Class 2 features that will not work.
The binding is tested with the PJLink device test tool (PJLinkTEST4CNT) and an Acer VL7680.
# Discovery
Autodiscovery is checking all IP addressess of all class C IPv4 subnets connected to the openHAB system for devices which respond PJLink compliant on the PJLink standard port 4352.
# Thing Configuration
The pjLinkDevice thing type has the following parameters:
Parameter | Description |
---|---|
ipAddress | the IPv4 address of the device Mandatory |
tcpPort | the listening TCP port of the devices. Optional, the default value is 4352 |
adminPassword | the PJLink password of the device (should be left empty for devices without authentication). Optional |
refreshInterval | the polling interval (in seconds) to update the channel values from the device, can be set to 0 to disable polling. Optional, the default value is 5 |
refreshPower | enables polling of the power status. Optional, the default value is false |
refreshMute | enables polling of the mute status. Optional, the default value is false |
refreshInputChannel | enables polling of the selected input channel. Optional, the default value is false |
refreshLampState | enables polling of the lamp usage hours and activity. Optional, the default value is false |
autoReconnectInterval | seconds between connection retries when connection to the PJLink device has been lost, 0 means never retry, minimum 30s Optional, the default value is 60 |
# Channels
Channel | Description |
---|---|
power | Switches the device on/off |
input | Switches the input channel of the device |
audioMute | Mutes the device audio |
videoMute | Mutes the device video |
lamp1Hours | The hours lamp 1 has been in use |
lamp1Active | Shows if lamp 1 is in use |
# Full Example
sample.things:
pjLinkDevice:pjLinkDevice:MyProjector [ ipAddress="192.168.178.10" ]
sample.items:
Switch Projector_Power "Projector Power" { channel="pjLinkDevice:pjLinkDevice:MyProjector:power" }
String Projector_Input "Projector Input" { channel="pjLinkDevice:pjLinkDevice:MyProjector:input" }
Switch Projector_AudioMute "Projector Audio Mute" { channel="pjLinkDevice:pjLinkDevice:MyProjector:audioMute" }
Switch Projector_VideoMute "Projector Video Mute" { channel="pjLinkDevice:pjLinkDevice:MyProjector:videoMute" }
Number Projector_Lamp1Hours "Projector lamp 1 used hours" { channel="pjLinkDevice:pjLinkDevice:MyProjector:lamp1Hours" }
Switch Projector_Lamp1Active "Projector lamp 1 active" { channel="pjLinkDevice:pjLinkDevice:MyProjector:lamp1Active" }
sample.sitemap:
sitemap sample label="Main Menu" {
Frame {
Switch item=Projector_Power
Selection item=Projector_Input
Switch item=Projector_AudioMute
Switch item=Projector_VideoMute
Switch item=Projector_Lamp1Active
Text item=Projector_Lamp1Hours
}
}
# Multiple lamps
Most of the time, there's just one lamp. In case a projector has more than one lamp, additional channels for those lamps can be configured.
sample-lamp-2.things:
pjLinkDevice:pjLinkDevice:MyProjector [ ipAddress="192.168.178.10" ]
{
Channels:
Type lampHours : lamp2Hours "Lamp 2 Hours" [
lampNumber=2
]
Type lampActive : lamp2Active "Lamp 2 Active" [
lampNumber=2
]
}
sample-lamp-2.items:
Number Projector_Lamp2Hours "Projector lamp 2 used hours" { channel="pjLinkDevice:pjLinkDevice:MyProjector:lamp2Hours" }
Switch Projector_Lamp2Active "Projector lamp 2 active" { channel="pjLinkDevice:pjLinkDevice:MyProjector:lamp2Active" }
sample-lamp-2.sitemap:
sitemap sample label="Main Menu" {
Frame {
Switch item=Projector_Lamp2Active
Text item=Projector_Lamp2Hours
}
}