From 3f73e48bfab3a0fe131b85b44881e04cbb64db87 Mon Sep 17 00:00:00 2001 From: arendst Date: Tue, 21 Feb 2017 18:14:33 +0100 Subject: [PATCH] v3.9.20 3.9.20 20170221 * Add minimal basic authentication to Web Admin mode (#87) * Fix Hue and add HSB support (#89) --- README.md | 2 +- api/arduino/sonoff.ino.bin | Bin 468928 -> 471392 bytes sonoff/_releasenotes.ino | 6 +- sonoff/settings.h | 1 + sonoff/settings.ino | 6 +- sonoff/sonoff.ino | 12 +- sonoff/user_config.h | 4 +- sonoff/webserver.ino | 462 ++++--------------------------------- sonoff/xdrv_wemohue.ino | 412 +++++++++++++++++++++++++++++++++ sonoff/xdrv_ws2812.ino | 27 ++- 10 files changed, 500 insertions(+), 432 deletions(-) diff --git a/README.md b/README.md index 7fdfadb54..8edc4f8e2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. -Current version is **3.9.19** - See ```sonoff/_releasenotes.ino``` for change information. +Current version is **3.9.20** - See ```sonoff/_releasenotes.ino``` for change information. - This version provides all (Sonoff) modules in one file and starts up with Sonoff Basic. - Once uploaded select module using the configuration webpage or the commands ```Modules``` and ```Module```. diff --git a/api/arduino/sonoff.ino.bin b/api/arduino/sonoff.ino.bin index 391f562b6a11035f35f7c367ed68cf6e548983b8..5064ad5c4712cd2d499c3130b90a1982ed0f0889 100644 GIT binary patch delta 98478 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

3a*gVs-DanC4l?MXP(41tJ7F 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 delta 95737 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 diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 23df798ff..9fbfddea4 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,4 +1,8 @@ -/* 3.9.19 20170219 +/* 3.9.20 20170221 + * Add minimal basic authentication to Web Admin mode (#87) + * Fix Hue and add HSB support (#89) + * + * 3.9.19 20170219 * Sonoff Led: Made GPIO04, 05 and 15 available for user * Sonoff Led: Add commands Fade, Speed, WakupDuration, Wakeup and LedTable * diff --git a/sonoff/settings.h b/sonoff/settings.h index 049cb3410..6da85fe97 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -184,5 +184,6 @@ struct SYSCFG { uint8_t emulation; + char web_password[33]; } sysCfg; diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 61f8f4e65..1abd9b1d9 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -437,7 +437,8 @@ void CFG_DefaultSet2() sysCfg.mqtt_enabled = MQTT_USE; sysCfg.emulation = EMULATION; - + + strlcpy(sysCfg.web_password, WEB_PASSWORD, sizeof(sysCfg.web_password)); } void CFG_Default() @@ -625,6 +626,9 @@ void CFG_Delta() if (sysCfg.version < 0x03090700) { // 3.9.7 - Add parameter sysCfg.emulation = EMULATION; } + if (sysCfg.version < 0x03091301) { + strlcpy(sysCfg.web_password, WEB_PASSWORD, sizeof(sysCfg.web_password)); + } sysCfg.version = VERSION; } diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 318f3f633..d68449037 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -10,7 +10,7 @@ * ==================================================== */ -#define VERSION 0x03091300 // 3.9.19 +#define VERSION 0x03091400 // 3.9.20 //#define BE_MINIMAL // Compile a minimal version if upgrade memory gets tight (still 404k) // To be used as step 1. Next step is compile and use desired version @@ -909,6 +909,16 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len) snprintf_P(svalue, sizeof(svalue), PSTR("{\"Webserver\":\"%s\"}"), MQTT_STATUS_OFF); } } + else if (!strcmp(type,"WEBPASSWORD")) { + if ((data_len > 0) && (data_len < sizeof(sysCfg.web_password))) { + if (payload == 0) { + sysCfg.web_password[0] = 0; // No password + } else { + strlcpy(sysCfg.web_password, (payload == 1) ? WEB_PASSWORD : dataBuf, sizeof(sysCfg.web_password)); + } + } + snprintf_P(svalue, sizeof(svalue), PSTR("{\"WebPassword\":\"%s\"}"), sysCfg.web_password); + } else if (!strcmp(type,"WEBLOG")) { if ((data_len > 0) && (payload >= LOG_LEVEL_NONE) && (payload <= LOG_LEVEL_ALL)) { sysCfg.weblog_level = payload; diff --git a/sonoff/user_config.h b/sonoff/user_config.h index d2b90a036..0581ad6ed 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -78,8 +78,10 @@ // -- HTTP ---------------------------------------- #define USE_WEBSERVER // Enable web server and wifi manager (+62k code, +4k mem) - Disable by // - #define FRIENDLY_NAME "Sonoff" // [FriendlyName] Friendlyname up to 32 characters used by webpages and Alexa #define WEB_SERVER 2 // [WebServer] Web server (0 = Off, 1 = Start as User, 2 = Start as Admin) + #define WEB_USERNAME "admin" // Web server Admin mode user name + #define WEB_PASSWORD "" // [WebPassword] Web server Admin mode Password for WEB_USERNAME (empty string = Disable) + #define FRIENDLY_NAME "Sonoff" // [FriendlyName] Friendlyname up to 32 characters used by webpages and Alexa #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+11k code, +2k mem) #define EMULATION EMUL_NONE // [Emulation] Select Belkin WeMo or Hue Bridge emulation (EMUL_NONE, EMUL_WEMO or EMUL_HUE) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 25080590c..ab4332408 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -171,6 +171,7 @@ const char HTTP_FORM_LOG3[] PROGMEM = const char HTTP_FORM_OTHER[] PROGMEM = "

 Other parameters 
" "" + "
Web Admin Password

" "
MQTT enable
"; const char HTTP_FORM_OTHER2[] PROGMEM = "
Friendly Name {1 ({2)

"; @@ -219,120 +220,6 @@ const char HTTP_END[] PROGMEM = "" "" ""; -#ifdef USE_EMULATION -const char WEMO_EVENTSERVICE_XML[] PROGMEM = - "" - "" - "" - "SetBinaryState" - "" - "" - "" - "BinaryState" - "BinaryState" - "in" - "" - "" - "" - "" - "BinaryState" - "Boolean" - "0" - "" - "" - "level" - "string" - "0" - "" - "" - "" - "\r\n" - "\r\n"; -const char WEMO_SETUP_XML[] PROGMEM = - "" - "" - "" - "urn:Belkin:device:controllee:1" - "{x1}" - "Belkin International Inc." - "Sonoff Socket" - "3.1415" - "uuid:{x2}" - "{x3}" - "0" - "" - "" - "urn:Belkin:service:basicevent:1" - "urn:Belkin:serviceId:basicevent1" - "/upnp/control/basicevent1" - "/upnp/event/basicevent1" - "/eventservice.xml" - "" - "" - "" - "\r\n" - "\r\n"; -const char HUE_DESCRIPTION_XML[] PROGMEM = - "" - "" - "" - "1" - "0" - "" - "http://{x1}/" - "" - "urn:schemas-upnp-org:device:Basic:1" - "Amazon-Echo-HA-Bridge ({x1})" - "Royal Philips Electronics" - "Philips hue bridge 2012" - "929000226503" - "uuid:{x2}" - "" - "\r\n" - "\r\n"; -const char HUE_LIGHT_STATUS_JSON[] PROGMEM = - "{\"state\":" - "{\"on\":{state}," - "\"bri\":{b}," - "\"hue\":{h}," - "\"sat\":{s}," - "\"effect\":\"none\"," - "\"ct\":0," - "\"alert\":\"none\"," - "\"reachable\":true" - "}," - "\"type\":\"Dimmable light\"," - "\"name\":\"{j1}\"," - "\"modelid\":\"LWB004\"," - "\"manufacturername\":\"Philips\"," - "\"uniqueid\":\"{j2}\"," - "\"swversion\":\"66012040\"" - "}"; -const char HUE_LIGHT_RESPONSE_JSON[] PROGMEM = - "{\"success\":{\"{api}/{id}/{cmd}\":{res}}}"; -const char HUE_CONFIG_RESPONSE_JSON[] PROGMEM = - "{\"name\":\"Philips hue\"," - "\"mac\":\"{mac}\"," - "\"dhcp\":true," - "\"ipaddress\":\"{ip}\"," - "\"netmask\":\"{mask}\"," - "\"gateway\":\"{gw}\"," - "\"proxyaddress\":\"\"," - "\"proxyport\":0," - "\"UTC\":\"{dt}\"," - "\"whitelist\":{\"{id}\":{" - "\"last use date\":\"{dt}\"," - "\"create date\":\"{dt}\"," - "\"name\":\"Remote\"}}," - "\"swversion\":\"01036659\"," - "\"apiversion\":\"1.16.0\"," - "\"swupdate\":{\"updatestate\":0,\"url\":\"\",\"text\":\"\",\"notify\": false}," - "\"linkbutton\":false," - "\"portalservices\":false" - "}"; -const char HUE_NO_AUTH_JSON[] PROGMEM = - "[{\"error\":{\"type\":101,\"address\":\"/\",\"description\":\"link button not pressed\"}}]"; -#endif // USE_EMULATION #define DNS_PORT 53 enum http_t {HTTP_OFF, HTTP_USER, HTTP_ADMIN, HTTP_MANAGER}; @@ -383,7 +270,9 @@ void startWebserver(int type, IPAddress ipweb) webServer->on("/eventservice.xml", handleUPnPservice); webServer->on("/setup.xml", handleUPnPsetupWemo); } - if (sysCfg.emulation == EMUL_HUE) webServer->on("/description.xml", handleUPnPsetupHue); + if (sysCfg.emulation == EMUL_HUE) { + webServer->on("/description.xml", handleUPnPsetupHue); + } #endif // USE_EMULATION webServer->onNotFound(handleNotFound); } @@ -437,6 +326,9 @@ void pollDnsWeb() void showPage(String &page) { + if((_httpflag == HTTP_ADMIN) && (sysCfg.web_password[0] != 0) && !webServer->authenticate(WEB_USERNAME, sysCfg.web_password)) { + return webServer->requestAuthentication(); + } page.replace("{ha}", my_module.name); page.replace("{h}", sysCfg.friendlyname[0]); if (_httpflag == HTTP_MANAGER) { @@ -783,6 +675,7 @@ void handleOther() String page = FPSTR(HTTP_HEAD); page.replace("{v}", "Configure Other"); page += FPSTR(HTTP_FORM_OTHER); + page.replace("{p1}", sysCfg.web_password); page.replace("{r1}", (sysCfg.mqtt_enabled) ? " checked" : ""); page += FPSTR(HTTP_FORM_OTHER2); page.replace("{1", "1"); @@ -884,6 +777,8 @@ void handleSave() break; #endif // USE_DOMOTICZ case 5: + strlcpy(sysCfg.web_password, (!strlen(webServer->arg("p1").c_str())) ? WEB_PASSWORD : webServer->arg("p1").c_str(), sizeof(sysCfg.web_password)); + if (sysCfg.web_password[0] == '0') sysCfg.web_password[0] = '\0'; sysCfg.mqtt_enabled = webServer->hasArg("b1"); #ifdef USE_EMULATION sysCfg.emulation = (!strlen(webServer->arg("b2").c_str())) ? 0 : atoi(webServer->arg("b2").c_str()); @@ -1176,32 +1071,43 @@ void handleCmnd() addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle cmnd")); - byte curridx = logidx; - if (strlen(webServer->arg(0).c_str())) { - snprintf_P(svalue, sizeof(svalue), webServer->arg(0).c_str()); - do_cmnd(svalue); + uint8_t valid = 1; + if (sysCfg.web_password[0] != 0) { + if (!(!strcmp(webServer->arg("user").c_str(),WEB_USERNAME) && !strcmp(webServer->arg("password").c_str(),sysCfg.web_password))) { + valid = 0; + } } String message = ""; - if (logidx != curridx) { - byte counter = curridx; - do { - if (Log[counter].length()) { - if (message.length()) message += F("\n"); - if (sysCfg.mqtt_enabled) { - // [14:49:36 MQTT: stat/wemos5/RESULT = {"POWER":"OFF"}] > [RESULT = {"POWER":"OFF"}] -// message += Log[counter].substring(17 + strlen(PUB_PREFIX) + strlen(sysCfg.mqtt_topic)); - message += Log[counter].substring(Log[counter].lastIndexOf("/",Log[counter].indexOf("="))+1); - } else { - // [14:49:36 RSLT: RESULT = {"POWER":"OFF"}] > [RESULT = {"POWER":"OFF"}] - message += Log[counter].substring(Log[counter].indexOf(": ")+2); + if (valid) { + byte curridx = logidx; + if (strlen(webServer->arg("cmnd").c_str())) { + snprintf_P(svalue, sizeof(svalue), webServer->arg("cmnd").c_str()); + do_cmnd(svalue); + } + + if (logidx != curridx) { + byte counter = curridx; + do { + if (Log[counter].length()) { + if (message.length()) message += F("\n"); + if (sysCfg.mqtt_enabled) { + // [14:49:36 MQTT: stat/wemos5/RESULT = {"POWER":"OFF"}] > [RESULT = {"POWER":"OFF"}] +// message += Log[counter].substring(17 + strlen(PUB_PREFIX) + strlen(sysCfg.mqtt_topic)); + message += Log[counter].substring(Log[counter].lastIndexOf("/",Log[counter].indexOf("="))+1); + } else { + // [14:49:36 RSLT: RESULT = {"POWER":"OFF"}] > [RESULT = {"POWER":"OFF"}] + message += Log[counter].substring(Log[counter].indexOf(": ")+2); + } } - } - counter++; - if (counter > MAX_LOG_LINES -1) counter = 0; - } while (counter != logidx); + counter++; + if (counter > MAX_LOG_LINES -1) counter = 0; + } while (counter != logidx); + } else { + message = F("Enable weblog 2 if response expected\n"); + } } else { - message = F("Enable weblog 2 if response expected\n"); + message = F("Need user=&password=\n"); } webServer->sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); @@ -1313,17 +1219,11 @@ void handleInfo() page += F("Emulation"); #ifdef USE_EMULATION - if (sysCfg.emulation == EMUL_WEMO) { - page += F("Belkin WeMo"); - } - else if (sysCfg.emulation == EMUL_HUE) { - page += F("Hue Bridge"); - } - else { - page += F("None"); - } + if (sysCfg.emulation == EMUL_WEMO) page += F("Belkin WeMo"); + else if (sysCfg.emulation == EMUL_HUE) page += F("Hue Bridge"); + else page += F("None"); #else - page += F("Disabled"); + page += F("Disabled"); #endif // USE_EMULATION page += F(""); @@ -1376,276 +1276,6 @@ void handleRestart() /********************************************************************************************/ -#ifdef USE_EMULATION -void handleUPnPevent() -{ - addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle WeMo basic event")); - - String request = webServer->arg(0); - if (request.indexOf("State>1 0) do_cmnd_power(1, 1); - if (request.indexOf("State>0 0) do_cmnd_power(1, 0); - webServer->send(200, "text/plain", ""); -} - -void handleUPnPservice() -{ - addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle WeMo event service")); - - String eventservice_xml = FPSTR(WEMO_EVENTSERVICE_XML); - webServer->send(200, "text/plain", eventservice_xml); -} - -void handleUPnPsetupWemo() -{ - addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle WeMo setup")); - - String setup_xml = FPSTR(WEMO_SETUP_XML); - setup_xml.replace("{x1}", sysCfg.friendlyname[0]); - setup_xml.replace("{x2}", wemo_UUID()); - setup_xml.replace("{x3}", wemo_serial()); - webServer->send(200, "text/xml", setup_xml); -} - -/********************************************************************************************/ - -String hue_deviceId(uint8_t id) -{ - char deviceid[16]; - - snprintf_P(deviceid, sizeof(deviceid), PSTR("5CCF7F%03X-%0d"), ESP.getChipId(), id); - return String(deviceid); -} - -void handleUPnPsetupHue() -{ - addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle Hue Bridge setup")); - - String description_xml = FPSTR(HUE_DESCRIPTION_XML); - description_xml.replace("{x1}", WiFi.localIP().toString()); - description_xml.replace("{x2}", hue_UUID()); - webServer->send(200, "text/xml", description_xml); -} - -void hue_todo(String *path) -{ - char log[LOGSZ]; - - snprintf_P(log, sizeof(log), PSTR("HTTP: HUE API not implemented (%s)"),path->c_str()); - addLog(LOG_LEVEL_DEBUG_MORE, log); -} - -void hue_config_response(String *response) -{ - char buffer[21]; - - *response += FPSTR(HUE_CONFIG_RESPONSE_JSON); - response->replace("{mac}", WiFi.macAddress()); - response->replace("{ip}", WiFi.localIP().toString()); - response->replace("{mask}", WiFi.subnetMask().toString()); - response->replace("{gw}", WiFi.gatewayIP().toString()); - snprintf_P(buffer, sizeof(buffer), PSTR("%04d-%02d-%02dT%02d:%02d:%02d"), - rtcTime.Year, rtcTime.Month, rtcTime.Day, rtcTime.Hour, rtcTime.Minute, rtcTime.Second); - response->replace("{dt}", buffer); -} - -void hue_global_cfg(String *path) -{ - String response; - - path->remove(0,1); // cut leading / to get - response = "{\"lights\":{\""; - for (uint8_t i = 1; i <= Maxdevice; i++) - { - response += i; - response += "\":"; - response += FPSTR(HUE_LIGHT_STATUS_JSON); - if (i < Maxdevice) response += ",\""; - response.replace("{state}", (power & (0x01 << (i-1))) ? "true" : "false"); - response.replace("{j1}", sysCfg.friendlyname[i-1]); - response.replace("{j2}", hue_deviceId(i)); - if (pin[GPIO_WS2812] < 99) { -#ifdef USE_WS2812 - ws2812_replaceHSB(&response); -#endif // USE_WS2812 - } else - { - response.replace("{h}", "0"); - response.replace("{s}", "0"); - response.replace("{b}", "0"); - } - } - response += F("},\"groups\":{},\"schedules\":{},\"config\":"); - - hue_config_response(&response); - response.replace("{id}", *path); - response += "}"; - webServer->send(200, "application/json", response); -} - -void hue_auth(String *path) -{ - char response[38]; - - snprintf_P(response, sizeof(response), PSTR("[{\"success\":{\"username\":\"%03x\"}}]"), ESP.getChipId()); - webServer->send(200, "application/json", response); -} - -void hue_config(String *path) -{ - String response = ""; - - path->remove(0,1); // cut leading / to get - hue_config_response(&response); - response.replace("{id}", *path); - webServer->send(200, "application/json", response); -} - -void hue_lights(String *path) -{ -/* - * http://sonoff/api/username/lights/1/state?1={"on":true,"hue":56100,"sat":254,"bri":254,"alert":"none","transitiontime":40} - */ - String response; - uint8_t device = 1; - int16_t pos = 0; - uint8_t bri = 0; - bool on = false; - char id[4]; - - path->remove(0,path->indexOf("/lights")); // Remove until /lights - if (path->endsWith("/lights")) // Got /lights - { - response = "{\""; - for (uint8_t i = 1; i <= Maxdevice; i++) - { - response += i; - response += "\":"; - response += FPSTR(HUE_LIGHT_STATUS_JSON); - if (i < Maxdevice) response += ",\""; - response.replace("{state}", (power & (0x01 << (i-1))) ? "true" : "false"); - response.replace("{j1}", sysCfg.friendlyname[i-1]); - response.replace("{j2}", hue_deviceId(i)); - if (pin[GPIO_WS2812] < 99) { -#ifdef USE_WS2812 - ws2812_replaceHSB(&response); -#endif // USE_WS2812 - } else - { - response.replace("{h}", "0"); - response.replace("{s}", "0"); - response.replace("{b}", "0"); - } - } - response += "}"; - webServer->send(200, "application/json", response); - } - else if (path->endsWith("/state")) // Got ID/state - { - path->remove(0,8); // Remove /lights/ - path->remove(path->indexOf("/state")); // Remove /state - device = atoi(path->c_str()); - if ((device < 1) || (device > Maxdevice)) device = 1; - response = "["; - response += FPSTR(HUE_LIGHT_RESPONSE_JSON); - response.replace("{api}", "/lights"); - response.replace("{id}", String(device)); - response.replace("{cmd}", "state/on"); - if (webServer->args() == 1) - { - StaticJsonBuffer<400> jsonBuffer; - JsonObject &hue_json = jsonBuffer.parseObject(webServer->arg(0)); - on = hue_json["on"]; - switch(on) - { - case false : do_cmnd_power(device, 0); - response.replace("{res}", "false"); - break; - case true : do_cmnd_power(device, 1); - response.replace("{res}", "true"); - break; - default : response.replace("{res}", (power & (0x01 << (device-1))) ? "true" : "false"); - break; - } -#ifdef USE_WS2812 - bri = hue_json["bri"]; - if (pin[GPIO_WS2812] < 99) { - ws2812_changeBrightness(bri); - response += ","; - response += FPSTR(HUE_LIGHT_RESPONSE_JSON); - response.replace("{api}", "/lights"); - response.replace("{id}", String(device)); - response.replace("{cmd}", "state/bri"); - response.replace("{res}", String(bri)); - } -#endif // USE_WS2812 - response += "]"; - webServer->send(200, "application/json", response); - } - else webServer->send(406, "application/json", "{}"); - } - else if(path->indexOf("/lights/") >= 0) { // Got /lights/ID - path->remove(0,8); // Remove /lights/ - device = atoi(path->c_str()); - if ((device < 1) || (device > Maxdevice)) device = 1; - response = FPSTR(HUE_LIGHT_STATUS_JSON); - response.replace("{state}", (power & (0x01 << (device -1))) ? "true" : "false"); - response.replace("{j1}", sysCfg.friendlyname[device -1]); - response.replace("{j2}", hue_deviceId(device)); - if (pin[GPIO_WS2812] < 99) { -#ifdef USE_WS2812 - ws2812_replaceHSB(&response); -#endif // USE_WS2812 - } else - { - response.replace("{h}", "0"); - response.replace("{s}", "0"); - response.replace("{b}", "0"); - } - webServer->send(200, "application/json", response); - } - else webServer->send(406, "application/json", "{}"); -} - -void handle_hue_api(String *path) -{ - /* HUE API uses /api// syntax. The userid is created by the echo device and - * on original HUE the pressed button allows for creation of this user. We simply ignore the - * user part and allow every caller as with Web or WeMo. - * - * (c) Heiko Krupp, 2017 - */ - - char log[LOGSZ]; - uint8_t args = 0; - - path->remove(0, 4); // remove /api - snprintf_P(log, sizeof(log), PSTR("HTTP: Handle Hue API (%s)"), path->c_str()); - addLog(LOG_LEVEL_DEBUG_MORE, log); - for (args = 0; args < webServer->args(); args++) { - String json = webServer->arg(args); - snprintf_P(log, sizeof(log), PSTR("HTTP: Hue POST args (%s)"), json.c_str()); - addLog(LOG_LEVEL_DEBUG_MORE, log); - } - - if (path->endsWith("/invalid/")) {} // Just ignore - else if (path->endsWith("/")) hue_auth(path); // New HUE App setup - else if (path->endsWith("/config")) hue_config(path); - else if (path->indexOf("/lights") >= 0) hue_lights(path); - else if (path->endsWith("/groups")) hue_todo(path); - else if (path->endsWith("/schedules")) hue_todo(path); - else if (path->endsWith("/sensors")) hue_todo(path); - else if (path->endsWith("/scenes")) hue_todo(path); - else if (path->endsWith("/rules")) hue_todo(path); - else hue_global_cfg(path); -/* - { - snprintf_P(log, sizeof(log), PSTR("HTTP: Handle Hue API (%s)"),path->c_str()); - addLog(LOG_LEVEL_DEBUG_MORE, log); - webServer->send(406, "application/json", "{}"); - } -*/ -} -#endif // USE_EMULATION /********************************************************************************************/ diff --git a/sonoff/xdrv_wemohue.ino b/sonoff/xdrv_wemohue.ino index 2a4472133..0c3a03731 100644 --- a/sonoff/xdrv_wemohue.ino +++ b/sonoff/xdrv_wemohue.ino @@ -216,5 +216,417 @@ void pollUDP() } } } + +#ifdef USE_WEBSERVER +/*********************************************************************************************\ + * Web server additions +\*********************************************************************************************/ +const char WEMO_EVENTSERVICE_XML[] PROGMEM = + "" + "" + "" + "SetBinaryState" + "" + "" + "" + "BinaryState" + "BinaryState" + "in" + "" + "" + "" + "" + "BinaryState" + "Boolean" + "0" + "" + "" + "level" + "string" + "0" + "" + "" + "" + "\r\n" + "\r\n"; +const char WEMO_SETUP_XML[] PROGMEM = + "" + "" + "" + "urn:Belkin:device:controllee:1" + "{x1}" + "Belkin International Inc." + "Sonoff Socket" + "3.1415" + "uuid:{x2}" + "{x3}" + "0" + "" + "" + "urn:Belkin:service:basicevent:1" + "urn:Belkin:serviceId:basicevent1" + "/upnp/control/basicevent1" + "/upnp/event/basicevent1" + "/eventservice.xml" + "" + "" + "" + "\r\n" + "\r\n"; +const char HUE_DESCRIPTION_XML[] PROGMEM = + "" + "" + "" + "1" + "0" + "" + "http://{x1}/" + "" + "urn:schemas-upnp-org:device:Basic:1" + "Amazon-Echo-HA-Bridge ({x1})" + "Royal Philips Electronics" + "Philips hue bridge 2012" + "929000226503" + "uuid:{x2}" + "" + "\r\n" + "\r\n"; +const char HUE_LIGHT_STATUS_JSON[] PROGMEM = + "{\"state\":" + "{\"on\":{state}," + "\"bri\":{b}," + "\"hue\":{h}," + "\"sat\":{s}," + "\"effect\":\"none\"," + "\"ct\":0," + "\"alert\":\"none\"," + "\"colormode\":\"hs\"," + "\"reachable\":true" + "}," + "\"type\":\"Dimmable light\"," + "\"name\":\"{j1}\"," + "\"modelid\":\"LWB004\"," + "\"manufacturername\":\"Philips\"," + "\"uniqueid\":\"{j2}\"," + "\"swversion\":\"66012040\"" + "}"; +const char HUE_LIGHT_RESPONSE_JSON[] PROGMEM = + "{\"success\":{\"{api}/{id}/{cmd}\":{res}}}"; +const char HUE_CONFIG_RESPONSE_JSON[] PROGMEM = + "{\"name\":\"Philips hue\"," + "\"mac\":\"{mac}\"," + "\"dhcp\":true," + "\"ipaddress\":\"{ip}\"," + "\"netmask\":\"{mask}\"," + "\"gateway\":\"{gw}\"," + "\"proxyaddress\":\"\"," + "\"proxyport\":0," + "\"UTC\":\"{dt}\"," + "\"whitelist\":{\"{id}\":{" + "\"last use date\":\"{dt}\"," + "\"create date\":\"{dt}\"," + "\"name\":\"Remote\"}}," + "\"swversion\":\"01036659\"," + "\"apiversion\":\"1.16.0\"," + "\"swupdate\":{\"updatestate\":0,\"url\":\"\",\"text\":\"\",\"notify\": false}," + "\"linkbutton\":false," + "\"portalservices\":false" + "}"; +const char HUE_ERROR_JSON[] PROGMEM = + "[{\"error\":{\"type\":901,\"address\":\"/\",\"description\":\"Internal Error\"}}]"; + +void handleUPnPevent() +{ + addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle WeMo basic event")); + + String request = webServer->arg(0); + if (request.indexOf("State>1 0) do_cmnd_power(1, 1); + if (request.indexOf("State>0 0) do_cmnd_power(1, 0); + webServer->send(200, "text/plain", ""); +} + +void handleUPnPservice() +{ + addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle WeMo event service")); + + String eventservice_xml = FPSTR(WEMO_EVENTSERVICE_XML); + webServer->send(200, "text/plain", eventservice_xml); +} + +void handleUPnPsetupWemo() +{ + addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle WeMo setup")); + + String setup_xml = FPSTR(WEMO_SETUP_XML); + setup_xml.replace("{x1}", sysCfg.friendlyname[0]); + setup_xml.replace("{x2}", wemo_UUID()); + setup_xml.replace("{x3}", wemo_serial()); + webServer->send(200, "text/xml", setup_xml); +} + +/********************************************************************************************/ + +String hue_deviceId(uint8_t id) +{ + char deviceid[16]; + + snprintf_P(deviceid, sizeof(deviceid), PSTR("5CCF7F%03X-%0d"), ESP.getChipId(), id); + return String(deviceid); +} + +void handleUPnPsetupHue() +{ + addLog_P(LOG_LEVEL_DEBUG, PSTR("HTTP: Handle Hue Bridge setup")); + + String description_xml = FPSTR(HUE_DESCRIPTION_XML); + description_xml.replace("{x1}", WiFi.localIP().toString()); + description_xml.replace("{x2}", hue_UUID()); + webServer->send(200, "text/xml", description_xml); +} + +void hue_todo(String *path) +{ + char log[LOGSZ]; + + snprintf_P(log, sizeof(log), PSTR("HTTP: HUE API not implemented (%s)"),path->c_str()); + addLog(LOG_LEVEL_DEBUG_MORE, log); +} + +void hue_config_response(String *response) +{ + char buffer[21]; + + *response += FPSTR(HUE_CONFIG_RESPONSE_JSON); + response->replace("{mac}", WiFi.macAddress()); + response->replace("{ip}", WiFi.localIP().toString()); + response->replace("{mask}", WiFi.subnetMask().toString()); + response->replace("{gw}", WiFi.gatewayIP().toString()); + snprintf_P(buffer, sizeof(buffer), PSTR("%04d-%02d-%02dT%02d:%02d:%02d"), + rtcTime.Year, rtcTime.Month, rtcTime.Day, rtcTime.Hour, rtcTime.Minute, rtcTime.Second); + response->replace("{dt}", buffer); +} + +void hue_global_cfg(String *path) +{ + String response; + + path->remove(0,1); // cut leading / to get + response = "{\"lights\":{\""; + for (uint8_t i = 1; i <= Maxdevice; i++) + { + response += i; + response += "\":"; + response += FPSTR(HUE_LIGHT_STATUS_JSON); + if (i < Maxdevice) response += ",\""; + response.replace("{state}", (power & (0x01 << (i-1))) ? "true" : "false"); + response.replace("{j1}", sysCfg.friendlyname[i-1]); + response.replace("{j2}", hue_deviceId(i)); + if (pin[GPIO_WS2812] < 99) { +#ifdef USE_WS2812 + ws2812_replaceHSB(&response); +#endif // USE_WS2812 + } else + { + response.replace("{h}", "0"); + response.replace("{s}", "0"); + response.replace("{b}", "0"); + } + } + response += F("},\"groups\":{},\"schedules\":{},\"config\":"); + + hue_config_response(&response); + response.replace("{id}", *path); + response += "}"; + webServer->send(200, "application/json", response); +} + +void hue_auth(String *path) +{ + char response[38]; + + snprintf_P(response, sizeof(response), PSTR("[{\"success\":{\"username\":\"%03x\"}}]"), ESP.getChipId()); + webServer->send(200, "application/json", response); +} + +void hue_config(String *path) +{ + String response = ""; + + path->remove(0,1); // cut leading / to get + hue_config_response(&response); + response.replace("{id}", *path); + webServer->send(200, "application/json", response); +} + +void hue_lights(String *path) +{ +/* + * http://sonoff/api/username/lights/1/state?1={"on":true,"hue":56100,"sat":254,"bri":254,"alert":"none","transitiontime":40} + */ + String response; + uint8_t device = 1; + uint16_t tmp=0; + int16_t pos = 0; + float bri = 0; + float hue = 0; + float sat = 0; + bool on = false; + bool change = false; + char id[4]; + + path->remove(0,path->indexOf("/lights")); // Remove until /lights + if (path->endsWith("/lights")) { // Got /lights + response = "{\""; + for (uint8_t i = 1; i <= Maxdevice; i++) { + response += i; + response += "\":"; + response += FPSTR(HUE_LIGHT_STATUS_JSON); + if (i < Maxdevice) response += ",\""; + response.replace("{state}", (power & (0x01 << (i-1))) ? "true" : "false"); + response.replace("{j1}", sysCfg.friendlyname[i-1]); + response.replace("{j2}", hue_deviceId(i)); + if (pin[GPIO_WS2812] < 99) { +#ifdef USE_WS2812 + ws2812_replaceHSB(&response); +#endif // USE_WS2812 + } else { + response.replace("{h}", "0"); + response.replace("{s}", "0"); + response.replace("{b}", "0"); + } + } + response += "}"; + webServer->send(200, "application/json", response); + } + else if (path->endsWith("/state")) { // Got ID/state + path->remove(0,8); // Remove /lights/ + path->remove(path->indexOf("/state")); // Remove /state + device = atoi(path->c_str()); + if ((device < 1) || (device > Maxdevice)) device = 1; + response = "["; + response += FPSTR(HUE_LIGHT_RESPONSE_JSON); + response.replace("{api}", "/lights"); + response.replace("{id}", String(device)); + response.replace("{cmd}", "state/on"); + if (webServer->args() == 1) { + StaticJsonBuffer<400> jsonBuffer; + JsonObject &hue_json = jsonBuffer.parseObject(webServer->arg(0)); + if (hue_json.containsKey("on")) { + on = hue_json["on"]; + switch(on) + { + case false : do_cmnd_power(device, 0); + response.replace("{res}", "false"); + break; + case true : do_cmnd_power(device, 1); + response.replace("{res}", "true"); + break; + default : response.replace("{res}", (power & (0x01 << (device-1))) ? "true" : "false"); + break; + } + } +#ifdef USE_WS2812 + ws2812_getHSB(&hue,&sat,&bri); + if (hue_json.containsKey("bri")) { + tmp = hue_json["bri"]; + bri = (float)tmp/254.0f; + response += ","; + response += FPSTR(HUE_LIGHT_RESPONSE_JSON); + response.replace("{api}", "/lights"); + response.replace("{id}", String(device)); + response.replace("{cmd}", "state/bri"); + response.replace("{res}", String(tmp)); + change = true; + } + if (hue_json.containsKey("hue")) { + tmp = hue_json["hue"]; + hue = (float)tmp/65535.0f; + response += ","; + response += FPSTR(HUE_LIGHT_RESPONSE_JSON); + response.replace("{api}", "/lights"); + response.replace("{id}", String(device)); + response.replace("{cmd}", "state/hue"); + response.replace("{res}", String(tmp)); + change = true; + } + if (hue_json.containsKey("sat")) { + tmp = hue_json["sat"]; + sat = (float)tmp/254.0f; + response += ","; + response += FPSTR(HUE_LIGHT_RESPONSE_JSON); + response.replace("{api}", "/lights"); + response.replace("{id}", String(device)); + response.replace("{cmd}", "state/sat"); + response.replace("{res}", String(tmp)); + change = true; + } + if (change && (pin[GPIO_WS2812] < 99)) { + ws2812_setHSB(hue,sat,bri); + change=false; + } +#endif // USE_WS2812 + response += "]"; + webServer->send(200, "application/json", response); + } + else { + response=FPSTR(HUE_ERROR_JSON); + webServer->send(200, "application/json", response); + } + } + else if(path->indexOf("/lights/") >= 0) { // Got /lights/ID + path->remove(0,8); // Remove /lights/ + device = atoi(path->c_str()); + if ((device < 1) || (device > Maxdevice)) device = 1; + response = FPSTR(HUE_LIGHT_STATUS_JSON); + response.replace("{state}", (power & (0x01 << (device -1))) ? "true" : "false"); + response.replace("{j1}", sysCfg.friendlyname[device -1]); + response.replace("{j2}", hue_deviceId(device)); + if (pin[GPIO_WS2812] < 99) { +#ifdef USE_WS2812 + ws2812_replaceHSB(&response); +#endif // USE_WS2812 + } else { + response.replace("{h}", "0"); + response.replace("{s}", "0"); + response.replace("{b}", "0"); + } + webServer->send(200, "application/json", response); + } + else webServer->send(406, "application/json", "{}"); +} + +void handle_hue_api(String *path) +{ + /* HUE API uses /api// syntax. The userid is created by the echo device and + * on original HUE the pressed button allows for creation of this user. We simply ignore the + * user part and allow every caller as with Web or WeMo. + * + * (c) Heiko Krupp, 2017 + */ + + char log[LOGSZ]; + uint8_t args = 0; + + path->remove(0, 4); // remove /api + snprintf_P(log, sizeof(log), PSTR("HTTP: Handle Hue API (%s)"), path->c_str()); + addLog(LOG_LEVEL_DEBUG_MORE, log); + for (args = 0; args < webServer->args(); args++) { + String json = webServer->arg(args); + snprintf_P(log, sizeof(log), PSTR("HTTP: Hue POST args (%s)"), json.c_str()); + addLog(LOG_LEVEL_DEBUG_MORE, log); + } + + if (path->endsWith("/invalid/")) {} // Just ignore + else if (path->endsWith("/")) hue_auth(path); // New HUE App setup + else if (path->endsWith("/config")) hue_config(path); + else if (path->indexOf("/lights") >= 0) hue_lights(path); + else if (path->endsWith("/groups")) hue_todo(path); + else if (path->endsWith("/schedules")) hue_todo(path); + else if (path->endsWith("/sensors")) hue_todo(path); + else if (path->endsWith("/scenes")) hue_todo(path); + else if (path->endsWith("/rules")) hue_todo(path); + else hue_global_cfg(path); +} +#endif // USE_WEBSERVER #endif // USE_EMULATION diff --git a/sonoff/xdrv_ws2812.ino b/sonoff/xdrv_ws2812.ino index 0f6efd765..e9d7b58f7 100644 --- a/sonoff/xdrv_ws2812.ino +++ b/sonoff/xdrv_ws2812.ino @@ -44,8 +44,6 @@ POSSIBILITY OF SUCH DAMAGE. #endif // USE_WS2812_CTYPE #endif // USE_WS2812_DMA -#define COLOR_SATURATION 254.0f - struct wsColor { uint8_t red, green, blue; }; @@ -168,20 +166,27 @@ void ws2812_replaceHSB(String *response) ws2812_setDim(sysCfg.ws_dimmer); HsbColor hsb=HsbColor(dcolor); response->replace("{h}", String((uint16_t)(65535.0f * hsb.H))); - response->replace("{s}", String((uint8_t)(COLOR_SATURATION * hsb.S))); - response->replace("{b}", String((uint8_t)(COLOR_SATURATION * hsb.B))); + response->replace("{s}", String((uint8_t)(254.0f * hsb.S))); + response->replace("{b}", String((uint8_t)(254.0f * hsb.B))); } -void ws2812_changeBrightness(uint8_t bri) +void ws2812_getHSB(float *hue, float *sat, float *bri) +{ + ws2812_setDim(sysCfg.ws_dimmer); + HsbColor hsb=HsbColor(dcolor); + *hue=hsb.H; + *sat=hsb.S; + *bri=hsb.B; +} + +void ws2812_setHSB(float hue, float sat, float bri) { char rgb[7]; - //sysCfg.ws_ledtable=1; // Switch on Gamma Correction for "natural" brightness controll - ws2812_setDim(sysCfg.ws_dimmer); - HsbColor hsb = HsbColor(dcolor); - if (!bri) bri=1; - if (bri==255) bri=252; - hsb.B=(float)(bri/COLOR_SATURATION); + HsbColor hsb; + hsb.H=hue; + hsb.S=sat; + hsb.B=bri; RgbColor tmp = RgbColor(hsb); sprintf(rgb,"%02X%02X%02X", tmp.R, tmp.G, tmp.B); ws2812_setColor(0,rgb);