Интеграция 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 ответ


1

Попробуйте эту библиотеку, в прошлом я использовал 5 устройств одновременно

fauxmoesp

,

У меня Faumo не работает, не может обнаружить устройства, @Varun