Интеграция ESP32 с Alexa; Не удается корректно управлять более чем одним устройством
Недавно я создал устройство для открывания гаражных ворот, которым можно управлять через Alexa, используя эту библиотеку: https://github.com/Aircoookie/Espalexa
Все работает так, как ожидалось, что означает, что я смог обнаружить свое устройство и управлять гаражом (используя процедуры).
Проблема возникла, когда я решил интегрировать Alexa в другой ранее завершенный / действующий проект. Я смог успешно обнаружить и контролировать вторую плату, вроде как.
На данный момент я добавил в Alexa две платы ESP32, названные, конечно, по-другому. Когда я пошел тестировать вторую плату (это означало, что она была успешно обнаружена, и ESP получал большинство команд) Я заметил, что Алекса тоже открывала мой гараж. Если я отключил устройство открывания гаражных ворот от сети (первая добавляемая плата), вторая плата начнет получать все команды, хотя и с ухудшением качества; например;
В вышеупомянутой библиотеке Alexa должна иметь возможность управлять "яркостью" регулируемых ламп. Конечно, это устройство не является регулируемым источником света, но для целей интеграции эта библиотека эмулирует интеллектуальные источники света. Я никогда не вижу, чтобы Alexa пыталась установить яркость, значение которой не равно 0.
Например, это успешно выполняется на плате 2, иногда только тогда, когда плата 1 отключена от сети:
void alexa_change_hdmi(EspalexaDevice* d) {
Serial.println("Executing");
uint8_t brightness = d->getValue();
Serial.println(brightness);
doing more things....
Здесь яркость всегда печатается как 0.
Итак, после того, как я добавил плату X в alexa и успешно протестировал, я добавил плату Y в alexa. Плата X большую часть времени получает обе команды для X и Y. И наоборот, если плата Y является единственным включенным устройством. Это не предусмотрено замыслом. Я хотел бы управлять ими по отдельности (желательно с помощью одного устройства alexa).
Я не уверен, связано ли это (^) с неспособностью Alexa отличить две разные платы друг от друга. Я не уверен, почему я не получаю уровень яркости, я хотел бы использовать его для принятия решений, например;
if (brightness == '2.55') {
unsigned int irSignal[] = {9000, 4450, 600, 550, 550, 550, 600, 550, 550, 550, 600, 500, 600, 550, 550, 600, 550, 550, 600, 1650, 550, 1700, 550, 1700, 550, 1700, 550, 1700, 550, 1700, 550, 1650, 600, 1650, 550, 1700, 550, 550, 600, 550, 550, 1700, 550, 550, 600, 500, 600, 550, 550, 600, 550, 550, 600, 1650, 550, 1700, 550, 550, 600, 1650, 550, 1700, 550, 1700, 550, 1700, 550}; // NEC FF906F
irsend.sendRaw(irSignal, sizeof(irSignal) / sizeof(irSignal[0]), khz);
}
Кто-нибудь видел эту проблему при интеграции нескольких устройств ESP32 с одним Amazon Echo? Кто-нибудь когда-нибудь получал яркость, чтобы успешно перейти в функцию, которую запускает alexa?
Редактировать*
После проведения еще нескольких тестов выясняется, что ESPALEXAWITHASYNCWEBSERVER приводит к тому, что Alexa не может различать отдельные платы. Это означает, что если вы хотите использовать более одного устройства с этой библиотекой, вы не можете использовать асинхронный пример.
В качестве побочного эффекта яркость всегда возвращает 0, если не используется библиотека async, что означает, что вы действительно можете использовать эту библиотеку только для управления включенным и выключенным состоянием, а не яркостью, если у вас более одного ESP-устройства. Асинхронный пример корректно возвращает яркость, все остальные примеры возвращают 0, независимо от того, на какое значение вы установили яркость.
@, 👍1
1 ответ
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
- ESP32 - "Детектор Браунаута был активирован" при запуске Wi-Fi
- Питание esp32cam от аккумулятора
- Контакты RX и TX на esp32
- ESP32: отключить детектор отключения питания
У меня Faumo не работает, не может обнаружить устройства, @Varun