Created
January 8, 2019 00:59
-
-
Save andyshinn/ef6ff5fb62be698b8ca414043e02c70f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This #include statement was automatically added by the Particle IDE. | |
#include <blynk.h> | |
// This #include statement was automatically added by the Particle IDE. | |
#include <RelayShield.h> | |
RelayShield myRelays; | |
LEDStatus blinkRed(RGB_COLOR_RED, LED_PATTERN_BLINK); | |
char auth[] = "e2f9e87c65c04d9f8ae6c05c46af0271"; | |
int buttonOpen = A4; | |
int switchUpper = A5; | |
int switchLower = A4; | |
int switchUpperTrigger = LOW; | |
int switchLowerTrigger = LOW; | |
int buttonOpenState = LOW; | |
int doorRelay = 1; | |
int triggerDelay = 500; | |
int triggerHoldDown = 2000; | |
bool enabled = 1; | |
void setup() { | |
pinMode(buttonOpen, INPUT_PULLDOWN); | |
pinMode(switchUpper, INPUT_PULLDOWN); | |
pinMode(switchLower, INPUT_PULLDOWN); | |
Particle.function("doorTrigger", cloudTriggerRelay); | |
Particle.subscribe("doorTrigger", triggerHandler, MY_DEVICES); | |
Particle.variable("switchUpper", switchUpperTrigger); | |
Particle.variable("switchLower", switchLowerTrigger); | |
myRelays.begin(); | |
delay(5000); | |
Blynk.begin(auth); | |
} | |
void loop() { | |
Blynk.run(); | |
buttonOpenState = digitalRead(buttonOpen); | |
switchUpperTrigger = digitalRead(switchUpper); | |
switchLowerTrigger = digitalRead(switchLower); | |
if (buttonOpenState == HIGH) { | |
Particle.publish("triggerFrom", "buttonOpen"); | |
triggerRelay(doorRelay); | |
} | |
} | |
BLYNK_WRITE(V1) { | |
int pinValue = param.asInt(); | |
if (pinValue == 1) { | |
Particle.publish("triggerFrom", "blynk"); | |
triggerRelay(doorRelay); | |
} | |
} | |
void triggerHandler(const char *event, const char *data) { | |
if (data) { | |
Particle.publish("triggerFrom", "subscribe"); | |
triggerRelay(doorRelay); | |
} | |
} | |
int cloudTriggerRelay(String relay) { | |
int relayNumber = relay.charAt(1) - '0'; | |
triggerRelay(relayNumber); | |
} | |
void triggerRelay(int relayNumber) { | |
int relayState = 0; | |
String message; | |
String messageEnabled = "enabled: triggered relay: "; | |
String messageDisabled = "enabled: triggered relay: "; | |
message = messageEnabled + String(relayNumber); | |
if (enabled) { | |
if (!switchUpperTrigger && !switchLowerTrigger) { | |
Particle.publish("relayTrigger", message); | |
myRelays.on(relayNumber); | |
delay(triggerDelay); | |
myRelays.off(relayNumber); | |
delay(triggerHoldDown); | |
} else { | |
Particle.publish("relayTrigger", "switches in bad state"); | |
blinkRed.setActive(true); | |
delay(triggerDelay); | |
blinkRed.setActive(false); | |
} | |
} else { | |
message = messageDisabled + String(relayNumber); | |
Particle.publish("relayTrigger", message); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment