Ciao a tutti,
vorrei realizzare una interfaccia radio-web bidirezionale tra due dispositivi radio basati su LoRa con funzioni di client e server.
L'utilizzo immaginato è il seguente:
1. Il client invia una richiesta al server.
2. Il server, ricevuta la richiesta, effettua una chiamata HTTP, processa i dati ricevuti e ne effettua il parsing.
3. Il server invia al client i dati formattati come risposta.
Nella realizzazione sono emerse due criticità:
1. Auto-ricezione del messaggio:
Ho notato che il server "vede" il messaggio trasmesso. C'è un modo efficace per evitare che il server riceva il suo stesso messaggio?
In particolare, il problema è qui (server):
while True:
if lora.available() > 0:
data = parse_incoming(..)
res = fetch(data)
lora.send_transparent_message(res)
Forse il destination address?
2. Dati troncati:
Quando il server riceve una trasmissione dal client, ho notato che questi dati vengono spesso troncati o non arrivano completi. Come posso garantire che i dati vengano ricevuti integralmente e in modo corretto?
Il problema sembra essere nel file
lora_e22.py alla riga 657
time.sleep(0.08) # wait for the rest of the message
Aumentando lo sleep time, l'errors di ricezione viene spostato più avanti nel messaggio.
Lorem ipsum dolor sit amet, consectetur adipiscig elit.
La parola dovrebbe essere
adipiscing, ma invece una lettera è stata omessa. Modificando lo sleep time a 0.10s il messaggio è ricevuto per intero, ma non credo sia il modo corretto di risolvere il problema. Sono certo si ripresenterebbe in caso di pacchetti dati più pesanti.
Grazie in anticipo per qualsiasi aiuto o suggerimento.