Wszystko masz w źródłach w postaci kodu. Dokumentacji w stylu RFC nie ma.
https://github.com/SUPLA/supla-device
https://github.com/SUPLA/supla-core/blo ... on/proto.c
https://github.com/SUPLA/supla-core/blo ... mon/srpc.c
Opis protokołu Supla
-
- Posts: 8356
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: 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
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
-
- Posts: 39
- Joined: Thu Oct 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.
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.
-
- Posts: 39
- Joined: Thu Oct 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.
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.
-
- Posts: 8356
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
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).Sheezo wrote: ↑Tue Aug 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.
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