Things used in this project

Hardware components:
Photon new
Particle Photon
SparkFun Magnetic Door Switch Set
12002 04
Breadboard (generic)
11026 02
Jumper wires (generic)
Software apps and online services:
Hand tools and fabrication machines:
Laser cutter (generic)

Custom parts and enclosures

Box Schematics
Blueprints of our box in which we put our sensor
Group 410 blueprints ro5fzj98vk


Fritzing Diagram
Fritzing qgl4ieb8a1


Door Switch SensorArduino
// This #include statement was automatically added by the Particle IDE.
#include <SparkFunPhant.h>

double value1 = 0; 
double value2 = 0;

const char server[] = ""; // Phant destination server
const char publicKey[] = "q5YZ7aN78LtYN3vZqyvr"; // Phant public key 
const char privateKey[] = "BV41ZGJZeoHJEnrRyor8"; // Phant private key
Phant phant(server, publicKey, privateKey); // Create a Phant object

const int POST_RATE = 3000; // Time between posts, in ms.
unsigned long lastPost = 0; // global variable to keep track of last post time

int magnetValState;
int magnetPin = D3; // Magnet part is connected to D3
int led1 = D1;

void setup()
    pinMode(magnetPin, INPUT_PULLUP);   // Initialize D3 pin as input with an internal pull-up resistor
    pinMode(led1, OUTPUT); //Initiates LED light

void loop()

    magnetValState = digitalRead(magnetPin);
    if(magnetValState == HIGH)      // Was motion detected
            digitalWrite(led1, HIGH);
            digitalWrite(led1, LOW);

int postToPhant()
    // Use phant.add(<field>, <value>) to add data to each field.
    // Phant requires you to update each and every field before posting,
    // make sure all fields defined in the stream are added here.
    if(magnetValState == HIGH)
        phant.add("door", 1); //0 - closed; 1 - open
        phant.add("door", 0);
    TCPClient client;
    char response[512];
    int i = 0;
    int retVal = 0;
    if (client.connect(server, 80)) // Connect to the server
		// Post message to indicate connect success
		// will return a string formatted as an HTTP POST.
		// It'll include all of the field/data values we added before.
		// Use client.print() to send that string to the server.
		// Now we'll do some simple checking to see what (if any) response
		// the server gives us.
        while (client.available())
            char c =;
            Serial.print(c);	// Print the response for debugging help.
            if (i < 512)
                response[i++] = c; // Add character to response string
		// Search the response string for "200 OK", if that's found the post
		// succeeded.
        if (strstr(response, "200 OK"))
            Serial.println("Post success!");
            retVal = 1;
        else if (strstr(response, "400 Bad Request"))
        {	// "400 Bad Request" means the Phant POST was formatted incorrectly.
			// This most commonly ocurrs because a field is either missing,
			// duplicated, or misspelled.
            Serial.println("Bad request");
            retVal = -1;
			// Otherwise we got a response we weren't looking for.
            retVal = -2;
    {	// If the connection failed, print a message:
        Serial.println("connection failed");
        retVal = -3;
    client.stop();	// Close the connection to server.
    return retVal;	// Return error (or success) code.



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


Similar projects you might like

Lightweight Sliding Door Automator
  • 1,535
  • 7

Work in progress

Automate the opening and closing of a lightweight sliding door (e.g. a screen door), including remote controls on your phone.

Christmas Gift Box
  • 3,633
  • 595

Full instructions

Christmas Gift Box plays music and sends an email when it is opened.

Carbon Fiber Vacuum Chamber
  • 2,905
  • 94

Full instructions

Our project is a carbon fiber vacuum chamber that is monitored by multiple particle photons and various sensors.

ConnectTheDots with Particle Azure IoT Hub Integration
  • 841
  • 8


This project will allow you to connect your Particle device into an Azure IoT Hub for viewing data in real-time through an ASP.NET web app!

What should I wear outside?
  • 5,044
  • 67

Full instructions

A whimsical weather clock powered by Particle and

Garage Door Opener with Blynk
  • 367
  • 2

Open, close and monitor a garage door opener with a smart phone using a Particle Photon and the Blynk application.

Add projectSign up / Login