Protokół integracji (AMX, Lutron, Crestron, Control4, Clipsal)

System TapHome potrafi integrować się z innymi systemami za pomocą prostego protokołu integracyjnego ASCII. Umożliwia to innym systemom pobieranie informacji i sterowanie urządzeniami TapHome.

System TapHome potrafi integrować się z innymi systemami za pomocą prostego protokołu integracyjnego ASCII. Umożliwia to innym systemom pobieranie informacji i sterowanie urządzeniami TapHome.

Obsługiwane warstwy komunikacyjne

  • RS485
  • TCP/IP
  • UDP/IP

Opis protokołu

Protokół obsługuje następujące polecenia:

HELP, LIST, GET, SET, ACTION, HEADER, AUTOSEND

Każde polecenie musi być zakończone znakami CRLF (0x0D 0x0A, \r\n).

Polecenie HELP

Polecenie HELP wyświetla podstawowe informacje o obsługiwanych poleceniach.

HEADER [ON/OFF] włącza/wyłącza wysyłanie nagłówka.

LIST wyświetla wszystkie udostępnione urządzenia.

GET [ID] pobiera urządzenie o identyfikatorze ID.

SET [ID ST VAL1 .. VALN] ustawia urządzenie o identyfikatorze ID, status ST i wartości VAL1 do VALN.

ACTION [ID NUM VAL] wykonuje na urządzeniu o identyfikatorze ID akcję o numerze NUM z wartością VAL.

PUSHALL [ON/OFF] włącza/wyłącza wysyłanie zmian we wszystkich urządzeniach.

Polecenie HEADER

Polecenie HEADER przełącza między dwoma możliwymi sposobami wyjścia danych. Gdy nagłówek jest włączony (ON), wraz z danymi wysyłane są informacje opisowe. Gdy nagłówek jest wyłączony (OFF), wysyłane są tylko dane.

HEADER bez parametrów wysyła informację o aktualnym stanie nagłówka.

HEADER ON włącza wysyłanie nagłówka.

HEADER OFF wyłącza wysyłanie nagłówka.

Polecenie LIST

Polecenie LIST wyświetla wszystkie udostępnione urządzenia.

Wyświetlane są następujące informacje:

ID urządzenia – numeryczny identyfikator.

Typ urządzenia – opis tekstowy typu urządzenia (Blind, Switch, …).

Nazwa urządzenia – jak ustawiono w systemie TapHome.

Status urządzenia – informacja tekstowa.

Przykładowy wynik polecenia LIST:

1
2
3
4
5
6
7
8
ID:137,Type:Blind,Name:Virtual blind,Status:OK
ID:51,Type:Switch,Name:Ex Switch,Status:OK
ID:2,Type:MultiValueSwitch,Name:Heating & Cooling,Status:OK
ID:205,Type:PushButton,Name:Push button,Status:OK
ID:242,Type:Dimmer,Name:Analog output,Status:OK
ID:68,Type:Thermostat,Name:Thermostat 1,Status:UnknownError
ID:145,Type:Variable,Name:KNXVariable,Status:OK
ID:143,Type:Variable,Name:Sun azimuth,Status:OK

Polecenie GET

Polecenie GET wymaga jednego parametru – identyfikatora urządzenia. Zwraca status urządzenia oraz wartości jako liczby.

Przykładowy wynik polecenia GET 137:

1
ID:137,DeviceStatus:0,BlindsLevel:41,BlindsSlope:41

Przykład, gdy nagłówek jest wyłączony:

1
137,0,41,41

Polecenie SET

Polecenie SET wymaga co najmniej trzech parametrów. Najpierw identyfikator urządzenia, następnie nowy status urządzenia do ustawienia, a na końcu co najmniej jednej wartości do ustawienia. Dla urządzeń z więcej niż jedną wartością wszystkie wartości powinny następować po sobie – na przykład żaluzja wymaga podania zarówno nowego poziomu, jak i nowego kąta.

Przykład odpowiedzi na polecenie SET 137 0 35 80 (z nagłówkiem i bez nagłówka):

1
2
ID:137,DeviceStatus:0,BlindsLevel:35,BlindsSlope:80
137,0,35,80

Polecenie ACTION

Polecenie ACTION wykonuje na urządzeniu o identyfikatorze ID akcję o numerze NUM z wartością VAL. Akcje zdefiniowane są tylko dla żaluzji. Istnieją trzy numery akcji dla żaluzji:

0 zatrzymanie żaluzji

1 regulacja poziomu z aktualnej pozycji o ±wartość

2 regulacja kąta lameli z aktualnej pozycji o ±wartość

Przykładowy wynik polecenia ACTION 137 1 -20:

1
ID:137,AdjustBlindsLevel:-20

Polecenie PUSHALL

Polecenie PUSHALL włącza wysyłanie zmian wszystkich urządzeń. Informacje są wysyłane w tym samym formacie co odpowiedź na polecenie GET. Należy pamiętać, że gdy używane jest na linii RS485, może wystąpić konflikt na magistrali prowadzący do rozbieżności danych. Dlatego sugerujemy używanie tego polecenia tylko na liniach w pełnym dupleksie, takich jak RS232 lub RS422. Istnieje również możliwość włączenia go na linii RS485 w systemach, w których nie będą używane polecenia SET ani ACTION – to znaczy tylko w systemach monitorujących. W liniach RS485, gdzie wymagane są polecenia SET i ACTION, sugerujemy użycie okresowego pobierania za pomocą polecenia GET zamiast automatycznego monitorowania.

Tryb adresowy

Gdy ustawione jest unikalne ID interfejsu, możliwe jest użycie wszystkich poleceń w trybie adresowym. W tym mode nagłówek z adresem poprzedza samą komendę. Nagłówki adresowe to sekwencja !InterfaceID:, gdzie InterfaceID jest ustawiony w konfiguracji interfejsu. Każda linia odpowiedzi będzie również poprzedzona tym samym nagłówkiem. Tylko interfejs o poprawnym adresie odpowie – błędne adresowanie nie zostanie odzwierciedlone w odpowiedzi.

Przykład żądania w trybie adresowym za pomocą polecenia !2:LIST:

1
klad_adresa;

Konfiguracja

Aby udostępnić urządzenia w protokole integracyjnym, najpierw przejdź do Udostępnianie urządzeń i wybierz Dodaj nowy interfejs. Z dostępnych interfejsów wybierz jeden z Protokół integracyjny RS485, Protokół integracyjny TCP lub Protokół integracyjny UDP:

IntegrationsProtocols

Po dodaniu interfejsu, zgodnie z typem, wypełnij pozostałe parametry. Ustaw unikalny identyfikator interfejsu dla każdego interfejsu, jeśli chcesz używać trybu adresowego.

Wybierz terminal do komunikacji i wypełnij parametry komunikacyjne dla RS485. Ustaw wszystkie parametry linii szeregowej zgodnie z wymaganiami podłączonego klienta.

InterfaceParameters

Ustaw port TCP dla interfejsu podrzędnego:

TCPSettings

Ustaw port UDP dla interfejsu podrzędnego:

UDPSettings

Następnie użyj opcji Dodaj urządzenie, aby dodać swoje urządzenia do udostępnionych urządzeń:

AddDevice

Wybierz urządzenie z listy oferowanych urządzeń. Należy pamiętać, że już dodane urządzenia są wyszarzone.

Po dodaniu urządzenia zostaje ono wyświetlone na liście urządzeń dla interfejsu protokołu integracyjnego:

DevicesList

Kliknij urządzenie, aby wyświetlić informacje o nim, zmienić automatycznie wygenerowany identyfikator urządzenia lub usunąć urządzenie z udostępnionych urządzeń.

DeviceInfo

Obsługiwane urządzenia

Poniższe urządzenia są obecnie obsługiwane do udostępniania w protokole integracyjnym:

Termostat, Przełącznik, Przełącznik wielowartościowy, Przycisk, Kontakt reed, Dimer / Wyjście analogowe, Zmienna, Żaluzja, Światło RGB.

Typ urządzenia Polecenia zapisu Polecenia odczytu
Termostat SET <DEVICE_ID><TTT.T>

Np. “SET 1 0 24.5”
Ustawia termostat o ID=1 na brak błędu, wartość zadaną 24.5ºC
GET <DEVICE_ID>
Odpowiedź: Wartość zadana | Temperatura | Wilgotność

Np. “GET 1”
Przełącznik SET <DEVICE_ID><0/1>

Np. “SET 1 0 1”
Włącza przełącznik o ID=1. Brak stanu błędu.
GET <DEVICE_ID>
Odpowiedź: Stan przełącznika (0 lub 1)
Przełącznik o wielu wartościach SET <DEVICE_ID>

Np. “SET 1 0 3”
Ustawia przełącznik o wielu wartościach o ID=1 na wartość 3. Brak stanu błędu.
GET <DEVICE_ID>
Odpowiedź: Wartość
Przycisk SET <DEVICE_ID><BUTTON_PRESSED>

Np. “SET 1 0 1”
Symuluje krótkie naciśnięcie przycisku o ID=1. Brak stanu błędu.
GET <DEVICE_ID>
Odpowiedź: BUTTON_PRESSED (1 .. 4)
Kontakt reedowy niedostępny GET <DEVICE_ID>
Odpowiedź: Stan (0 lub 1)
Dimer / Wyjście analogowe SET <DEVICE_ID><DDD.D>

Np. “SET 1 0 55.5”
Ustawia dimmer o ID=1 na wartość 55,5%. Brak stanu błędu.
GET <DEVICE_ID>
Odpowiedź: Wartość wyjścia analogowego (DDD.D)
Zmienna SET <DEVICE_ID><VVV.V>

Np. “SET 1 0 1234.5”
Ustawia zmienną o ID=1 na wartość 1234.5. Brak stanu błędu.
GET <DEVICE_ID>
Odpowiedź: Wartość zmiennej (VVV.V)
Światło RGB SET <DEVICE_ID>

Np. “SET 1 0 180 100 50”
Ustawia światło RGB o ID=1 na kolor cyjan, pełne nasycenie, 50% jasności. Brak stanu błędu.
GET <DEVICE_ID>
Odpowiedź: Odcień | Nasycenie | Jasność
Żaluzja SET <DEVICE_ID>

LLL … Poziom żaluzji
AAA … Kąt lameli

Np. “SET 1 0 100 50”
Ustawia żaluzję o ID=1 na poziom 100% z kątem lameli 50%.

ACTION <DEVICE_ID> 1 <+/->LLL

Np. “ACTION 1 1 -10”
Przesuwa żaluzję o 10% w górę

ACTION <DEVICE_ID> 2 <+/->AAA

Np. “ACTION 1 2 +25”
Ustawia kąty lameli na +25% (kierunek w dół).

ACTION <DEVICE_ID> 0
Zatrzymuje żaluzje
GET <DEVICE_ID>
Odpowiedź: Poziom | Kąt
Żaluzja grupowa Tak jak Żaluzja, z wyłączeniem obsługi Akcji 0 (Zatrzymanie).
Przesuwanie, Grupa przesuwania nieobsługiwane nieobsługiwane
Alarm, Licznik energii, Grupa przesuwania, Czujnik jasności, Licznik impulsów nieobsługiwane nieobsługiwane

DEVICE_ID

Nadawany kolejno każdemu urządzeniu na liście udostępnionych urządzeń. Można go ręcznie zmienić na dowolną wartość.

ERROR

0 … OK

1 … Bateria niska

2 … Bateria krytyczna

3 … Uszkodzony

4 … Błąd komunikacji

5 … Nieznany błąd

6 … Błąd autoryzacji

7 … Błąd konfiguracji

BUTTON PRESSED

1 … Krótkie naciśnięcie

2 … Długie naciśnięcie

3 … Podwójne naciśnięcie

4 … Potrójne naciśnięcie

Debugowanie komunikacji RS485

Dla połączeń RS485 możliwe jest podłączenie do komputera adaptera USB–RS485. Żądania i odpowiedzi będą widoczne w aplikacji konsolowej.

Standardowy konwerter USB do RS485

http://sk.farnell.com/ftdi/usb-rs485-we-1800-bt/cable-usb-rs485-serial-converter/dp/1740357

Uwaga: ten konwerter nie jest galwanicznie izolowany, więc należy połączyć GND konwertera z GND Core.

Oprogramowanie terminalowe dla Windows

HTerm: http://www.der-hammer.info/terminal/

Jak ustawić terminal HTerm

HTerm Configuration
  1. Ustaw właściwości połączenia tak, aby odpowiadały ustawieniom interfejsu TapHome Integration Protocol. (Uwaga: domyślna szybkość transmisji to 9600)
  2. Ustaw Newline na znak LF
  3. Ustaw Send on Enter: CR-LF
  4. Wpisz polecenie (np. “HELP”)
  5. Odczytaj odpowiedź

Uwaga: jeśli chcesz zobaczyć zmiany urządzeń TapHome w konsoli, użyj polecenia PUSHALL ON.

Debugowanie komunikacji TCP

W celu debugowania komunikacji TCP można użyć terminala Putty (https://putty.org/). Użyj następujących ustawień dla połączenia TCP:

Putty Settings

Najpierw ustaw typ połączenia na Raw, a następnie wprowadź adres IP Core oraz port ustawiony w udostępnionych ustawieniach protokołu integracyjnego TCP.