Fork of the espurna firmware for `mhsw` switches
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.0 KiB

7 years ago
  1. /*
  2. OTA MODULE
  3. Copyright (C) 2016-2017 by Xose Pérez <xose dot perez at gmail dot com>
  4. */
  5. #include "ArduinoOTA.h"
  6. // -----------------------------------------------------------------------------
  7. // OTA
  8. // -----------------------------------------------------------------------------
  9. void otaConfigure() {
  10. ArduinoOTA.setPort(OTA_PORT);
  11. ArduinoOTA.setHostname(getSetting("hostname").c_str());
  12. ArduinoOTA.setPassword(getSetting("adminPass", ADMIN_PASS).c_str());
  13. }
  14. void otaSetup() {
  15. otaConfigure();
  16. ArduinoOTA.onStart([]() {
  17. DEBUG_MSG_P(PSTR("[OTA] Start\n"));
  18. #if WEB_SUPPORT
  19. wsSend_P(PSTR("{\"message\": 2}"));
  20. #endif
  21. });
  22. ArduinoOTA.onEnd([]() {
  23. customReset(CUSTOM_RESET_OTA);
  24. DEBUG_MSG_P(PSTR("\n[OTA] End\n"));
  25. #if WEB_SUPPORT
  26. wsSend_P(PSTR("{\"action\": \"reload\"}"));
  27. #endif
  28. delay(100);
  29. });
  30. ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
  31. DEBUG_MSG_P(PSTR("[OTA] Progress: %u%%%%\r"), (progress / (total / 100)));
  32. });
  33. ArduinoOTA.onError([](ota_error_t error) {
  34. #if DEBUG_SUPPORT
  35. DEBUG_MSG_P(PSTR("\n[OTA] Error #%u: "), error);
  36. if (error == OTA_AUTH_ERROR) DEBUG_MSG_P(PSTR("Auth Failed\n"));
  37. else if (error == OTA_BEGIN_ERROR) DEBUG_MSG_P(PSTR("Begin Failed\n"));
  38. else if (error == OTA_CONNECT_ERROR) DEBUG_MSG_P(PSTR("Connect Failed\n"));
  39. else if (error == OTA_RECEIVE_ERROR) DEBUG_MSG_P(PSTR("Receive Failed\n"));
  40. else if (error == OTA_END_ERROR) DEBUG_MSG_P(PSTR("End Failed\n"));
  41. #endif
  42. });
  43. ArduinoOTA.begin();
  44. // Public ESPurna related txt for OTA discovery
  45. MDNS.addServiceTxt("arduino", "tcp", "firmware", APP_NAME);
  46. MDNS.addServiceTxt("arduino", "tcp", "espurna_version", APP_VERSION);
  47. MDNS.addServiceTxt("arduino", "tcp", "espurna_board", DEVICE_NAME);
  48. }
  49. void otaLoop() {
  50. ArduinoOTA.handle();
  51. }