From 81871b09654af791e5fb1e96aeb20f9ec5be5f0d Mon Sep 17 00:00:00 2001 From: FrYakaTKoP Date: Sat, 7 Oct 2017 17:26:37 +0200 Subject: [PATCH] - cleanup, interpret /motor/1/123 --- README.md | 7 +- data/index.html | 15 +- ...-ApWebseverPortal.ino => esp8266-laser.ino | 258 +++++++----------- 3 files changed, 111 insertions(+), 169 deletions(-) rename Esp8266-Spiffs-ApWebseverPortal.ino => esp8266-laser.ino (59%) diff --git a/README.md b/README.md index bc8147f..2f50b26 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,9 @@ # Esp8266-Laser Wifi Host for the Arduino-Laser-Spirograph -# install instructions - +#install - install arduino ide (1.8.5) -- follow this instruction to install esp8266-arduino - https://github.com/esp8266/Arduino#installing-with-boards-manager - - - get and install driver for nodemcu https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers diff --git a/data/index.html b/data/index.html index 8975790..eb292b4 100644 --- a/data/index.html +++ b/data/index.html @@ -24,9 +24,9 @@ console.log(uri); var xh = new XMLHttpRequest(); xh.onreadystatechange = function(){ - if (xh.readyState == 4){ - if(xh.status == 200) { - if (this.responseText != null) { + //if (xh.readyState == 4){ + //if(xh.status == 200) { + // if (this.responseText != null) { var res = JSON.parse(xh.responseText); var ledDiv; if(initial) @@ -73,7 +73,7 @@ { ledElement.checked = false; } - } + // } if(initial) { @@ -84,8 +84,8 @@ } - } - } + //} + //} } }; xh.overrideMimeType("text/json"); @@ -136,7 +136,8 @@ } } - } + } + console.log("res: " + res); } } }; diff --git a/Esp8266-Spiffs-ApWebseverPortal.ino b/esp8266-laser.ino similarity index 59% rename from Esp8266-Spiffs-ApWebseverPortal.ino rename to esp8266-laser.ino index fb31a5d..d953fb3 100644 --- a/Esp8266-Spiffs-ApWebseverPortal.ino +++ b/esp8266-laser.ino @@ -29,9 +29,12 @@ #include #include #include -#include #include +/* +#include +*/ + #define DBG_OUTPUT_PORT Serial const char *ssid = "ESP-test"; @@ -42,16 +45,15 @@ const char *myHostname = "esp8266"; const char *metaRefreshStr = "

redirecting...

"; + +/* // DNS server const byte DNS_PORT = 53; DNSServer dnsServer; + */ // LED Animations unsigned long previousMillis = 0; -bool ledAniRider = 0; -bool ledAniFlipper = 0; -bool ledAniDir = 0; -int ledAniPos = 0; int interval = 100; // ms /* Soft AP network parameters */ @@ -61,10 +63,6 @@ IPAddress netMsk(255, 255, 255, 0); // Web server ESP8266WebServer server(80); -// Gpios with LEDs -byte ledIoNames[] = {5, 4, 13, 12, 14, 16 }; // GPIO 5&4 12&13 flipped on my board so dirty patch here 5<->4 12<->13 - - //format bytes String formatBytes(size_t bytes){ if (bytes < 1024){ @@ -136,40 +134,55 @@ void handleFileList() { server.send(200, "text/json", output); } -void handleLeds() -{ - if(server.arg("LED") ) { - int pin = server.arg("LED").toInt(); - bool onOFF = server.arg("state").toInt(); - digitalWrite(pin, onOFF); - } - String json = "{ \"leds\": ["; - for (int i = 0; i < sizeof(ledIoNames); i++) - { - bool state = digitalRead(ledIoNames[i]); - json += "{ \"" + String(i) + "\": ["; - json += "\""+String(ledIoNames[i])+"\", "; - json += "\""+String(state)+"\" ] }"; - if(!(i == sizeof(ledIoNames)-1)) - json += ","; +// void handleLeds() +// { + // if(server.arg("LED") ) { + // int pin = server.arg("LED").toInt(); + // bool onOFF = server.arg("state").toInt(); + // digitalWrite(pin, onOFF); + // } + // String json = "{ \"leds\": ["; + // for (int i = 0; i < sizeof(ledIoNames); i++) + // { + // bool state = digitalRead(ledIoNames[i]); + // json += "{ \"" + String(i) + "\": ["; + // json += "\""+String(ledIoNames[i])+"\", "; + // json += "\""+String(state)+"\" ] }"; + // if(!(i == sizeof(ledIoNames)-1)) + // json += ","; - } - json += "] }"; - server.send(200, "text/json", json); - json = String(); - -} + // } + // json += "] }"; + // server.send(200, "text/json", json); + // json = String(); + +// } -void clearAll() { - //stop Animations - ledAniRider = 0; - ledAniFlipper = 0; - ledAniPos = 0; - ledAniDir = 0; - // clear all leds - for (int i = 0; i < sizeof(ledIoNames); i++) { - digitalWrite(ledIoNames[i], LOW); - } +void handleMotor() +{ + Serial.println("handleMotor"); + if(server.arg("motor") ) { + int pin = server.arg("motor").toInt(); + bool onOFF = server.arg("state").toInt(); + digitalWrite(pin, onOFF); + } + // String json = "{ \"leds\": ["; + // for (int i = 0; i < sizeof(ledIoNames); i++) + // { + // bool state = digitalRead(ledIoNames[i]); + // json += "{ \"" + String(i) + "\": ["; + // json += "\""+String(ledIoNames[i])+"\", "; + // json += "\""+String(state)+"\" ] }"; + // if(!(i == sizeof(ledIoNames)-1)) + // json += ","; + + // } + // json += "] }"; + server.send(200, "text/plain", "blub"); + // server.send(200, "text/json", json); + // json = String(); + + } void setup(void){ @@ -187,11 +200,6 @@ void setup(void){ DBG_OUTPUT_PORT.printf("\n"); } - // Setup LED pins - for (int i = 0; i < sizeof(ledIoNames); i++) { - pinMode(ledIoNames[i],OUTPUT); - } - //WIFI INIT DBG_OUTPUT_PORT.printf("Connecting to %s\n", ssid); WiFi.mode(WIFI_AP); @@ -202,9 +210,11 @@ void setup(void){ DBG_OUTPUT_PORT.print("Connected! IP address: "); DBG_OUTPUT_PORT.println ( WiFi.softAPIP() ); - /* Setup the DNS server redirecting all the domains to the apIP */ +/* + //Setup the DNS server redirecting all the domains to the apIP dnsServer.setErrorReplyCode(DNSReplyCode::NoError); - dnsServer.start(DNS_PORT, "*", apIP); + dnsServer.start(DNS_PORT, "*", apIP); +*/ // Setup MDNS responder if (!MDNS.begin(myHostname)) { @@ -219,123 +229,59 @@ void setup(void){ //SERVER INIT //list directory server.on("/listFiles", HTTP_GET, handleFileList); - //called when the url is not defined here - //use it to load content from SPIFFS - server.onNotFound([](){ - if(!handleFileRead(server.uri())) - server.send(302, "text/html", metaRefreshStr); - }); - // handle led requests - server.on("/leds", HTTP_GET, handleLeds); - server.on("/clearAll", HTTP_GET, clearAll); - server.on("/rider", HTTP_GET, [](){ - ledAniPos = 0; - ledAniDir = 0; - ledAniFlipper = 0; - ledAniRider = 1; - }); - server.on("/flipper", HTTP_GET, [](){ - ledAniPos = 0; - ledAniDir = 0; - ledAniRider = 0; - ledAniFlipper = 1; - }); - //get heap status, analog input value and all GPIO statuses in one json call - server.on("/all", HTTP_GET, [](){ + server.on("/heap", HTTP_GET, [](){ String json = "{"; json += "\"heap\":"+String(ESP.getFreeHeap()); - json += ", \"analog\":"+String(analogRead(A0)); - json += ", \"gpio\":"+String((uint32_t)(((GPI | GPO) & 0xFFFF) | ((GP16I & 0x01) << 16))); json += "}"; server.send(200, "text/json", json); json = String(); }); + server.onNotFound(handleNotFound); server.begin(); - DBG_OUTPUT_PORT.println("HTTP server started"); - + Serial.println("HTTP server started"); } - + +void handleNotFound() { + Serial.println("handleNotFound"); + String uri = server.uri(); + Serial.println(uri); + // /motor/1/123 + + if(uri.substring(0,7) == "/motor/") + { + Serial.println("/motor/"); + int motorNr = uri.substring(7,8).toInt(); + int motorValue = uri.substring(9).toInt(); + Serial.print("motorNr:"); + Serial.println(motorNr); + Serial.print("motorValue:"); + Serial.println(motorValue); + } + if(!handleFileRead(server.uri())) + { + //server.send(302, "text/html", metaRefreshStr); + server.send(302, "text/plain", "blub"); + } +} + void loop(void){ - //DNS + +/* + //DNS dnsServer.processNextRequest(); - //HTTP - server.handleClient(); +*/ + + //HTTP + server.handleClient(); - // LED Animation - if(ledAniRider || ledAniFlipper) - { - unsigned long currentMillis = millis(); - - if (currentMillis - previousMillis >= interval) { - // save the last time you blinked the LED - previousMillis = currentMillis; - - if(ledAniRider) - { - if(ledAniDir == 0) - { - if(ledAniPos < sizeof(ledIoNames)) - { - digitalWrite(ledIoNames[ledAniPos], HIGH); - digitalWrite(ledIoNames[ledAniPos -1], LOW); - ledAniPos++; - } - else - { - ledAniDir = 1; - digitalWrite(ledIoNames[ledAniPos], HIGH); - digitalWrite(ledIoNames[ledAniPos +1], LOW); - ledAniPos--; - } - } - else - { - if(ledAniPos >= 0) - { - digitalWrite(ledIoNames[ledAniPos], HIGH); - digitalWrite(ledIoNames[ledAniPos +1], LOW); - ledAniPos--; - } - else - { - ledAniDir = 0; - digitalWrite(ledIoNames[ledAniPos], HIGH); - digitalWrite(ledIoNames[ledAniPos -1], LOW); - ledAniPos++; - } - } - } - else if(ledAniFlipper) - { - if(ledAniDir == 0) - { - if(ledAniPos < sizeof(ledIoNames)) - { - digitalWrite(ledIoNames[ledAniPos], HIGH); - ledAniPos++; - } - else - { - ledAniDir = 1; - digitalWrite(ledIoNames[ledAniPos], LOW); - ledAniPos--; - } - } - else - { - if(ledAniPos >= 0) - { - digitalWrite(ledIoNames[ledAniPos], LOW); - ledAniPos--; - } - else - { - ledAniDir = 0; - digitalWrite(ledIoNames[ledAniPos], HIGH); - ledAniPos++; - } - } - } - } - } + // + unsigned long currentMillis = millis(); + if (currentMillis - previousMillis >= interval) + { + + previousMillis = currentMillis; + } + } + +