Questa e un'applicazione Python che permette l'uso di un protocollo simile all'MQTT via LoRa, questo e un diagramma di esempio di applicazione di questo progetto:
Quest'applicazione in particolare si occupa della prima parte(Raspberry pi 4), essa e il cosiddetto broker, si occupa delle funzioni principali di un broker MQTT, al momento esse sono:
-
re — Regular expression operations — Python 3.9.16 documentation
-
Welcome to pySerial’s documentation — pySerial 3.4 documentation
.
├── compose.py
├── db.sqlite3
├── decompose.py
├── funzioni_logica_mqtt.py
├── gestione_schede_lora_1
│ └── settings.py
├── main.py
├── manage.py
├── mqtt_lora
│ ├── admin.py
│ └── models.py
└── regex_formats.py
In questo albero possiamo identificare vari files che corrispondono ai tre blocchi indicati nel diagramma:
-
La struttura del database Django e` contenuta nel file models.py:
Qui vengono dichiarati tre modelli, che ereditano dalla classe models.Model interna al modulo python django in se:
-
Questo oggetto rappresenta un singolo nodo o scheda, ogni scheda ha due bytes di addresso unici nello stesso canale della stessa infrastuttura, altrimenti si puo creare della confusione, fra schede e topics c'e una relazione molti a molti, vuol dire che una scheda puo essere iscritta a piu di un topic e un topic puo avere piu di una scheda iscritta ad esso
-
La struttura del blocco "messaggi seriale" si puo` trovare nei files decompose.py e regex_formats.py:
-
La struttura del blocco "logica mqtt" si trova nei files funzioni_logica_mqtt.py e main.py:
-
Invece il file main.py e il "flusso principale", esso quando riceve un messaggio dall'esp32 stabilisce che tipo di messaggio sia, lo decompone grazie alle funzioni dichiarate in decompose.py e poi inserisce le informazioni ottenute nell'opportuna funzione da funzioni_logica_mqtt.py per aggiornare il database, oltre a cio`, rimanda anche indietro i messaggi per indicare all'esp32 a chi mandare cosa
Per prima cosa assicurarsi di aver installato python, pip e git, i seguenti comandi valgono dalla shell bash su una qualsiasi distro linux(testati ubuntu 22.04 LTS e debian 11), se non presenti nel sistema verranno installati:
sudo apt install python
sudo apt install python3-pip
sudo apt install git
git clone https://github.com/Tizio1234/rete_mqtt_nodi_lora.git
Eseguire il seguente comando dalla cartella radice del progetto per installare i moduli python necessari, se si creano dei conflitti di dipendenze, conviene usare un ambiente virtuale python:
pip install -r requirements.txt
Entrare nella cartella gestione_schede_lora_1 ed eseguire i seguenti comandi per preparare il database Django:
python manage.py makemigrations
python manage.py migrate
Ora che il database e pronto dobbiamo solamente configurare la porta seriale a cui si colleghera l'esp32(ancora dobbiamo realizzare le librerie varie per l'esp32 master e i nodi), eseguire questo comando per impostare una variabile dell'ambiente di sviluppo dove mettiamo la nostra porta seriale, es.:
export esp32=/dev/ttyUSB0
python main.py