Push vs Poll
La soluzione proposta per l'invio di frequenti richieste AJAX suona molto come il polling : si invia una richiesta ogni tanto per verificare se lo stato è cambiato. Avrebbe molto più senso spingere le modifiche al server quando il sensore piezoelettrico rileva un cambiamento.
È la differenza tra questo:
Server: c'è qualcuno alla porta?
Sensore: no .
Server: c'è qualcuno alla porta?
Sensore: no .
Server: c'è qualcuno alla porta?
Sensore: no .
... ripeti all'infinito ...
E questo:
Sensore: c'è qualcuno alla porta!
Il primo esempio è il polling e il secondo sta spingendo. Puoi sapere quale avrà un consumo di energia inferiore, un codice meno complesso e un utilizzo di rete ridotto.
HTTP o qualcos'altro?
Una richiesta AJAX viene inviata su HTTP, quindi è abbastanza pesante e richiede diversi handshake TCP per connessione (a meno che non si usi Keep-Alive ).
Potrebbe valere la pena considerare protocolli alternativi come MQTT (c'è qualche buona spiegazione nella domanda " Quando e perché usare il protocollo MQTT? ", Che ha un problema molto simile al tuo).
Un broker di messaggi come MQTT potrebbe essere un po 'più potente di quello di cui hai veramente bisogno nella tua situazione attuale, ma un broker MQTT potrebbe essere facilmente ampliato se scegliessi di aggiungere più dispositivi alla tua rete domestica intelligente, mentre il tuo attuale sistema di richieste AJAX sarebbe cadono rapidamente a pezzi. Immagina quattro o cinque diversi dispositivi che si pollano l'un l'altro; porterebbe rapidamente a sovraccaricare la rete e sarebbe un enorme consumo di energia.
Nodo e socket Web
L'utilizzo di socket Web e Node risolverebbe il problema dell'utilizzo di push anziché del sondaggio , quindi secondo me sarebbe una buona idea. Tuttavia , sospetto che il polling funzionerebbe se davvero non volessi imparare Node.
Se vuoi una soluzione estensibile che funzioni quando espandi la tua casa intelligente, vai sicuramente con la spinta: risparmierà molti problemi e lacrime. Se vuoi solo una rapida dimostrazione del concetto, il polling probabilmente funzionerà.
Il mio consiglio personale è che dovresti imparare i socket web o investigare usando un broker di messaggi come MQTT. È possibile utilizzare una libreria client come Mosquitto-PHP (con una guida di HiveMQ ) per semplificare l'utilizzo di MQTT in PHP, oppure utilizzare semplicemente Node e Web Socket. Sospetto che le risorse di apprendimento per Node e i socket Web saranno migliori, ma MQTT tende a essere favorito per gli ambienti smart home / IoT.