Size: a a a

Сообщество Python Программистов

2021 January 15

M

Maksim in Сообщество Python Программистов
Чекни выше) Чел спрашивает, я уточняю)
источник

VA

Vadim Apenko in Сообщество Python Программистов
Maksim
Чекни выше) Чел спрашивает, я уточняю)
А, соряш) туплю
источник

in Сообщество Python Программистов
Vadim Apenko
Сижу думаю над задачей, которую придумал себе сам.
Есть микрконтроллеры ESP32 (MicroPython) способные передавать данные друг другу без участия роутера. Проблема в том, что можно за раз передать только 250 байт.
Захотелось сделать класс, который будет отвечать за склеивание пакетов в правильном порядке и повторять отправку если пакет не дошёл.
Так же на уровне класса хочется определять сразу тип данных,  JSON, Bytes, String.
Осложняется всё тем, что оперативки на ESP32 мало и держать всё в памяти может быть плохо. А ещё если мы возьмём ситуацию, когда надо передать файл, то он вообще может быть по размеру больше, чем вся оперативка ESP32.
Потом накрутил в своё мнимое ТЗ класса обработку broadcast пакетов "знакомства" и определения адресов, имён устройств, которые в зоне "слышимости".

Оказалось, весьма увлекательная задача)
Не написал я, пока, конечно же нихуя. Просто думаю что писать и как)
Кто бы как это решал?
Ещё туда всякие шифрования, чтобы защититься от перехвата пакетов
источник

M

Maksim in Сообщество Python Программистов
Vadim Apenko
Сижу думаю над задачей, которую придумал себе сам.
Есть микрконтроллеры ESP32 (MicroPython) способные передавать данные друг другу без участия роутера. Проблема в том, что можно за раз передать только 250 байт.
Захотелось сделать класс, который будет отвечать за склеивание пакетов в правильном порядке и повторять отправку если пакет не дошёл.
Так же на уровне класса хочется определять сразу тип данных,  JSON, Bytes, String.
Осложняется всё тем, что оперативки на ESP32 мало и держать всё в памяти может быть плохо. А ещё если мы возьмём ситуацию, когда надо передать файл, то он вообще может быть по размеру больше, чем вся оперативка ESP32.
Потом накрутил в своё мнимое ТЗ класса обработку broadcast пакетов "знакомства" и определения адресов, имён устройств, которые в зоне "слышимости".

Оказалось, весьма увлекательная задача)
Не написал я, пока, конечно же нихуя. Просто думаю что писать и как)
Кто бы как это решал?
Ого, крутая задумка)

Если получится, можно на хабре крутую статью замутить
источник

AS

Anton Serozhechkin in Сообщество Python Программистов
Ситуация в том, что auto_mode стоит на 3.6
Ручной ввод стоит на 3.7
То есть когда прописываю python3 возвращает 3.7
Работаю в pipenv, где 3.7
Ставлю в окружении либу, которая стучит судя по всему в 3.6, а не 3.7, потому что auto_mode на 3.6. Шутки про проверить версию в окружении - мимо пожалуйста
Вопрос в том какой вариант есть кроме удаление 3.6, для того чтобы auto_mode был 3.7?
Вариант перевода аппа на 3.6 тоже мимо
источник

VA

Vadim Apenko in Сообщество Python Программистов
Ещё туда всякие шифрования, чтобы защититься от перехвата пакетов
шифрование на аппараном уровне, дополнительно не надо
источник

in Сообщество Python Программистов
Vadim Apenko
шифрование на аппараном уровне, дополнительно не надо
Неплохо
источник

in Сообщество Python Программистов
А как проходит проверка, дошел ли пакет?
источник

VA

Vadim Apenko in Сообщество Python Программистов
Вообще то что сейчас есть умеет отправлять пакеты по конкретному адресу, броадкаст и шифрование. Это уже написано не мной.

Проблема в том, что превышает размер 250 байт
источник

VA

Vadim Apenko in Сообщество Python Программистов
А как проходит проверка, дошел ли пакет?
никак
источник

VA

Vadim Apenko in Сообщество Python Программистов
Вот над этим и думаю)
источник

R3

Rud 356 in Сообщество Python Программистов
Vadim Apenko
Вот над этим и думаю)
Мб, рассчитать хеш пакета и отправлять его размер, а потом уже ждать пока оба совпадут? Ну чисто самый рандомный вариант, который в голову пришел
источник

AS

Anton Serozhechkin in Сообщество Python Программистов
Maksim
У тебя в системе стоит 3.7, тебя для чего-то нужен 3.6, но и 3.7 удалять не хочется, так?
Стоят оба, 3.6 auto_mode, 3.7 ручной
Нужен переход auto_mode на 3.7 без удаления 3.6
источник

AS

Anton Serozhechkin in Сообщество Python Программистов
Maksim
У тебя в системе стоит 3.7, тебя для чего-то нужен 3.6, но и 3.7 удалять не хочется, так?
Вопрос как это сделать
источник

AS

Anton Serozhechkin in Сообщество Python Программистов
То что на стеке пробрасыват через usr/local/bin мимо для меня
источник

AS

Anton Serozhechkin in Сообщество Python Программистов
Have any idea?
источник

AS

Anton Serozhechkin in Сообщество Python Программистов
Или оттокнусь от трейса, может кто встречал
источник

AS

Anton Serozhechkin in Сообщество Python Программистов
источник

VA

Vadim Apenko in Сообщество Python Программистов
Rud 356
Мб, рассчитать хеш пакета и отправлять его размер, а потом уже ждать пока оба совпадут? Ну чисто самый рандомный вариант, который в голову пришел
Я пока думаю над пакетом типа

{"U": UnicalPacketCode, "T": PacketType, "PN": DataPacketNumber, "D":DATA}

где
UnicalPacketCode - уникальный номер передачи, по ней данные передаются от А до Я и склеиваются потом

PacketType - Тип данных\пакета, JSON, Bypes, etc (Как склеивать пакет... В классе, кому отдавать обработку, когда приняли всё. ) Полагаю нужно только в первом пакете серии.

DataPacketNumber - номер пакета в одном уникальном номере передачи, чтоб склеить в нужном порядке и повторять передачу если не дошло.

Ну и DATA - просто данные в виде байт, строки...
источник

VA

Vadim Apenko in Сообщество Python Программистов
Целостность пакета проверять смысла нет, она на хардварном уровне проверяется, грубо говоря я работаю с данными, которые или дошли как надо, или не дошли вовсе.
источник