Opis protokołu Supla

Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

(skrótu "AT" używam tutaj jako "ActionTrigger", a nie komendy AT :) )

Pierwszy krok to utworzenie kanału typu "action trigger" i przypisanie domyślnej funkcji:
https://github.com/SUPLA/supla-device/b ... er.cpp#L28

Następnie powinieneś do rejestracji przygotować listę wspieranych "CAP" (capabilities):
https://github.com/SUPLA/supla-device/b ... er.cpp#L58

To jest mapa bitowa na polu:
https://github.com/SUPLA/supla-device/b ... oto.h#L683

To wysyłasz do serwera podczas rejestracji.

Następnie po zarejestrowaniu na serwerze Supli powinieneś odczytać jakie AT są używane:
https://github.com/SUPLA/supla-device/b ... r.cpp#L149

W odpowiedzi dostniesz listę aktywowanych akcji po stronie serwera:
https://github.com/SUPLA/supla-device/b ... r.cpp#L198

Tą listę zapisujemy. Można ją też przechowywać w pamięci trwałej, aby urządzenie wiedziało, że jest AT ustawione (np. ustawienie AT na przycisku od ROW-01 na klik 1x powoduje, że wyłączana jest lokalna funkcja przycisku, czyli sterowanie przekaźnikiem w ROW).

To chyba wszystko co dotyczy "przygotowania" i konfiguracji.

Następnie zostało nam tylko wysyłanie AT:
https://github.com/SUPLA/supla-device/b ... er.cpp#L49

Ja to zapisuję na mapie bitowej, a potem obsługa protokołu Supli odczytuje te bity i wysyła AT:
https://github.com/SUPLA/supla-device/b ... el.cpp#L29
Widzimy się na Supla Offline Party vol. 2 :!:
Sheezo
Posty: 35
Rejestracja: czw paź 21, 2021 1:28 pm

Bardzo dziękuję za info.
Akurat tak się zdarzyło, że ja używam komend "AT" do komunikacji z modemem GSM i mam też problem z ActionTrigger który też jest nazwany "AT". Taki zbieg okoliczności. Będę walczył z tym tematem.

Pozdrawiam.
Sheezo
Posty: 35
Rejestracja: czw paź 21, 2021 1:28 pm

Zacząłem walkę i niestety przegrywam. Takie pytanko, czy rejestrację AT można zrobić używając struktury TDS_SuplaRegisterDevice_B? Troszkę zagłębiłem się w kod i wydaje mi się, że aby poprawnie zarejestrować AT należy użyć TDS_SuplaRegisterDevice_E. Jeżeli to prawda to skąd mam wziąć takie parametry jak:

char Email[SUPLA_EMAIL_MAXSIZE]; To wiadomo
char AuthKey[SUPLA_AUTHKEY_SIZE]; Jakiś konkretny musi być czy można wymyślić?

char GUID[SUPLA_GUID_SIZE]; To wiadomo

char Name[SUPLA_DEVICE_NAME_MAXSIZE]; To wiadomo
char SoftVer[SUPLA_SOFTVER_MAXSIZE]; To wiadomo

char ServerName[SUPLA_SERVER_NAME_MAXSIZE]; czy to np: svr20.supla.org?

_supla_int_t Flags; co to oznacza i skąd wziąć?
_supla_int16_t ManufacturerID; musi być konkretne czy można wymyślić?
_supla_int16_t ProductID; musi być konkretne czy można wymyślić?

Ponadto w strukturze TDS_SuplaDeviceChannel_C jest parametr Flags. Co to są za flagi?

Pozdrawiam.
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Sheezo pisze: wt sie 08, 2023 3:57 pm Zacząłem walkę i niestety przegrywam. Takie pytanko, czy rejestrację AT można zrobić używając struktury TDS_SuplaRegisterDevice_B? Troszkę zagłębiłem się w kod i wydaje mi się, że aby poprawnie zarejestrować AT należy użyć TDS_SuplaRegisterDevice_E. Jeżeli to prawda to skąd mam wziąć takie parametry jak:

char Email[SUPLA_EMAIL_MAXSIZE]; To wiadomo
char AuthKey[SUPLA_AUTHKEY_SIZE]; Jakiś konkretny musi być czy można wymyślić?

char GUID[SUPLA_GUID_SIZE]; To wiadomo

char Name[SUPLA_DEVICE_NAME_MAXSIZE]; To wiadomo
char SoftVer[SUPLA_SOFTVER_MAXSIZE]; To wiadomo

char ServerName[SUPLA_SERVER_NAME_MAXSIZE]; czy to np: svr20.supla.org?

_supla_int_t Flags; co to oznacza i skąd wziąć?
_supla_int16_t ManufacturerID; musi być konkretne czy można wymyślić?
_supla_int16_t ProductID; musi być konkretne czy można wymyślić?

Ponadto w strukturze TDS_SuplaDeviceChannel_C jest parametr Flags. Co to są za flagi?

Pozdrawiam.
AuthKey oraz GUID są generowane jednorazowo w urządzeniu (losowe wartości). Oba parametry powinny być na stałe zapamiętane, bo identyfikują jednoznacznie urządzenie (GUID) oraz pozwalają się zarejestrować na serwerze (AuthKey).

Server - tak to np. svr23.supla.org

Manufacturer i Product - zostaw ustawione na 0. To jest używane głównie do komercyjnych urządzeń, w celach statystycznych oraz przy update softu przez serwery Supli.

Flags przy rejestracji urządzeń, to mapa bitowa określająca jakieś cechy całego urządzenia. Tu są możliwe opcje:
https://github.com/SUPLA/supla-core/blo ... oto.h#L512

Natomiast Flags przy Channel_C, to flagi dotyczące kanału. To też jest mapa bitowa i wartości są tutaj:
https://github.com/SUPLA/supla-core/blo ... oto.h#L515
Widzimy się na Supla Offline Party vol. 2 :!:
ODPOWIEDZ

Wróć do „Ogólna dyskusja”