Prosba o dokumentacje + inne sprawy

User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Wygląda obiecująco. Najlepiej jakby osoby nieznające protokołu napisały co jest dla nich niejasne.
SUPLA.... Nareszcie w domu.
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

Główne pytanie czy niczego nie przekręciłem. Wszystko co tam jest napisane jest zgodne z prawdą?
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Przyjrzę się dokładnie. Póki co opis deserializacji bym zmienił. Sugeruję przedstawić protokół w formie ramki danych.

[zmienna rozmiar w bajtach i typ na jaki jest rzutowana][zmienna][zmienna].....

tabelka pod
"Below I put some examples:" nie jest dla mnie jasna. Tzn jaki jest jej cel ?

"Data types that I use above:"
jeżeli już to można wypisać wszystkie typy używane przez protokół... z godnie ze standardem C.

Aaa i istotna sprawa. Przy obsłudze ramki rzutowanej na strukturę nie stosuje się wyrównywania pakownia danych
#pragma pack(push, 1)
SUPLA.... Nareszcie w domu.
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

Opis protokołu przygotowałem dla osób zainteresowanych implementacją go w językach innych niż C/C++. Z tego też powodu starałem się tutaj umieścić coś na wzór "how-to implement Supla protocol in your language".
pzygmunt wrote: Sat Jul 29, 2017 11:22 am Przyjrzę się dokładnie. Póki co opis deserializacji bym zmienił. Sugeruję przedstawić protokół w formie ramki danych.

[zmienna rozmiar w bajtach i typ na jaki jest rzutowana][zmienna][zmienna].....
W którym miejscu byś to zmienił? Nie do końca cię rozumiem.
pzygmunt wrote: Sat Jul 29, 2017 11:22 am tabelka pod
"Below I put some examples:" nie jest dla mnie jasna. Tzn jaki jest jej cel ?
Zawsze lepiej się czyta taki opisy jeżeli później można odnieść się do przykładu. Dodatkowo z tej tabelki można zrobić sobie fajne unit testy :).
pzygmunt wrote: Sat Jul 29, 2017 11:22 am "Data types that I use above:"
jeżeli już to można wypisać wszystkie typy używane przez protokół... z godnie ze standardem C.
Których typów (z protokołu) brakuje? Co do typów z C - z tego co widzę (https://en.wikipedia.org/wiki/C_data_types) to ja dodałem tylko typ byte, odpowiednik signed chara.
pzygmunt wrote: Sat Jul 29, 2017 11:22 am Aaa i istotna sprawa. Przy obsłudze ramki rzutowanej na strukturę nie stosuje się wyrównywania pakownia danych
#pragma pack(push, 1)
Nie jestem programistą C. Nie mam pojęcia co to znaczy :).
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Co ma mówić pierwsza tabelka przy deserializacji ?
SUPLA.... Nareszcie w domu.
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

Ma być przykładem jak przebiega kodowanie, tj. każdy wiersz jest swego rodzaju testem unitowym
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

pzygmunt wrote: Sat Jul 29, 2017 11:22 am Aaa i istotna sprawa. Przy obsłudze ramki rzutowanej na strukturę nie stosuje się wyrównywania pakownia danych
#pragma pack(push, 1)
Sprawdziłem o co chodzi z tą pragmą (https://stackoverflow.com/a/3318475/1819402). Z tego co widzę nie ma to znaczenia dla samego protokołu. Z pewnością jest to istotne z poziomu C/C++, natomiast dla osób programujących w innych językach nie ma to kompletnie znaczenia.
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Myślę, że nad opisem deserializacji trzeba będzie jeszcze popracować. Tak czy siak wrzucam do głównego repozytorium. Jak pytania się pojawią to będziemy rozbudowywać.
SUPLA.... Nareszcie w domu.
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

Super, dzięki. Najlepiej jak ktoś nowy zacznie implementować protokół (np w Pythonie) i da jakiś feedback.
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla
magx2
Posts: 417
Joined: Wed May 17, 2017 1:27 pm
Has thanked: 1 time
Been thanked: 1 time

Post

Mam problem z rejestracją urządzenia. Zamel ROW-01 cały czas wysyła mi pakiet o rejestrację pomimo tego, że ja mu odpowiadam że jest już zarejestrowany.

To jest wiadomość, którą dostaję:
TSuplaDataPacket{
version=5,
rrId=1,
callType=65,
dataSize=297,
data=[123, 0, 0, 0, 113, 119, 101, 114, 116, 121, 117, 105, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 22, -81, 125, -64, 116, -19, 2, 101, 103, -127, 16, -6, -66, 96, 60, 90, 65, 77, 69, 76, 32, 82, 79, 87, 45, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 46, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 84, 11, 0, 0, 96, 0, 0, 0, -116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]}
Patrząc po 65 należy to rozpakować do TDS_SuplaRegisterDevice_B:
TDS_SuplaRegisterDevice_B{
locationId=123,
locationPwd=[113, 119, 101, 114, 116, 121, 117, 105, 111, 112, i same 0 do końca],
guid=[-33, 22, -81, 125, -64, 116, -19, 2, 101, 103, -127, 16, -6, -66, 96, 60],
name=[90, 65, 77, 69, 76, 32, 82, 79, 87, 45, 48, 49, i same 0 do końca],
softVer=[50, 46, 48, i same 0 do końca],
channelCount=1,
channels=[] // jak na razie nie parsuję kanałów
W odpowiedzi wysyłam:
TSD_SuplaRegisterDeviceResult{
resultCode=3,
activityTimeout=100,
version=5,
versionMin=2
}
Który parsuję do TSuplaDataPacket:
TSuplaDataPacket{
version=5,
rrId=7,
callType=70,
dataSize=7,
data=[3, 0, 0, 0, 100, 5, 2]
}
Powiedz mi proszę gdzie mam błąd?
Supla ❤️ Open HAB - https://github.com/magx2/openhab-supla

Return to “Zagadnienia ogólne”