[gpio] Added parameter for pull up/down resistor and other improvements (#10782)
This commit is contained in:
parent
c97f2ac2fa
commit
d9841ef0de
|
@ -34,7 +34,7 @@ sudo nano /etc/systemd/system/pigpiod.service.d/public.conf
|
||||||
```
|
```
|
||||||
sudo systemctl daemon-reload
|
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 enable pigpiod
|
||||||
sudo systemctl start 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).
|
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
|
## Channels
|
||||||
|
|
||||||
### Pigpio Remote
|
### 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`.
|
Set the number of the pin in `gpioId`.
|
||||||
If you want to invert the value, set `invert` to true.
|
If you want to invert the value, set `invert` to true.
|
||||||
To prevent incorrect change events, you can adjust the `debouncingTime`.
|
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
|
### 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] {
|
Thing gpio:pigpio-remote:sample-pi-2 "Sample-Pi 2" [host="192.168.2.37", port=8888] {
|
||||||
Channels:
|
Channels:
|
||||||
Type pigpio-digital-input : sample-input-3 [ gpioId=16, debouncingTime=20]
|
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]
|
Type pigpio-digital-output : sample-output-2 [ gpioId=4, invert=true]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -25,4 +25,10 @@ public class GPIOInputConfiguration extends GPIOConfiguration {
|
||||||
* Time in ms to double check if value hasn't changed
|
* Time in ms to double check if value hasn't changed
|
||||||
*/
|
*/
|
||||||
public int debouncingTime = 10;
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,12 +56,14 @@ public class PigpioDigitalInputHandler implements ChannelHandler {
|
||||||
if (gpioId == null) {
|
if (gpioId == null) {
|
||||||
throw new NoGpioIdException();
|
throw new NoGpioIdException();
|
||||||
}
|
}
|
||||||
gpio = new GPIO(jPigpio, gpioId, 1);
|
gpio = new GPIO(jPigpio, gpioId, JPigpio.PI_INPUT);
|
||||||
jPigpio.gpioSetAlertFunc(gpio.getPin(), (gpio, level, tick) -> {
|
jPigpio.gpioSetAlertFunc(gpio.getPin(), (gpio, level, tick) -> {
|
||||||
lastChanged = new Date();
|
lastChanged = new Date();
|
||||||
Date thisChange = new Date();
|
Date thisChange = new Date();
|
||||||
scheduler.schedule(() -> afterDebounce(thisChange), configuration.debouncingTime, TimeUnit.MILLISECONDS);
|
scheduler.schedule(() -> afterDebounce(thisChange), configuration.debouncingTime, TimeUnit.MILLISECONDS);
|
||||||
});
|
});
|
||||||
|
Integer pullupdown = configuration.pullupdown;
|
||||||
|
jPigpio.gpioSetPullUpDown(gpio.getPin(), pullupdown);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void afterDebounce(Date thisChange) {
|
private void afterDebounce(Date thisChange) {
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class PigpioDigitalOutputHandler implements ChannelHandler {
|
||||||
if (gpioId == null) {
|
if (gpioId == null) {
|
||||||
throw new NoGpioIdException();
|
throw new NoGpioIdException();
|
||||||
}
|
}
|
||||||
this.gpio = new GPIO(jPigpio, gpioId, 0);
|
this.gpio = new GPIO(jPigpio, gpioId, JPigpio.PI_OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -50,6 +50,17 @@
|
||||||
<default>10</default>
|
<default>10</default>
|
||||||
<advanced>true</advanced>
|
<advanced>true</advanced>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
<parameter name="pullupdown" type="integer" min="0" max="2">
|
||||||
|
<label>Pull Up/Down Resistor</label>
|
||||||
|
<description>Configure Pull Up/Down Resistor of GPIO pin</description>
|
||||||
|
<options>
|
||||||
|
<option value="0">Off</option>
|
||||||
|
<option value="1">Pull Down</option>
|
||||||
|
<option value="2">Pull Up</option>
|
||||||
|
</options>
|
||||||
|
<limitToOptions>true</limitToOptions>
|
||||||
|
<default>0</default>
|
||||||
|
</parameter>
|
||||||
</config-description>
|
</config-description>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue