J'ai du mal à m'assurer que mon projet est vraiment réalisable.
Ce que je veux archiver: contrôler ma machine à café Senseo via Internet. Cela revient à contrôler simplement 2 boutons.
Première solution simple:
- Configurer un serveur NodeJS sur mon Raspberry Pi.
- Je branche mes GPIO Raspberry à 2 transistors, pour contrôler les boutons de la machine à café
- Je peux contrôler le RIO de framboise directement en Javascript. Par exemple, appeler http://myraspberrypi.com/makemeacoffee active le GPIO, active les boutons et le café coule
Mais: je ne veux pas brancher ma framboise sur ma machine à café (j'ai besoin du Pi à d'autres fins), et je pense que le découplage du serveur web et du contrôleur lui-même est une bonne idée. Si demain je veux surveiller la température de ma salle de bain, ou contrôler une deuxième machine à café (en utilisant une autre ESP8266) je veux pouvoir le faire sans repenser le tout.
Ce dont j'ai besoin pour archiver, c'est un ESP8266 avec NodeMCU pour l'utiliser comme contrôleur sans fil Wi-Fi (voir ce lien ). Raspberry GPIO n'est plus utilisé (c'est le point). Il n'y a qu'un serveur Web NodeJS sur le Pi.
Voici un bref aperçu de l'architecture:
Permettez-moi de clarifier le rôle des principaux composants:
- Raspberry Pi: héberge le serveur Web NodeJS
- Serveur Web NodeJS: sert les pages Web à l'utilisateur final. Fondamentalement, une page avec un bouton "Faites-moi un café". Dans les coulisses, nous devons «pousser» le bouton de chauffe jusqu'à l'eau, attendre 30 secondes, puis «pousser» le bouton du café. Le serveur Web le fait en envoyant des requêtes HTTP à l'ESP8266 (via Wi-Fi). Le serveur NodeJS effectue également la journalisation et l'analyse des données (combien de café avez-vous bu cette année?)
- ESP8266: utilise NodeMCU. Ses GPIO sont branchés sur un transistor contrôlant les boutons de la machine à café. Je me fiche de la façon d'alimenter l'ESP8266. Il exécute un serveur Web pour écouter les demandes du Raspberry Pi et effectuer des actions sur les GPIO en conséquence.
Cette architecture est-elle réalisable? Cette architecture est-elle flexible?
EDIT, pour répondre à Sean Houlihane (spoiler pour garder le post relativement court):
Je ne suis pas sûr à 100%, mais un transistor semble suffire. L'interrupteur de la machine à café fonctionne à basse tension (3,3 V) et l'ESP8266 ne partagera pas le sol avec la machine à café.
À propos de la détection de la température et du contrôle du niveau d'eau, la machine à café Senseo dispose de cette fonction intégrée. Utilisation typique: Appuyez sur le bouton central pour lancer le processus de chauffage, choisissez votre taille de café en appuyant sur le bouton "simple" ou "double". Une fois le processus de chauffe terminé, le café commence à couler. S'il n'y a pas assez d'eau, il se termine et une LED clignote.
Les progrès que j'attends:
- La version 1.0 sera "Il suffit de faire fonctionner la machine à café, je suis sûr qu'elle est prête". Je contrôle le bouton d'une tasse et le bouton de chauffe.
La version 2.0 sera "Faites fonctionner la machine et donnez-moi des commentaires". J'avais un autre ESP8266, branché sur la LED de rétroaction (pour que je puisse savoir quand il chauffe et quand il est hors de l'eau) et un autre à une échelle pour s'assurer que le tasse est là avant de faire fonctionner la machine à café. Je pourrais également ajouter une alerte lorsque la machine à café est en marche pour dire à l'utilisateur de changer la dosette.
La version 3.0 consistera à trouver un moyen de savoir si le pod a été changé, en suivant l'ouverture du mécanisme avec une sorte de commutateur. Mais cela sort du cadre de mon projet pour le moment.