Funksteckdosen mit Java fernsteuern

Für diese Projekt setzen wir voraus, dass eine Java Entwicklungsumgebung eingerichtet ist und ein grundsätzliches Verständnis der Java Programmiersprache vorhanden ist.

Falls dies nicht der Fall ist sollte hier begonnen werden. Informationen über die Tinkerforge API sind dann hier zu finden.

Wir setzen weiterhin voraus, dass die Fernbedienung mit einem Industrial Quad Relay Bricklet verbunden wurde wie hier beschrieben.

Ziele

Das Ziel dieses kleinen Projekts ist es, eine Vorstellung darüber zu vermitteln wie die Relais des Industrial Quad Relay Bricklets geschaltet werden müssen, damit die Funksteckdosen an- und ausgeschaltet werden können.

Der folgende Quelltext benutzt setMonoflop() um eine Knopfdruck auf der Fernbedienung auszulösen. Ein Monoflop setzt einen neuen Zustand (Relais offen oder geschlossen) und hält diesen für eine bestimmte Zeit (1,5s im Beispielquelltext). Nach dieser Zeit wird der vorheriger Zustand wiederhergestellt. Dieses Ansatz simuliert einen Knopfdruck der für 1,5s (1500ms) anhält.

Gemäße der Hardware-Aufbau Beschreibung ist die Fernbedienung wie folgt mit den Relais verbunden:

Signal Relais
A 0
B 1
ON 2
OFF 3

Um "A ON" auf der Fernbedienung auszulösen müssen also die Relais 0 und 2 des Industrial Quad Relay Bricklets geschlossen werden. Dies wird durch die Bitmaske (1 << 0) | (1 << 2) repräsentiert.

Die Monoflop-Funktion kann also mit dieser Bitmaske und einer Zeit von 1500ms aufgerufen werden um einen Knopfdruck von "A ON" zu simulieren. Im Folgenden wird dies in einem minimalen Beispielquelltext dargestellt.

Quelltext

Download

import com.tinkerforge.IPConnection;
import com.tinkerforge.BrickletIndustrialQuadRelay;

public class RemoteSwitch {
    private static final String HOST = "localhost";
    private static final int PORT = 4223;
    private static final String UID = "ctG"; // Change to your UID
    private static final int VALUE_A_ON  = (1 << 0) | (1 << 2); // Pin 0 and 2 high
    private static final int VALUE_A_OFF = (1 << 0) | (1 << 3); // Pin 0 and 3 high
    private static final int VALUE_B_ON  = (1 << 1) | (1 << 2); // Pin 1 and 2 high
    private static final int VALUE_B_OFF = (1 << 1) | (1 << 3); // Pin 1 and 3 high

    // Note: To make the example code cleaner we do not handle exceptions. Exceptions you
    //       might normally want to catch are described in the documentation
    public static void main(String args[]) throws Exception {
        IPConnection ipcon = new IPConnection(); // Create IP connection
        BrickletIndustrialQuadRelay iqr = new BrickletIndustrialQuadRelay(UID, ipcon); // Create device object

        ipcon.connect(HOST, PORT); // Connect to brickd
        // Don't use device before ipcon is connected

        iqr.setMonoflop(VALUE_A_ON, 15, 1500); // Set pins to high for 1.5 seconds

        ipcon.disconnect();
    }
}