openhab-addons/bundles/org.openhab.binding.gpio/README.md
Martin Dagarin c21c468cac
[gpio] Improved usability of pullupdown parameter on GPIO pin (#10863)
Signed-off-by: Martin <martin.dagarin@gmail.com>
2021-06-15 23:53:27 +02:00

109 lines
3.0 KiB
Markdown

# GPIO Binding
This binding adds GPIO support via the pigpio daemon to openhab.
It requires the pigpio (http://abyz.me.uk/rpi/pigpio/) to be running on the pi that should be controlled.
## Supported Things
### pigpio-remote
This thing represents a remote pigpio instance running as daemon on a raspberry pi.
## Thing Configuration
### Pigpio Remote (`pigpio-remote`)
On a raspberry (or a compatible device) you have to install pigpio:
```
sudo apt-get install pigpiod
sudo raspi-config
```
-> Interfacing Options --> Remote GPIO --> YES --> OK --> Finish
Note: if you are setting this up on a Raspberry Pi without `raspi-config` you can create the service config file manually:
```
sudo mkdir -p /etc/systemd/system/pigpiod.service.d/
sudo nano /etc/systemd/system/pigpiod.service.d/public.conf
```
[Service]
ExecStart=
ExecStart=/usr/bin/pigpiod
```
sudo systemctl daemon-reload
```
Now that Remote GPIO is enabled, get the daemon going (even if installed with apt-get):
```
sudo systemctl enable pigpiod
sudo systemctl start pigpiod
```
In openHAB, set `host` to the address of the pi and the `port` to the port of pigpio (default: 8888).
Note: If you are running Pigpio on same host as openHAB, then set host to **::1**.
## Channels
### Pigpio Remote
| channel | type | description |
|-----------------------|--------|---------------------------------|
| pigpio-digital-input | Switch | Read-only value of the gpio pin |
| pigpio-digital-output | Switch | Controls the gpio pin |
### GPIO digital input channel
Set the number of the pin in `gpioId`.
If you want to invert the value, set `invert` to true.
To prevent incorrect change events, you can adjust the `debouncingTime`.
Using `pullupdown` you can enable pull up or pull down resistor (OFF = Off, DOWN = Pull Down, UP = Pull Up).
### GPIO digital output channel
Set the number of the pin in `gpioId`.
If you want to invert the value, set `invert` to true.
## Full Example
demo.things:
```
Thing gpio:pigpio-remote:sample-pi-1 "Sample-Pi 1" [host="192.168.2.36", port=8888] {
Channels:
Type pigpio-digital-input : sample-input-1 [ gpioId=10]
Type pigpio-digital-input : sample-input-2 [ gpioId=14, invert=true]
Type pigpio-digital-output : sample-output-1 [ gpioId=3]
}
Thing gpio:pigpio-remote:sample-pi-2 "Sample-Pi 2" [host="192.168.2.37", port=8888] {
Channels:
Type pigpio-digital-input : sample-input-3 [ gpioId=16, debouncingTime=20]
Type pigpio-digital-input : sample-input-4 [ gpioId=17, invert=true, debouncingTime=5, pullupdown="UP"]
Type pigpio-digital-output : sample-output-2 [ gpioId=4, invert=true]
}
```
demo.items:
```
Switch SampleInput1 {channel="gpio:pigpio-remote:sample-pi-1:sample-input-1"}
Switch SampleOutput1 {channel="gpio:pigpio-remote:sample-pi-1:sample-output-1"}
```
demo.sitemap:
```
sitemap demo label="Main Menu"
{
Switch item=SampleInput1
Switch item=SampleOutput1
}
```