Things used in this project

Hardware components:
Photon new
Particle Photon
×1
Wemos Relay Shield
×1
Liftmaster Garage Door Button
×1
Reed Switch
×1
micro usb Power Supply
Used an old bluetooth headset charging plug
×1
Software apps and online services:
Particle Build Environment
IFTTT Particle
SmartThings Developer Environment
Hand tools and fabrication machines:
09507 01
Soldering iron (generic)
Wire Strippers / crimpers (generic)
Wires (female to female pin connectors)

Schematics

Wiring diagram
Reed switch and relay connected to the Particle Photon, door button connected to the relay
Fritzing haj1mztp2x

Code

Photon GarageC/C++
Use build.particle.io to upload this to the Particle Photon of your choice (as long as it's the one connected to the garage door opener).
int openGarageDoor(String pin);
int closeGarageDoor(String pin);

int relayPin = D1;
int sensorPin = D4;
String state = "closed";

void setup() {
    // make functions visible to Particle
    Particle.function("openGarage", openGarageDoor);
    Particle.function("closeGarage", closeGarageDoor);
    // set pinModes
    pinMode(relayPin, OUTPUT);
    pinMode(sensorPin, INPUT_PULLUP);

}

void loop() {
  // tell Particle if the door opens
  if (state != "open") {
      if (digitalRead(sensorPin) == HIGH) {
          Particle.publish("Garage_Door_Status", "open");
          state = "open";
      }
  }
  // tell Particle if the door closes
  if (state != "closed") {
      if (digitalRead(sensorPin) == LOW) {
          Particle.publish("Garage_Door_Status", "closed");
          state = "closed";
      }
  }
}

int openGarageDoor(String pin) {
    if(state == "closed"){
        Particle.publish("Garage_Door_Status","opening");
        digitalWrite(relayPin, HIGH);
        delay(1000);
        digitalWrite(relayPin, LOW);
    }
return 0;
}

int closeGarageDoor(String pin) {
    if(state == "open"){
        Particle.publish("Garage_Door_Status","closing");
        digitalWrite(relayPin, HIGH);
        delay(1000);
        digitalWrite(relayPin, LOW);
    }
return 0;
}

Credits

5122f3c8245558d1be6fd4b74625f990
David Smyth

Electrically inclined mechanical engineer. Addicted to projects.

Contact

Replications

Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

What's My I2C Address?
Easy
  • 77
  • 3

The story of how to make a clock through using a LCD 1602 or LCD 2004 over I2C.

MyHumidity Controlled by BME280 and Photon
Easy
  • 188
  • 4

Full instructions

Checks if humidity threshold is reached and informs the user by using Blynk/IFTTT-services with softAP integration.

Tweeting Particle Photon
Easy
  • 44
  • 1

Full instructions

Tweet your friends with only the press of a button!

MyLight-Clock with NeoPixel Ring 12 Controlled by Photon
Easy
  • 260
  • 2

Full instructions

Read the time at night? Without glasses? Impossible? Focus on 2 light points, which will tell you the hour and the minute.

BME280 measures and displays on OLED controlled by Photon
Easy
  • 341
  • 2

Protip

I share my first steps with the sensor BME280 (temp / humi / pressure / altitude) and an OLED 128 * 64 px

Cheapest Smart Home for $38
Easy
  • 7,170
  • 27

Full instructions

Use Raspberry Pi Zero W to make the cheapest and easiest yet very useful smart home automation for $38 only and no skills needed!

ProjectsCommunitiesTopicsContestsLiveAppsBetaFree StoreBlogAdd projectSign up / Login