-
Notifications
You must be signed in to change notification settings - Fork 0
Webserver_descrizione_breve
Questa pagina include l'introduzione e una descrizione breve relativa al sistema di monitoraggio di temperatura e umidita'
Nella cartella "html" sono contenuti tutti gli script, backend e frontend, del sistema di monitoraggio.
Nelle cartella "credentials" e' presente il file "credentials.ini" letto da db_connection.php
con le credenziali per accedere al database
Questa sezione parlera' brevemente di cosa fanno i file presenti nella cartella "html", per i dettagli di funzionamento andare nella sezione Descrizione
Lato backend viene utilizzato il linguaggio PHP:
Questi script non restituiscono niente di visualizzabile, definiscono variabili/funzioni usati da altri script
-
db_connection.php
permette di connettersi al database db100_100 di MySQL (viene usato da tutti gli script che inseriscono/selezionano dati dal database) - ottenere la lista dei colori selezionabili dall'utente per verificare che il colore spedito dalla frontend sia valido (definisce array con i colori,
get_colorslist.php
) - ottenere la lista delle planimetrie in img/maps (definisce la funzione per ottenere l'array,
getmaps.php
) -
rgb_hexconvertion.php
permette di convertire i valori dei colori esadecimali in rgb e viceversa e di ottenere colori piu' chiari o scuri di un colore (valore esadecimali)
Sono presenti nel percorso
/static/php/
Questi sono script che formalmente rispondono a richieste GET
Permettono di:
- ottenere le proprieta' spazio libero, spazio totale e spazio occupato e li restituisce in formato JSON (
diskinfo.php
) - ottenere il colore selezionato dall'utente (
get_selectedcolor.php
) - ottenere la lista dei colori selezionabili dall'utente in formato JSON per poterli visualizzare nella pagina impostazioni (
getcolors.php
) - ottenere la lista delle rilevazioni in formato JSON (
getdata.php
)Ottiene tutte le rilevazioni, sarebbe meglio utilizzare un parametro per ottenere l'id_node
- ottenere la lista delle ultime rilevazioni per nodo (
getlatestdata.php
) - ottenere gli ultimi valori di RSSI per nodo (
getrssi.php
) - ottenere la lista delle planimetrie in JSON per visualizzarle nella frontend (
showmaps.php
)
Sono presenti nel percorso
/static/php/
Questi sono script che formalmente dovrebbero rispondere a richieste POST
Tutti gli script usano richieste GET per semplicita', ma bisognerebbe usare POST
Permettono di:
- ricevere il colore selezionato dalla frontend per inserirlo nella tabella t_options (
sendcolor.php
) - ricevere la planimetria selezionata dalla frontend, inserisce l'opzione nella tabella t_options (
sendmap.php
) - ricevere il range dei timestamp (timestamp minimo e timestamp massimo) delle rilevazioni da visualizzare nella frontend, inserisce le opzioni nella tabella t_options (
sendopt.php
) - ricevere la rilevazione dal node MCU per inserirlo nella tabella t_sensors (
sensors.php
)
Sono presenti nel percorso
/static/php/
Questi sono script importati da index.html come se fossero file CSS
Permettono di:
- restituire il CSS per la pagina delle informazioni con il colore selezionato dall'utente (
infos/cm_style.php
) - restituire il CSS per la pagina delle informazioni per l'effetto "typewriter" (
infos/style.php
)Permetterebbe facilmente la possibilita' di modificare la tip da bianco ad un altro colore, ma attualmente e' possibile modificarlo solo modificando il file
- restituire il CSS per modificare il colore (selezionato dall'utente) dei pulsanti nella pagina delle impostazioni (
settings/_cm_button.php
, usato dasettings/cm_style.php
) - restituire il CSS per modificare il colore (selezionato dall'utente) del datepicker nella pagina delle impostazioni (
settings/_cm_datepicker.php
, usato dasettings/cm_style.php
) - restituire il CSS per modificare il colore (selezionato dall'utente) dello switch nella pagina delle impostazioni (
settings/_cm_switch.php
, usato dasettings/cm_style.php
) - restituire il CSS per modificare il colore (selezionato dall'utente) del timepicker nella pagina delle impostazioni (
settings/_cm_timepicker.php
, usato dasettings/cm_style.php
) - restituire il CSS per modificare il colore (selezionato dall'utente) di tutti gli elementi nella pagina delle impostazioni (
settings/cm_style.php
)Il css modificato e' materialize
Sono presenti nel percorso
/static/css/
planselector.php
restituisce l'elemento SVG con la planimetria selezionata dall'utente,
dopo aver verificato il suo mime type e la sua reale esistenza
Risiede nel percorso
/static/img/
Credits: https://glue-labs.com/articoli/come-scrivere-codice-javascript-usare-una-styleguide-google
Javascript, in particolare il framework Vue, si occupa del lato Frontend.
Credits: https://vuejs.org/
Vue e' un framework Javascript per creare interfacce utente.
Si potrebbe dire che permette di avere istruzioni di linguaggi di programmazione all'interno del semplice HTML, quindi e' possibile usare variabili, cicli for, condizioni if-elif-else...
In questo modo e' possibile rendere la pagina piu' dinamica e grazie al suo DOM virtuale la pagina e' "reattiva", gli eventi hanno effetto in tempo reale
Vue e' stato usato nel sistema piu' facile possibile: e' stato "allegato" all'html come tutti gli altri script javascript.
Per progetti complessi sarebbe opportuno utilizzare componenti Vue (file .vue per componente con i propri CSS, javascript e html), renderebbero l'applicazione "scalable" e i componenti sarebbero facilmente riutilizzabili in altri progetti ma aumenterebbero la complessita' di passare dalla fase di sviluppo alla produzione: sarebbe necessaria una fase di build per convertire i file vue (file non riconosciuti dai browser) in javascript successivamente allegabile all'HTML. Per fare le build occorrerebbe utilizzare un "module bundler" come Webpack e configurarlo a dovere.
Oltre a Vue questo progetto utilizza Vue Router per gestire la navigazione tra le pagine, rendendo l'applicazione una SPA (Single Page Application). La navigazione nell'applicazione appare fluida lato utente perche' tutte le pagine vengono caricate contemporaneamente una volta sola.
L'HTML importa diversi script javascript per aggiungere funzionalita':
-
floorplan/svg.min.js
: utility per fare operazioni su elementi svgCredits: https://svgjs.com/docs/2.7/
-
materialize/materialize.min.js
per gli elementi di materialize (usato per il datepicker e il timepicker nelle impostazioni) -
mdbootstrap/bootstrap.min.js
,mdbootstrap/jquery-3.3.1.min.js
,mdbootstrap/mdb.min.js
emdbootstrap/popper.min.js
: javascript per mdbootstrap -
options/axios.min.js
: permette di fare richieste asincrone (GET, POST...) -
timestamp/t2ts.js
: permette di fare conversione tempo da formato "hh:mm tt" a timestamp -
touch/hammer.min.js
: gestisce eventi touch, come lo swipe
-
main/graph.js
: Crea oggetto con pagina grafici -
main/home.js
: Crea oggetto con pagina principale -
main/infos.js
: Crea oggetto con pagina informazioni -
main/options.js
: Crea oggetto con pagina impostazioni - Javascript in index.html: usa le variabili con le pagine per configurare le route delle pagine
Credits: https://en.wikipedia.org/wiki/Cascading_Style_Sheets
Il CSS si occupa di rendere gradevole l'interfaccia utente
Credits: https://github.com/mdbootstrap
Molti degli elementi usano come stile lo stile di mdbootstrap:
-
/static/css/all.css
: file font-awesome per il font (posizionato in/static/font/roboto
) -
/static/css/bootstrap.min.css
: stili bootstrap -
/static/css/mdb.min.css
: stili specifici di mdbootstrap
mdbootstrap e' un framework che si basa su bootstrap sul quale aggiunge lo stile material design ("md")
mdbootstrap e' disponibile sia in versione gratuito sia in versione a pagamento: purtroppo la versione gratuita non include timepicker e datepicker e lo stile dello switch gratuito non e' bello come lo switch disponibile in altre alternative
Credits: https://extensions.typo3.org/extension/t3content_materializecss/
Per il timepicker, datepicker e switch viene usato materialize:
/static/css/materialize.min.css
Una parte del CSS e' stata scritta apposta per questo progetto in /static/css/main/style.css
:
- Rende la pagina alta almeno di una pagina e larga tutta la pagina
- Rende le pagine assolute per rendere piu' gradevole l'effetto di traslazione delle pagine
- Mantiene responsive planimetria e titolo riducendo la loro dimensione per i dispositivi mobile
- Crea l'effetto di traslazione quando si passa tra una pagina ad un'altra
- Crea la griglia con i quadrati colorati per permettere la selezione da parte dell'utente del colore da utilizzare nell'interfaccia
- Definisce lo stile dei pulsanti per tornare indietro
- User Guide
- Customization
-
Raspberry Pi
-
web server
- frontend
- backend
- database
- network
-
web server
- Node MCU
- Manuale Utente
- Personalizzazioni
-
Raspberry Pi
-
server web
- descrizione breve sistema monitoraggio
- descrizione per navigazione
- descrizione per componente (TODO)
- database
- rete
-
server web
- Node MCU