Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <WiFiClient.h>
- #include <ESP8266WebServer.h>
- const char* ssid = "...";
- const char* password = "...";
- bool snooze = false;
- long snooze_time = 0;
- ESP8266WebServer server(80);
- void setup() {
- pinMode( D1, OUTPUT );
- Serial.begin( 115200 );
- Serial.print( "\n" );
- WiFi.begin( ssid, password );
- Serial.print( "Connecting to " );
- Serial.println( ssid );
- // Wait for connection
- uint8_t i = 0;
- while ( WiFi.status() != WL_CONNECTED && i++ < 20 ) {
- delay( 500 );
- }
- if( i == 21 ){
- Serial.print( "Could not connect to" );
- Serial.println( ssid );
- while( 1 ) delay( 500 );
- }
- Serial.print( "Connected! IP address: " );
- Serial.println( WiFi.localIP() );
- server.on( "/beep", HTTP_GET, do_beep );
- server.on( "/snooze", HTTP_GET, do_snooze );
- server.on( "/unsnooze", HTTP_GET, undo_snooze );
- server.on( "/debug", HTTP_GET, do_debug );
- server.begin();
- Serial.println( "HTTP server started" );
- }
- void loop() {
- snooze = ( snooze_time > millis() );
- server.handleClient();
- }
- void do_debug() {
- String response;
- response = "Snooze state: ";
- response += snooze ? "ON" : "OFF";
- response += "\nSnooze time: ";
- response += snooze_time;
- response += "\nCurrent time: ";
- response += millis();
- response += "\n";
- server.send( 200, "text/plain", response );
- }
- void do_snooze() {
- String unit = server.arg( "unit" );
- long snooze_delay = server.arg( "time" ).toInt();
- Serial.print( "Inputed time: " );
- Serial.println( snooze_delay );
- Serial.print( "Inputed unit: " );
- Serial.println( unit );
- long offset = snooze_delay;
- Serial.print( "Offset start in ms: " );
- Serial.println( offset );
- if ( unit == "s" ) { offset *= 1000; }
- else if ( unit == "m" ) { offset *= 60000; }
- else if ( unit == "h" ) { offset *= 3600000; }
- else { server.send( 400, "text/plain", "Invalid unit, use s, m, h for second, minute, hour\n" ); }
- Serial.print( "Offset finish in ms: " );
- Serial.println( offset );
- Serial.print( "Current millis(): " );
- Serial.println( millis() );
- snooze_time = millis() + offset;
- Serial.print( "Target time: " );
- Serial.println( snooze_time );
- server.send( 200, "text/plain", "Delay set\n" );
- }
- void undo_snooze() {
- snooze_time = 0;
- server.send( 200, "text/plain", "Snooze cleared\n" );
- }
- void do_beep() {
- bool force = ( server.arg( "force" ) == "1" );
- if( snooze && !force ) {
- server.send( 401, "text/plain", "Snooze mode prohibits beeping. To override use /beep?force=1\n" );
- return;
- }
- Serial.println (server.arg( "plain" ) );
- server.send( 200, "text/plain", "Okay, beeped\n" );
- digitalWrite( D1, HIGH );
- delay( 250 );
- digitalWrite( D1, LOW );
- }
Advertisement
Add Comment
Please, Sign In to add comment