Почему мой ESP32 не отправляет полную полезную нагрузку на мой сервер Python [закрыто]Python

Программы на Python
Ответить
Anonymous
 Почему мой ESP32 не отправляет полную полезную нагрузку на мой сервер Python [закрыто]

Сообщение Anonymous »

Недавно я работаю над проектом, в котором ESP32 используется в качестве клиента, а Python FastAPI — в качестве сервера.
После подключения происходит процесс аутентификации, который требует от них взаимодействия с использованием WebSocket (сообщения находятся в формате JSON).
Проблема в том, что ESP32 сообщил, что отправил сообщение

Код: Выделить всё

{"type":"auth_response","id":"CHY","data":{"hash":"f6bb6993e5a44bcde621d6bdd4a3dcb7fcfa5ac0b9a8137d88bed81510849fed","time":19726}}
но сервер получил только {.
Я использовал Postman для тестирования сервера, и он работает нормально, поэтому я подозреваю, что проблема заключается в ESP32.
Это код для ESP32.

Код: Выделить всё

void webSocketEvent(WStype_t type, uint8_t *payload, size_t length) {
switch (type) {
...
case WStype_TEXT:
String text = String((char *)payload);
doc.clear();
DeserializationError error = deserializeJson(doc, text);
if (error) {
break;
}
const char *type = doc["type"];
if (strcmp(type, "challenge") == 0) {
challengeNonce = doc["data"].as();
challengeSignal = true;
}
break;
}
}

void setup() {
xTaskCreatePinnedToCore(DataControl, /*Function*/
"Task1",     /*name*/
20000,       /*stack space*/
NULL,        /*input*/
0,           /*priority 0*/
&Task1,      /*address*/
1);          /*core */
}

void DataControl(void *pvParameters) {
while (true) {
if (WiFi.status() != WL_CONNECTED) {
initWifi();
}
webSocket.loop();
if (challengeSignal) {
challengeSignal = false;
String responseHash = calculateHMAC(challengeNonce, SHARED_SECRET);

JsonDocument outDoc;
outDoc["type"] = "auth_response";
outDoc["id"] = StationID;
outDoc["data"]["hash"] = responseHash;
outDoc["data"]["time"] = millis();

String responseJson;
serializeJson(outDoc, responseJson);

webSocket.sendTXT(responseJson);
Serial.println("Response Sent!");
}
vTaskDelay(pdMS_TO_TICKS(1));
}
}
а это код сервера.

Код: Выделить всё

@router.websocket("/ws/data/{client_id}")
async def websocket_data_endpoint(websocket: WebSocket, client_id: str, background: BackgroundTasks):
await websocket.accept()
logger.info(f"ESP32 {client_id} connected via WebSocket")
nonce = secrets.token_hex(128)
payload = {
"type": "challenge",
"data": nonce
}
await websocket.send_json(payload)
try:
data = await websocket.receive_text()
print(data)
...
Я искал относительные проблемы, но не нашел ни одной, а обращение к ИИ все равно не решило проблему.
Я хотел бы знать, знает ли кто-нибудь, как это исправить. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/798 ... hon-server
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»