openhab-docs/_addons_bindings/cups1/readme.md

97 lines
2.8 KiB
Markdown

---
id: cups
label: CUPS
title: CUPS - Bindings
type: binding
description: "The openHAB CUPS binding allows interaction with printers and their print queues via a CUPS server."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/binding/org.openhab.binding.cups/README.md
since: 1x
logo: images/addons/cups.png
install: manual
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# CUPS Binding
The openHAB CUPS binding allows interaction with printers and their print queues via a CUPS server.
There is also a binding specifically for openHAB 2 [here](https://www.openhab.org/addons/bindings/ipp/).
## Prerequisites
To set up this binding, it is necessary to know the names of the printers registered with the CUPS server.
One way to get this information is to download the current `cups4j.runnable-x.x.x.jar` file from http://www.cups4j.org/ and query the printers by using the following command
java -jar cups4j.runnable-x.x.x.jar -h <CUPS server name> getPrinters
## Binding Configuration
The binding can be configured in the file `services/cups.cfg`.
| Property | Default | Required | Description |
|----------|---------|:--------:|-----------------------------------------------|
| host | | Yes | The hostname or IP address of the CUPS server |
| port | 631 | No | The port used to connect to the CUPS server |
| refresh | 60000 | No | The refresh interval (in milliseconds) |
## Item Configuration
Each item binding should have this format:
```
cups="<printerName>[#whichJobs]"
```
`<printerName>` is the name or URL of the printer, as registered with the CUPS server.
`whichJobs` has a default value of NOT_COMPLETED; possible values are:
- NOT_COMPLETED
- COMPLETED
- ALL
### Example Use Case
The CUPS Binding can be used to switch on a printer if there are print jobs in the queue and switch it off if the queue is empty.
#### Items
```
Number Print_Jobs_Completed "Completed print jobs" (FF_Office) { cups="http://127.0.0.1:631/printers/MX-870" }
Number Print_Jobs_Queued "Unfinished print jobs" (FF_Office) { cups="MX-870#NOT_COMPLETED" }
Switch Printer "Printer"
```
#### Rules
```
import org.openhab.model.script.actions.Timer
var Timer printerTimer = null
rule "CUPS-Printer Queue"
when
Item Print_Jobs_Queued changed
then
if (Print_Jobs_Queued.state>0) {
if (printerTimer!=null) {
printerTimer.cancel
printerTimer=null
}
if (Printer.state==OFF) {
Printer.sendCommand(ON)
}
}
else if (Printer.state==ON) {
printerTimer = createTimer(now.plusMinutes(5)) [|
Printer.sendCommand(OFF)
]
}
end
```