Vous ne savez pas quelle technologie utiliser dans Smart Home System

8

Dans mon projet de collège (Smart Home System), il y a une fonctionnalité dans laquelle si quelqu'un frappe à la porte, une image doit être affichée sur un moniteur (dans un navigateur). J'implémente le capteur de porte (Piezo) en utilisant un Arduino qui doit en quelque sorte envoyer des commandes au Raspberry Pi pour prendre une photo, qui doit être envoyée au navigateur d'un autre ordinateur. Il existe plusieurs autres modules comme celui-ci. Tout est connecté à un même réseau WiFi.

Maintenant, j'espère pouvoir le faire fonctionner d'une manière ou d'une autre en utilisant PHP et MySQL et plusieurs requêtes Ajax s'exécutant en permanence, mais ce n'est probablement pas une manière très intéressante de le faire. J'ai entendu parler de node.js et des sockets Web, mais je ne suis pas sûr d'avoir le temps de l'apprendre. (Je peux si c'est absolument nécessaire)

Quoi qu'il en soit, quelqu'un peut-il me dire quelle est la bonne façon de mettre en œuvre ce type de système? Ce serait vraiment utile.

Salim Shamim
la source
3
Je pense que nous aurons du mal à identifier la meilleure façon pour vous de faire cela, car tout dépend de ce que vous savez déjà - à moins que quelqu'un ne vous pointe vers une base de code existante (mais vous n'apprendrez peut-être pas beaucoup).
Sean Houlihane
Pour qu'une alerte en temps réel soit déclenchée dans le navigateur pour un changement dans le serveur ou la base de données, NodeJS serait nécessaire. Le reste des fonctionnalités peut être géré par PHP ...!
Prashanth Benny

Réponses:

9

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.

Aurora0001
la source