/*
|
|
|
|
ALEXA MODULE
|
|
|
|
Copyright (C) 2016-2017 by Xose Pérez <xose dot perez at gmail dot com>
|
|
|
|
*/
|
|
|
|
#if ALEXA_SUPPORT
|
|
|
|
#include <fauxmoESP.h>
|
|
|
|
fauxmoESP alexa;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// ALEXA
|
|
// -----------------------------------------------------------------------------
|
|
|
|
bool _alexa_change = false;
|
|
unsigned int _alexa_device_id = 0;
|
|
bool _alexa_state = false;
|
|
|
|
void _alexaWebSocketOnSend(JsonObject& root) {
|
|
root["alexaVisible"] = 1;
|
|
root["alexaEnabled"] = getSetting("alexaEnabled", ALEXA_ENABLED).toInt() == 1;
|
|
}
|
|
|
|
void _alexaConfigure() {
|
|
alexa.enable(getSetting("alexaEnabled", ALEXA_ENABLED).toInt() == 1);
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void alexaSetup() {
|
|
|
|
// Backwards compatibility
|
|
moveSetting("fauxmoEnabled", "alexaEnabled");
|
|
|
|
// Load & cache settings
|
|
_alexaConfigure();
|
|
|
|
#if WEB_SUPPORT
|
|
|
|
// Websockets
|
|
wsOnSendRegister(_alexaWebSocketOnSend);
|
|
wsOnAfterParseRegister(_alexaConfigure);
|
|
|
|
#endif
|
|
|
|
unsigned int relays = relayCount();
|
|
String hostname = getSetting("hostname");
|
|
if (relays == 1) {
|
|
alexa.addDevice(hostname.c_str());
|
|
} else {
|
|
for (unsigned int i=0; i<relays; i++) {
|
|
alexa.addDevice((hostname + "_" + i).c_str());
|
|
}
|
|
}
|
|
|
|
alexa.onSetState([relays](unsigned char device_id, const char * name, bool state) {
|
|
_alexa_change = true;
|
|
_alexa_device_id = device_id;
|
|
_alexa_state = state;
|
|
});
|
|
|
|
alexa.onGetState([relays](unsigned char device_id, const char * name) {
|
|
return relayStatus(device_id);
|
|
});
|
|
|
|
}
|
|
|
|
void alexaLoop() {
|
|
|
|
alexa.handle();
|
|
|
|
if (_alexa_change) {
|
|
DEBUG_MSG_P(PSTR("[ALEXA] Device #%d state: %s\n"), _alexa_device_id, _alexa_state ? "ON" : "OFF");
|
|
_alexa_change = false;
|
|
relayStatus(_alexa_device_id, _alexa_state);
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|