This page is part of archived documentation for openHAB 4.0. Go to the current stable version
# GPIO Binding
This binding adds GPIO support via the pigpio daemon to openhab. It requires the pigpio (http://abyz.me.uk/rpi/pigpio/ (opens new window)) 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
}