У меня проблемы с тем, чтобы убедиться, что мой проект действительно осуществим.
Что я хочу архивировать: управлять кофемашиной Senseo через Интернет. Это сводится к простому управлению 2 кнопками.
Первое простое решение:
- Установите сервер NodeJS на моем Raspberry Pi.
- Я подключаю Raspberry GPIO к 2 транзисторам, чтобы управлять кнопками кофемашины
- Я могу контролировать Raspberry GPIO прямо в Javascript. Например, вызов http://myraspberrypi.com/makemeacoffee активирует GPIO, активирует кнопки и потоки кофе
Но: я не хочу подключать свою малину к моей кофемашине (мне нужен Pi для других целей), и я думаю, что отсоединение веб-сервера и самого контроллера - хорошая идея. Если завтра я захочу следить за температурой в моей ванной комнате или управлять второй кофемашиной (используя другой ESP8266), я хочу быть в состоянии сделать это без переосмысления всего этого.
То, что мне нужно для архивации, это ESP8266 с NodeMCU, чтобы использовать его как контроллер безголового Wi-Fi (см. Эту ссылку ). Raspberry GPIO больше не используются (в этом суть). На Pi есть только веб-сервер NodeJS.
Вот быстрый набросок архитектуры:
Позвольте мне уточнить роль основных компонентов:
- Raspberry Pi: хост веб-сервера NodeJS
- Веб-сервер NodeJS: обслуживает веб-страницы конечному пользователю. В основном страница с кнопкой «Сделай мне кофе». За кулисами нам нужно «нажать» кнопку нагрева воды, подождать 30 секунд, а затем «нажать» кнопку кофе. Веб-сервер делает это, отправляя HTTP-запросы на ESP8266 (через Wi-Fi). Сервер NodeJS также ведет журнал и анализ данных (сколько кофе вы выпили в этом году?)
- ESP8266: использует NodeMCU. Его GPIO подключены к транзистору, управляющему кнопками кофемашины. Меня не волнует, как включить ESP8266. Он запускает веб-сервер для прослушивания запросов Raspberry Pi и соответственно выполняет действия с GPIO.
Возможна ли эта архитектура? Эта архитектура гибкая?
РЕДАКТИРОВАТЬ, чтобы ответить Шон Houlihane (спойлер, чтобы сохранить пост относительно коротким):
Я не уверен на 100% в этом, но транзистора вполне достаточно. Переключатель кофемашины работает при низком напряжении (3,3 В), и ESP8266 не будет делить землю с кофемашиной.
Что касается измерения температуры и контроля уровня воды, кофемашина Senseo имеет эту встроенную функцию. Типичное использование: нажмите центральную кнопку, чтобы запустить процесс нагрева, выберите размер кофе, нажав кнопку «одинарная» или «двойная». Как только процесс нагрева заканчивается, кофе начинает течь. Если воды недостаточно, она заканчивается, а светодиод мигает.
Прогресс, которого я ожидаю:
- Версия 1.0 будет "Просто запустите кофеварку, я уверен, что она готова". Я контролирую одну кнопку чашки и кнопку нагрева.
Версия 2.0 будет «Запустить машину и дать мне обратную связь». У меня был еще один ESP8266, подключенный к светодиоду обратной связи (чтобы я мог знать, когда он нагревается, а когда нет воды) и еще один в масштабе, чтобы убедиться, что чашка есть перед запуском кофемашины. Я мог бы также добавить предупреждение, когда кофемашина запущена, чтобы сказать пользователю, чтобы изменить стручок.
Версия 3.0 будет искать способ узнать, был ли изменен модуль, отслеживая открытие механизма с помощью какого-то переключателя. Но это выходит за рамки моего проекта на данный момент.