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.

60 lines
1.2 KiB

8 years ago
8 years ago
8 years ago
8 years ago
  1. /*
  2. ESPurna
  3. RELAY MODULE
  4. Copyright (C) 2016 by Xose Pérez <xose dot perez at gmail dot com>
  5. */
  6. #include <EEPROM.h>
  7. // -----------------------------------------------------------------------------
  8. // RELAY
  9. // -----------------------------------------------------------------------------
  10. void switchRelayOn() {
  11. if (!digitalRead(RELAY_PIN)) {
  12. DEBUG_MSG("[RELAY] ON\n");
  13. digitalWrite(RELAY_PIN, HIGH);
  14. EEPROM.write(0, 1);
  15. EEPROM.commit();
  16. mqttSend((char *) MQTT_STATUS_TOPIC, (char *) "1");
  17. webSocketSend((char *) "{\"relayStatus\": true}");
  18. }
  19. }
  20. void switchRelayOff() {
  21. if (digitalRead(RELAY_PIN)) {
  22. DEBUG_MSG("[RELAY] OFF\n");
  23. digitalWrite(RELAY_PIN, LOW);
  24. EEPROM.write(0, 0);
  25. EEPROM.commit();
  26. mqttSend((char *) MQTT_STATUS_TOPIC, (char *) "0");
  27. webSocketSend((char *) "{\"relayStatus\": false}");
  28. }
  29. }
  30. void toggleRelay() {
  31. if (digitalRead(RELAY_PIN)) {
  32. switchRelayOff();
  33. } else {
  34. switchRelayOn();
  35. }
  36. }
  37. void relaySetup() {
  38. pinMode(RELAY_PIN, OUTPUT);
  39. EEPROM.begin(4096);
  40. EEPROM.read(0) == 1 ? switchRelayOn() : switchRelayOff();
  41. }