From 356f88ee655340e3745dce503e0d2c942c625c8a Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 1 Mar 2021 17:00:10 +0300 Subject: [PATCH] upd --- docs/Протокол/GyverLamp2_UDP.txt | 13 +++++++++++-- docs/Протокол/GyverLamp_UDP.xlsx | Bin 14147 -> 14139 bytes 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/Протокол/GyverLamp2_UDP.txt b/docs/Протокол/GyverLamp2_UDP.txt index 77f038e..4d208d1 100644 --- a/docs/Протокол/GyverLamp2_UDP.txt +++ b/docs/Протокол/GyverLamp2_UDP.txt @@ -1,3 +1,12 @@ Отправляем на адрес x.x.x.255, первые 3 октета - адрес сети, к которой подключен смартфон -UDP пакет вида <ключ>,<канал>,<тип>,<дата1>,<дата2>... разделитель - запятая -Ключ зашит в прошивке и задаётся в приложении (защита от управления "чужаком") \ No newline at end of file + +Порт UDP формируется из имени сети: +GLkey = "ключ" +portNum = 17; // uint16_t (или % 65536) +for (byte i = 0; i < длина ключа; i++) portNum *= GLkey[i]; +portNum %= 15000; +portNum += 50000; +portNum += номер группы +Таким образом порт лежит в диапазоне 50 001... 65 010 + +UDP пакет вида ,<тип>,<дата1>,<дата2>... разделитель - запятая \ No newline at end of file diff --git a/docs/Протокол/GyverLamp_UDP.xlsx b/docs/Протокол/GyverLamp_UDP.xlsx index e72679ddb141fd2c31818f544705f323b799f74e..b0777e5311c1af61feeabf62ea6a253accfb23e4 100644 GIT binary patch delta 8721 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