/* ALEXA MODULE Copyright (C) 2016-2018 by Xose PĂ©rez Module key prefix: alx */ #if ALEXA_SUPPORT #include fauxmoESP alexa; struct AlexaDevChange { AlexaDevChange(unsigned char device_id, bool state) : device_id(device_id), state(state) {}; unsigned char device_id = 0; bool state = false; }; #include static std::queue _alexa_dev_changes; // ----------------------------------------------------------------------------- // ALEXA // ----------------------------------------------------------------------------- bool _alexaWebSocketOnReceive(const char * key, JsonVariant& value) { return (strncmp(key, "alx", 3) == 0); } void _alexaWebSocketOnSend(JsonObject& root) { root["alxVisible"] = 1; root["alxEnabled"] = getSetting("alxEnabled", ALEXA_ENABLED).toInt() == 1; } void _alexaConfigure() { alexa.enable(getSetting("alxEnabled", ALEXA_ENABLED).toInt() == 1); } void _alexaBackwards() { moveSetting("fauxmoEnabled", "alxEnabled"); // 1.9.0 - 2017-08-25 moveSetting("alexaEnabled", "alxEnabled"); // 1.13.1 - 2018-06-27 } // ----------------------------------------------------------------------------- void alexaSetup() { // Check backwards compatibility _alexaBackwards(); // Load & cache settings _alexaConfigure(); #if WEB_SUPPORT // Websockets wsOnSendRegister(_alexaWebSocketOnSend); wsOnAfterParseRegister(_alexaConfigure); wsOnReceiveRegister(_alexaWebSocketOnReceive); #endif unsigned int relays = relayCount(); String hostname = getSetting("hostname"); if (relays == 1) { alexa.addDevice(hostname.c_str()); } else { for (unsigned int i=0; i