Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ESP8266_WebServer mbed
Fork of WiFiLamp by
Revision 26:ea5e0ff46492, committed 2015-01-07
- Comitter:
- leet
- Date:
- Wed Jan 07 21:36:45 2015 +0000
- Parent:
- 25:841fc9daffa5
- Commit message:
- Add favicon, robots.txt and LED Disco Function, no WebGUI yet.
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
| resource.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Tue Jan 06 18:44:43 2015 +0000
+++ b/main.cpp Wed Jan 07 21:36:45 2015 +0000
@@ -52,6 +52,34 @@
ledStrip.write(colors, LED_COUNT);
}
+void setDiscoColor( )
+{
+ for ( int c = 0; c < LED_COUNT; c++ )
+ {
+ colors[c].red = rand()%255;
+ colors[c].green = rand()%255;
+ colors[c].blue = rand()%255;
+ }
+
+ ledStrip.write(colors, LED_COUNT);
+}
+
+Timer DiscoTimer;
+#define DiscoDelay 100
+
+int lampMode = 0;
+
+unsigned long heapSize()
+{
+ char stackVariable;
+ void *heap;
+ unsigned long result;
+ heap = malloc(4);
+ result = (uint8_t*)&stackVariable - (uint8_t*)heap;
+ free(heap);
+ return result;
+}
+
void sendConfigJSONReply(int linkID, const char* result) {
sprintf(temp, jsonConfigReply, opMode, stationIP.c_str(), ssid.c_str(), result);
server.SendReply(linkID, temp, mimeJSON, 0);
@@ -63,7 +91,7 @@
pc.attach(&pcrxint);
#endif
- pc.printf("WiFi Lamp - %s...\r\n", VERSION);
+ pc.printf("\r\nWiFi Lamp - %s...\r\n", VERSION);
setColor( 25, 0, 0);
@@ -73,6 +101,7 @@
wifiSerial.attach(&rxint);
#ifdef DEBUG_WIFI
server.debugSerial = &pc;
+ pc.printf("Debug WiFi Enabled!\r\n");
#endif
wait_ms(1000);
@@ -84,7 +113,6 @@
server.ResetModule();
wifiOn = 1;
-
std::string fwVer = server.GetFirmwareVersion();
pc.printf("ESP Firmware Version: %s\r\n", fwVer.c_str());
@@ -112,6 +140,9 @@
wait_ms(500);
setColor( 0, 0, 0);
+ pc.printf("Heap Memory %d", heapSize());
+ DiscoTimer.start();
+
std::string httpReply;
while(true) {
ESP8266_WebRequest* request = server.GetRequest();
@@ -120,7 +151,7 @@
for( std::map<std::string,std::string>::iterator it = request->Parameters.begin(); it!=request->Parameters.end(); ++it ) {
pc.printf("HTTP Parameter %s = %s\r\n", it->first.c_str(), it->second.c_str());
}
- if( request->URI == "/" ) {
+ if( request->URI == "/" || request->URI == "/index.html" ) {
httpReply = htmlHead;
httpReply += "<table><tr><td align='right'><a href='config'><img src='config.gif' /></a></td></tr>";
httpReply += "<tr><td align='center'>";
@@ -185,11 +216,21 @@
} else if( request->URI == "/wifilamp.css" ) {
server.SendReply(request->LinkID, css, strlen(css), mimeCSS);
} else if( request->URI == "/colormap.gif" ) {
- server.SendReply(request->LinkID, (char*)colormap, sizeof(colormap), mimeGIF);
+ server.SendReply(request->LinkID, (char*)colorMap, sizeof(colorMap), mimeGIF);
} else if( request->URI == "/config.gif" ) {
server.SendReply(request->LinkID, (char*)configIcon, sizeof(configIcon), mimeGIF);
+ } else if( request->URI == "/robtos.txt" ) {
+ server.SendReply(request->LinkID, robotsTxt, strlen(robotsTxt), mimeText);
+ } else if( request->URI == "/favicon.ico" ) {
+ server.SendReply(request->LinkID, (char*)favIcon, sizeof(favIcon), "image/x-icon");
+ } else if( request->URI == "/disco" ) {
+ lampMode = 2; // All colours
+ DiscoTimer.reset();
+ server.SendReply(request->LinkID, "OK", mimeText, 0);
} else if( request->URI == "/setcolour" || request->URI == "/setcolor" ) {
int r=0, g=0, b=0;
+
+ lampMode = 1; // All LED 1 colour
if(request->Parameters.count("r") > 0) r=atoi(request->Parameters["r"].c_str());
if(request->Parameters.count("g") > 0) g=atoi(request->Parameters["g"].c_str());
@@ -206,5 +247,20 @@
pc.printf("\r\nHTTP Reply Sent\r\n");
delete request;
}
+ if( lampMode == 2 && DiscoTimer.read_ms() > DiscoDelay ) {
+ setDiscoColor();
+ // Delay random colour change, else it just looks white
+ DiscoTimer.reset();
+ }
+/*
+ if( lampMode == 3 ) {
+ // strobe
+ }
+
+ if( lampMode == 4 ) {
+ // fade
+ }
+
+*/
}
}
\ No newline at end of file
--- a/resource.h Tue Jan 06 18:44:43 2015 +0000
+++ b/resource.h Wed Jan 07 21:36:45 2015 +0000
@@ -35,7 +35,9 @@
padding: 4px 10px;} table#config tr td input[type=button] {padding: 5px 20px;margin-top: 10px;} div#message {text-align: center;font-size: x-large;padding-bottom: 10px;}";
const char areaHTML[] = "<area shape='poly' coords='%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d'>";
-const char htmlHead[] = "<html><head><title>RGB WiFi Lamp</title><link rel='stylesheet' href='wifilamp.css' /><script src='wifilamp.js'></script></head><body onLoad='onLoad()'>";
+const char htmlHead[] = "<html><head><title>RGB WiFi Lamp</title><link rel='shortcut icon' href='/favicon.ico' type='image/x-icon'>\
+<link rel='icon' href='/favicon.ico' type='image/x-icon'><link rel='stylesheet' href='/wifilamp.css' /><script src='/wifilamp.js'>\
+</script></head><body onLoad='onLoad()'>";
const char htmlTail[] = "</body></html>";
const char htmlConfigHTML[] = "<div id='message'></div><table id='config'>\
@@ -57,7 +59,7 @@
</table>";
const char jsonConfigReply[] = "{\"opmode\":%d,\"staip\":\"%s\",\"ssid\":\"%s\",\"result\":\"%s\"}";
-const unsigned char colormap[7074]=
+const unsigned char colorMap[7074]=
{
0x47,0x49,0x46,0x38,0x39,0x61,0xEA,0x00,0xC7,0x00,0xE6,
0x7F,0x00,0x99,0x00,0x00,0x00,0xCC,0xFF,0x33,0x33,0x00,
@@ -705,7 +707,7 @@
0x3B,
};
-unsigned char configIcon[144]=
+const unsigned char configIcon[144]=
{
0x47,0x49,0x46,0x38,0x39,0x61,0x10,0x00,0x10,0x00,0xA2,
0x06,0x00,0xC0,0xC0,0xC0,0x80,0x80,0x00,0x80,0x80,0x80,
@@ -722,3 +724,82 @@
0x78,0x4A,0xF5,0x00,0x85,0x17,0x07,0xCC,0x91,0x00,0x00,
0x3B,
};
+
+const char robotsTxt[] = "User-agent: *\r\n\
+Disallow: /\r\n";
+
+// http://favicon-generator.org/about/
+// hexdump -e '15/1 "0x%02X, " 1/1 " 0x%02X,\n"' favicon.ico >> resources.h
+const unsigned char favIcon[1150] =
+{
+ 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x68, 0x04,
+ 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x12, 0x0B,
+ 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x88,
+ 0xB7, 0x00, 0xCD, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x00, 0xCC, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0xFF, 0x09, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCD, 0x00,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x00, 0xBC, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x00,
+ 0x33, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x90, 0x88,
+ 0xB7, 0x00, 0xFF, 0x00, 0xBC, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x09, 0x00, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x00,
+ 0xCC, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x09, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0xFF,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x90, 0x88,
+ 0xB7, 0x00, 0xFF, 0x09, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x09,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x90, 0x88,
+ 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0xEF, 0xFF,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x90, 0x88,
+ 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x09, 0xFF,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x09, 0x00, 0xFF, 0x00, 0xF7,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x09, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0xFF, 0x09, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x00, 0xBC, 0xFF, 0x00, 0x80,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x09,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x00, 0xBC, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0xEF, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x09, 0x00, 0xFF, 0x90, 0x88,
+ 0xB7, 0x00, 0xFF, 0x00, 0xBC, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xCD, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x00, 0xF7,
+ 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0x09, 0xFF, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xEF, 0xFF,
+ 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x09, 0x00, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xFF, 0x00,
+ 0xBC, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xCD, 0x00, 0xFF, 0xFF, 0x90, 0x88, 0xB7, 0x00, 0xAA, 0xAA,
+ 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xAA, 0xAA,
+};
+
