Meine Recherche war erfolgreich und ich konnte eine kleine Java Klasse erstellen mit der ich den OpenCollector Ausgang (OUT PIN 0) für 500 Millisekunden öffnen (also auf GND ziehen) kann.
Ursprünglich wollte ich mit der Klasse com.pi4j.device.piface.PiFace arbeiten, leider kommt aber Java nach Ausführung nicht wieder zurück.
Ein strace hat ergeben, dass Java auf die Beendigung eines Prozesses wartet. Die angegebene PID im strace war aber nicht mehr im system vorhanden, damit würde die Classe sich wohl nicht wieder beenden. Daher bin ich umgestiegen auf die etwas weiter unten liegende com.pi4j.io.gpio Klassen.
Und hier das Ergebnis:
// Importing Libraries import com.pi4j.gpio.extension.piface.PiFaceGpioProvider; import com.pi4j.gpio.extension.piface.PiFacePin; import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinDigitalOutput; import com.pi4j.io.spi.SpiChannel; import java.io.IOException; /** * * @author Michael Oberdorf * @version 0.100 * Description: * PiFaceOut is the class to control the PiFace Digital 2 Output Ports * The Class uses the Pi4J GPIO interface instead of the device.piface class because * the finalizing is defect there. * The GpioController can be shutdown * */ public class PiFaceOut { public static void main(String args[]) throws InterruptedException, IOException { // create gpio controller final GpioController gpio = GpioFactory.getInstance(); // Trigger the Out PIN 00 for 500 milliseconds to open the entrance door openDoor(gpio, 500); // shut down the interface to clean up native heap from WiringPi gpio.shutdown(); } /** * * private method to trigger the digital output pin 0 to open the entrance door * @param gpio (GpioController) * @param time (int) * @throws IOException * @throws InterruptedException * */ private static void openDoor(GpioController gpio, int time) throws IOException, InterruptedException { // create custom PiFace GPIO provider final PiFaceGpioProvider gpioProvider = new PiFaceGpioProvider(PiFaceGpioProvider.DEFAULT_ADDRESS, SpiChannel.CS0); // provision gpio output pins and make sure they are all LOW at startup GpioPinDigitalOutput myOutputs[] = { gpio.provisionDigitalOutputPin(gpioProvider, PiFacePin.OUTPUT_00) }; // pull digital out pin to GND (OpenCollector) gpio.setState(true, myOutputs); // sleep for a while Thread.sleep(time); // close the digital out pin gpio.setState(false, myOutputs); } }