Push vs Poll
La solution que vous proposez d'envoyer des demandes AJAX fréquentes ressemble beaucoup à un sondage - vous envoyez une demande de temps en temps pour vérifier si l'état a changé. Il serait bien plus logique de pousser les modifications sur le serveur lorsque le capteur piézo détecte un changement.
C'est la différence entre ça:
Serveur: Y a - t-il quelqu'un à la porte?
Capteur: Non .
Serveur: Y a - t-il quelqu'un à la porte?
Capteur: Non .
Serveur: Y a - t-il quelqu'un à la porte?
Capteur: Non .
... répéter à l'infini ...
Et ça:
Capteur: Il y a quelqu'un à la porte!
Le premier exemple est le sondage, et le second pousse. Vous pouvez déterminer lequel aura une consommation d'énergie inférieure, un code moins complexe et une utilisation réseau réduite.
HTTP ou autre chose?
Une demande AJAX est envoyée via HTTP, elle est donc assez lourde et nécessite plusieurs prises de contact TCP par connexion (sauf si vous utilisez Keep-Alive ).
Il peut être utile d'envisager des protocoles alternatifs tels que MQTT (il y a une bonne explication dans la question « Quand et pourquoi utiliser le protocole MQTT? », Qui a un problème très similaire au vôtre).
Un courtier de messages comme MQTT pourrait être un peu plus puissant que ce dont vous avez vraiment besoin dans votre situation actuelle, mais un courtier MQTT pourrait facilement être étendu si vous choisissez d'ajouter plus d'appareils à votre réseau domestique intelligent, alors que votre système actuel de demandes AJAX le ferait. s'effondrent rapidement. Imaginez quatre ou cinq appareils différents qui s'interrogent; cela conduirait rapidement à une surcharge de votre réseau et ce serait une énorme consommation d'énergie.
Noeud et sockets Web
L'utilisation de sockets Web et de Node résoudrait le problème de l'utilisation de push au lieu de poll , donc ce serait une bonne idée à mon avis. Cependant , je soupçonne que le sondage fonctionnerait si vous ne vouliez vraiment pas apprendre Node.
Si vous voulez une solution extensible qui fonctionnera lorsque vous agrandirez votre maison intelligente, allez-y sans aucun doute - cela vous évitera beaucoup de problèmes et de larmes. Si vous voulez juste une preuve de concept rapide, le sondage fonctionnera probablement.
Mon conseil personnel est que vous devriez soit apprendre les sockets Web, soit étudier l'utilisation d'un courtier de messages comme MQTT. Vous pouvez utiliser une bibliothèque client comme Mosquitto-PHP (avec un guide par HiveMQ ) pour simplifier l'utilisation de MQTT en PHP, ou tout simplement aller avec Node et les sockets Web. Je soupçonne que les ressources d'apprentissage pour les nœuds et les sockets Web seront meilleures, mais MQTT a tendance à être privilégié pour les environnements de maison intelligente / IoT.