MQTT - Industrial Quad Relay Bricklet

Dies ist die Beschreibung der MQTT API Bindings für das Industrial Quad Relay Bricklet. Allgemeine Informationen über die Funktionen und technischen Spezifikationen des Industrial Quad Relay Bricklet sind in dessen Hardware Beschreibung zusammengefasst.

Eine Installationanleitung für die MQTT API Bindings ist Teil deren allgemeine Beschreibung.

Beispiele

Der folgende Beispielcode ist Public Domain (CC0 1.0).

Simple

Download (example-simple.txt)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Change XYZ to the UID of your Industrial Quad Relay Bricklet

setup:
    # Turn relays alternating on/off 10 times with 100 ms delay
    for i in 0 1 2 3 4 5 6 7 8 9; do
    
        wait for 0.1s 
    
        publish '{"value_mask": 1}' to tinkerforge/request/industrial_quad_relay_bricklet/XYZ/set_value  # 1 << 0 = 1
    
        wait for 0.1s 
    
        publish '{"value_mask": 2}' to tinkerforge/request/industrial_quad_relay_bricklet/XYZ/set_value  # 1 << 1 = 2
    
        wait for 0.1s 
    
        publish '{"value_mask": 4}' to tinkerforge/request/industrial_quad_relay_bricklet/XYZ/set_value  # 1 << 2 = 4
    
        wait for 0.1s 
    
        publish '{"value_mask": 8}' to tinkerforge/request/industrial_quad_relay_bricklet/XYZ/set_value  # 1 << 3 = 8
    
    done

API

Alle veröffentlichten Payloads an die und von den MQTT-Bindings sind im JSON Format.

Falls ein Fehler auftritt, veröffentlichen die Bindings ein JSON-Objekt, das die Fehlermeldung als "_ERROR"-Attribut enthält. Das Objekt wird auf dem zugehörigen Antwort-Topic veröffentlicht: .../response/... für .../request/... und .../callback/... für .../register/....

Grundfunktionen

request/industrial_quad_relay_bricklet/<UID>/set_value
Request-Payload:
 
  • value_mask -- int

Setzt die Ausgabewerte mit einer Bitmaske (16Bit). Eine 1 in der Bitmaske bedeutet Relais geschlossen und eine 0 in der Bitmaske bedeutet Relais offen.

Zum Beispiel: Der Wert 3 bzw. 0b0011 wird die Relais 0-1 schließen und alle anderen öffnen.

Falls keine Gruppen verwendet werden (siehe request/industrial_quad_relay_bricklet/<UID>/set_group), entsprechen die Pins der Beschriftung auf dem Industrial Quad Relay Bricklet.

Falls Gruppen verwendet werden, entsprechen die Pins den Elementen der Gruppe. Element 1 in der Gruppe bekommt Pins 0-3, Element 2 Pins 4-7, Element 3 Pins 8-11 und Element 4 Pins 12-15.

Alle laufenden Monoflop Timer werden abgebrochen, wenn diese Funktion aufgerufen wird.

request/industrial_quad_relay_bricklet/<UID>/get_value
Response-Payload:
 
  • value_mask -- int

Gibt die Bitmaske zurück, wie von request/industrial_quad_relay_bricklet/<UID>/set_value gesetzt.

Fortgeschrittene Funktionen

request/industrial_quad_relay_bricklet/<UID>/set_monoflop
Request-Payload:
 
  • selection_mask -- int
  • value_mask -- int
  • time -- int

Konfiguriert einen Monoflop für die Pins, wie mittels der Bitmaske des ersten Parameters festgelegt.

Der zweite Parameter ist eine Bitmaske mit den gewünschten Zuständen der festgelegten Pins. Eine 1 in der Bitmaske bedeutet Relais geschlossen und eine 0 in der Bitmaske bedeutet Relais offen.

Der dritte Parameter stellt die Zeit (in ms) dar, welche die Pins den Zustand halten sollen.

Wenn diese Funktion mit den Parametern (9, 1, 1500) bzw. (0b1001, 0b0001, 1500) aufgerufen wird: Pin 0 wird auf geschlossen und Pin 3 auf geöffnet gesetzt. Nach 1,5s wird Pin 0 wieder geöffnet und Pin 3 geschlossen.

Ein Monoflop kann zur Ausfallsicherung verwendet werden. Beispiel: Angenommen ein RS485 Bus und ein Quad Relay Bricklet ist an ein Slave Stapel verbunden. Jetzt kann diese Funktion sekündlich, mit einem Zeitparameter von 2 Sekunden, aufgerufen werden. Der Pin wird die gesamte Zeit im Zustand geschlossen sein. Wenn jetzt die RS485 Verbindung getrennt wird, wird der Pin nach spätestens zwei Sekunden in den Zustand geöffnet wechseln.

request/industrial_quad_relay_bricklet/<UID>/get_monoflop
Request-Payload:
 
  • pin -- int
Response-Payload:
 
  • value -- int
  • time -- int
  • time_remaining -- int

Gibt (für den angegebenen Pin) den aktuellen Zustand und die Zeit, wie von request/industrial_quad_relay_bricklet/<UID>/set_monoflop gesetzt, sowie die noch verbleibende Zeit bis zum Zustandswechsel, zurück.

Wenn der Timer aktuell nicht läuft, ist die noch verbleibende Zeit 0.

request/industrial_quad_relay_bricklet/<UID>/set_group
Request-Payload:
 
  • group -- string

Setzt eine Gruppe von Quad Relay Bricklets die zusammenarbeiten sollen. Mögliche Gruppierungen können mit der Funktion request/industrial_quad_relay_bricklet/<UID>/get_available_for_group gefunden werden.

Eine Gruppe besteht aus 4 Element. Element 1 in der Gruppe bekommt Pins 0-3, Element 2 Pins 4-7, Element 3 Pins 8-11 und Element 4 Pins 12-15.

Jedes Element kann entweder auf einen der Ports ('a' bis 'd') gesetzt werden oder falls nicht genutzt 'n' gesetzt werden.

Zum Beispiel: Falls zwei Quad Relay Bricklets mit Port A und Port B verbunden sind, könnte diese Funktion mit ['a', 'b', 'n', 'n'] aufgerufen werden.

In diesem Fall wären die Pins von Port A den Werten 0-3 zugewiesen und die Pins von Port B den Werten 4-7. Es ist jetzt möglich mit der Funktion request/industrial_quad_relay_bricklet/<UID>/set_value beide Bricklets gleichzeitig zu kontrollieren.

request/industrial_quad_relay_bricklet/<UID>/get_group
Response-Payload:
 
  • group -- string

Gibt die Gruppierung zurück, wie von request/industrial_quad_relay_bricklet/<UID>/set_group gesetzt.

request/industrial_quad_relay_bricklet/<UID>/get_available_for_group
Response-Payload:
 
  • available -- int

Gibt eine Bitmaske von Ports zurück die für die Gruppierung zur Verfügung stehen. Zum Beispiel bedeutet der Wert 5 bzw. 0b0101: Port A und Port C sind mit Bricklets verbunden die zusammen gruppiert werden können.

request/industrial_quad_relay_bricklet/<UID>/set_selected_values
Request-Payload:
 
  • selection_mask -- int
  • value_mask -- int

Setzt die Ausgabewerte mit einer Bitmaske, entsprechend der Selektionsmaske. Die Bitmaske ist 16 Bit lang. true steht für ein geschlossenes Relais und false für ein offenes Relay.

Zum Beispiel: Die Werte (3, 1) bzw. (0b0011, 0b0001) wird das Relais 0 schließen, das Relais 1 öffnen und alle anderen unangetastet lassen.

Falls keine Gruppen verwendet werden (siehe request/industrial_quad_relay_bricklet/<UID>/set_group), entsprechen die Pins der Beschriftung auf dem Industrial Quad Relay Bricklet.

Falls Gruppen verwendet werden, entsprechen die Pins den Elementen der Gruppe. Element 1 in der Gruppe bekommt Pins 0-3, Element 2 Pins 4-7, Element 3 Pins 8-11 und Element 4 Pins 12-15.

Laufende Monoflop Timer für die ausgewählten Relais werden abgebrochen, wenn diese Funktion aufgerufen wird.

request/industrial_quad_relay_bricklet/<UID>/get_identity
Response-Payload:
 
  • uid -- string
  • connected_uid -- string
  • position -- string
  • hardware_version -- [int,int,int]
  • firmware_version -- [int,int,int]
  • device_identifier -- int (hat Symbole)
  • _display_name -- string

Gibt die UID, die UID zu der das Bricklet verbunden ist, die Position, die Hard- und Firmware Version sowie den Device Identifier zurück.

Die Position kann 'a', 'b', 'c' oder 'd' sein.

Eine Liste der Device Identifier Werte ist hier zu finden. Falls die symbolische Ausgabe nicht deaktiviert wurde, wird der Device Identifier auf den entsprechenden Namen im Format, welches die Topics verwenden, abgebildet.

Der Display Name enthält den Anzeigenamen des Industrial Quad Relay.

Callbacks

Callbacks können registriert werden um zeitkritische oder wiederkehrende Daten vom Gerät zu erhalten. Die Registrierung kann mit dem entsprechenden .../register/...-Topic und einem optionalen Suffix durchgeführt werden. Mit diesem Suffix kann das Callback später deregistriert werden.

Bemerkung

Callbacks für wiederkehrende Ereignisse zu verwenden ist immer zu bevorzugen gegenüber der Verwendung von Abfragen. Es wird weniger USB-Bandbreite benutzt und die Latenz ist erheblich geringer, da es keine Paketumlaufzeit gibt.

register/industrial_quad_relay_bricklet/<UID>/monoflop_done
Request-Payload:
 
  • register -- bool
Response-Payload:
 
  • selection_mask -- int
  • value_mask -- int

Ein Callback für dieses Event kann durch Senden des Payloads "true" an das .../register/industrial_quad_relay_bricklet/<UID>/monoflop_done[/<SUFFIX>]-Topic hinzugefügt werden. Ein hinzugefügtes Callback kann durch Senden des Payloads "false" an das selbe Topic wieder entfernt werden. Um mehrere (De-)Registrierungen zu unterstützen, z.B. um Nachrichten filtern zu können, kann ein optionaler Suffix verwendet werden.

Wenn das Callback ausgelöst wird, wird dessen Payload für jeden Suffix auf dem entsprechenden .../callback/industrial_quad_relay_bricklet/<UID>/monoflop_done[/<SUFFIX>]-Topic veröffentlicht.

Dieser Callback wird ausgelöst, wenn ein Monoflop Timer abläuft (0 erreicht). Payload-Member des Callbacks enthalten die beteiligten Pins als Bitmaske und den aktuellen Zustand als Bitmaske (der Zustand nach dem Monoflop).