diff --git a/bundles/org.openhab.binding.gpio/README.md b/bundles/org.openhab.binding.gpio/README.md
index 622cf4835..84020f593 100644
--- a/bundles/org.openhab.binding.gpio/README.md
+++ b/bundles/org.openhab.binding.gpio/README.md
@@ -34,7 +34,7 @@ sudo nano /etc/systemd/system/pigpiod.service.d/public.conf
```
sudo systemctl daemon-reload
```
-Now that Remote GPIO is enabled, get the daemon going:
+Now that Remote GPIO is enabled, get the daemon going (even if installed with apt-get):
```
sudo systemctl enable pigpiod
sudo systemctl start pigpiod
@@ -42,6 +42,8 @@ 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
@@ -56,6 +58,7 @@ In openHAB, set `host` to the address of the pi and the `port` to the port of pi
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 (0 = Off, 1 = Pull Down, 2 = Pull Up).
### GPIO digital output channel
@@ -78,7 +81,7 @@ Thing gpio:pigpio-remote:sample-pi-1 "Sample-Pi 1" [host="192.168.2.36", port=88
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]
+ Type pigpio-digital-input : sample-input-4 [ gpioId=17, invert=true, debouncingTime=5, pullupdown=2]
Type pigpio-digital-output : sample-output-2 [ gpioId=4, invert=true]
}
```
diff --git a/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/configuration/GPIOInputConfiguration.java b/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/configuration/GPIOInputConfiguration.java
index ef1a91153..4abad17bd 100644
--- a/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/configuration/GPIOInputConfiguration.java
+++ b/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/configuration/GPIOInputConfiguration.java
@@ -25,4 +25,10 @@ public class GPIOInputConfiguration extends GPIOConfiguration {
* Time in ms to double check if value hasn't changed
*/
public int debouncingTime = 10;
+
+ /**
+ * Setup a pullup resistor on the GPIO pin
+ * 0 = PI_PUD_OFF, 1 = PI_PUD_DOWN, 2 = PI_PUD_UP
+ */
+ public int pullupdown = 0;
}
diff --git a/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/handler/PigpioDigitalInputHandler.java b/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/handler/PigpioDigitalInputHandler.java
index 06abc8fba..dfd8dfa72 100644
--- a/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/handler/PigpioDigitalInputHandler.java
+++ b/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/handler/PigpioDigitalInputHandler.java
@@ -56,12 +56,14 @@ public class PigpioDigitalInputHandler implements ChannelHandler {
if (gpioId == null) {
throw new NoGpioIdException();
}
- gpio = new GPIO(jPigpio, gpioId, 1);
+ gpio = new GPIO(jPigpio, gpioId, JPigpio.PI_INPUT);
jPigpio.gpioSetAlertFunc(gpio.getPin(), (gpio, level, tick) -> {
lastChanged = new Date();
Date thisChange = new Date();
scheduler.schedule(() -> afterDebounce(thisChange), configuration.debouncingTime, TimeUnit.MILLISECONDS);
});
+ Integer pullupdown = configuration.pullupdown;
+ jPigpio.gpioSetPullUpDown(gpio.getPin(), pullupdown);
}
private void afterDebounce(Date thisChange) {
diff --git a/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/handler/PigpioDigitalOutputHandler.java b/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/handler/PigpioDigitalOutputHandler.java
index d0ef7993c..97c5d3d1e 100644
--- a/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/handler/PigpioDigitalOutputHandler.java
+++ b/bundles/org.openhab.binding.gpio/src/main/java/org/openhab/binding/gpio/internal/handler/PigpioDigitalOutputHandler.java
@@ -62,7 +62,7 @@ public class PigpioDigitalOutputHandler implements ChannelHandler {
if (gpioId == null) {
throw new NoGpioIdException();
}
- this.gpio = new GPIO(jPigpio, gpioId, 0);
+ this.gpio = new GPIO(jPigpio, gpioId, JPigpio.PI_OUTPUT);
}
@Override
diff --git a/bundles/org.openhab.binding.gpio/src/main/resources/OH-INF/thing/pigpio-remote.xml b/bundles/org.openhab.binding.gpio/src/main/resources/OH-INF/thing/pigpio-remote.xml
index 3dbda62f1..402082225 100644
--- a/bundles/org.openhab.binding.gpio/src/main/resources/OH-INF/thing/pigpio-remote.xml
+++ b/bundles/org.openhab.binding.gpio/src/main/resources/OH-INF/thing/pigpio-remote.xml
@@ -50,6 +50,17 @@
10true
+
+
+ Configure Pull Up/Down Resistor of GPIO pin
+
+
+
+
+
+ true
+ 0
+