ESP8266-SpaceState
This sketch is a web client and will update the SpaceState
It reads the GPIO2 (pulled up) pin where the space state switch is connected to via ground. GPIO0 is reserved for onewire devices.
/* 2015-07-05: Created by xopr Code based on http://iot-playground.com/2-uncategorised/41-esp8266-ds18b20-temperature-sensor-arduino-ide by Igor Jarc External libraries: - https://github.com/milesburton/Arduino-Temperature-Control-Library This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. */ #include <ESP8266WiFi.h> #include <OneWire.h> #include <DallasTemperature.h> //AP definitions #define AP_SSID "ACKspaceWifi" #define AP_PASSWORD "nospacenet" #define API_SERVER "ackspace.nl" #define API_KEY "<YOUR_KEY>" #define PIN_SWITCH 2 void updateSpaceState( bool _bState ); void setup() { Serial.begin(115200); pinMode( PIN_SWITCH, INPUT_PULLUP ); wifiConnect( ); } bool bState = false; unsigned long time = 0; void loop() { if ( ( millis() - time > 19900 ) || bState != digitalRead( PIN_SWITCH ) ) { delay( 100 ); bState = digitalRead( PIN_SWITCH ); updateSpaceState( bState ); updateOldSpaceState( bState ); time = millis(); } delay( 1 ); } void updateSpaceState( bool _bState ) { // Use WiFiClient class to create TCP connections WiFiClient client; if (!client.connect( API_SERVER, 80 ) ) { Serial.println( "connection failed" ); return; } // We now create a URI for the request String url = "/spaceAPI/?update&state="; if ( _bState ) url += 0; else url += 1; url += "&key="; url += API_KEY; Serial.print( "Requesting URL: " ); Serial.println( url ); // This will send the request to the server client.print( String("GET " ) + url + " HTTP/1.1\r\n" + "Host: " + API_SERVER + "\r\n" + "Connection: close\r\n\r\n"); delay( 10 ); // Read all the lines of the reply from server and print them to Serial while( client.available( ) ) { String line = client.readStringUntil( '\r' ); Serial.print( line ); } Serial.println( ); Serial.println( "closing connection" ); } void updateOldSpaceState( bool _bState ) { // Use WiFiClient class to create TCP connections WiFiClient client; if (!client.connect( API_SERVER, 80 ) ) { Serial.println( "connection failed" ); return; } // We now create a URI for the request String url = "/FORGOT_THE_URI"; if ( _bState ) url += "KEY_TO_SET_THE_SPACE_CLOSED"; else url += "KEY_TO_SET_THE_SPACE_OPEN"; Serial.print( "Requesting URL: " ); Serial.println( url ); // This will send the request to the server client.print( String("GET " ) + url + " HTTP/1.1\r\n" + "Host: " + API_SERVER + "\r\n" + "Connection: close\r\n\r\n"); delay( 10 ); // Read all the lines of the reply from server and print them to Serial while( client.available( ) ) { String line = client.readStringUntil( '\r' ); Serial.print( line ); } Serial.println( ); Serial.println( "closing connection" ); } void wifiConnect() { Serial.print( "Connecting to " ); Serial.print( AP_SSID ); WiFi.begin( AP_SSID, AP_PASSWORD ); while ( WiFi.status() != WL_CONNECTED ) { delay( 1000 ); Serial.print( "." ); } Serial.println( "" ); Serial.println( "WiFi connected" ); // Print the IP address Serial.println( WiFi.localIP( ) ); }