Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Use HTTP module
  2. var http = require('http');
  3.  
  4. // Define a port we want to listen to
  5. const PORT=8000;
  6.  
  7. // This function sends requests to the ESP8266
  8. function doRequest(url) {
  9.  try {
  10.   var req = http.get({
  11.         host: '10.0.0.3',
  12.         port: 8000,
  13.         path: '/'+url
  14.     }, function(response) { }
  15.     ).on('error', function(err) {
  16.         // handle errors with the request itself
  17.         console.error('Error with the request:', err.message);
  18.     });
  19.  } catch(e) {
  20.    
  21.  }
  22. }
  23.  
  24. // This function handles requests
  25. function handleRequest(req, res){
  26.  
  27.     // Map ID values to LED seqments
  28.     var mapValues = ["1-2", "3-4", "5-6", "7-8", "9-10", "11-12", "13-14", "15-16"];
  29.     // Define pre- and post-delays
  30.     var delay_pre = [4, 8, 12, 16, 20, 24, 28, 32];
  31.     var delay_post = [32, 28, 24, 20, 16, 12, 8, 4];
  32.     var led_on_time = 25;
  33.    
  34.    
  35.     // On /set/, set four states to switch between off and green
  36.     if (req.method === "GET" && req.url.substr(0,4) === "/set") {
  37.       var led_idx = parseInt(req.url[5]);
  38.       // Send request to the ESP8266 (/set/<LED_ids>/<State>/<Red>/<Green>/<Blue>/<Transition time to next state in ms>
  39.       doRequest("set/"+mapValues[led_idx]+"/0/0/0/0/"+delay_pre[led_idx]); // Stay off for delay_pre time
  40.       doRequest("set/"+mapValues[led_idx]+"/1/0/0/0/5");                   // Transition to off-state, and 5ms transition to "green"
  41.       doRequest("set/"+mapValues[led_idx]+"/2/0/40/0/"+led_on_time);       // Green on-state
  42.       doRequest("set/"+mapValues[led_idx]+"/3/0/0/0/"+delay_post[led_idx]);// Balance the overall delay, so that the LEDs don't go off-sync
  43.       doRequest("cleartime/"); // Clear all timings, so that the sequence blinks as it should
  44.       res.end();
  45.      
  46.     // On /clear/, set four states to switch between off and red
  47.     } else if (req.method === "GET" && req.url.substr(0,6) === "/clear") {
  48.       var led_idx = parseInt(req.url[7]);
  49.       doRequest("set/"+mapValues[led_idx]+"/0/0/0/0/"+delay_pre[led_idx]);
  50.       doRequest("set/"+mapValues[led_idx]+"/1/0/0/0/5");
  51.       doRequest("set/"+mapValues[led_idx]+"/2/40/0/0/"+led_on_time);
  52.       doRequest("set/"+mapValues[led_idx]+"/3/0/0/0/"+delay_post[led_idx]);
  53.       doRequest("cleartime/");
  54.       res.end();
  55.     } else {
  56.       res.statusCode = 404;
  57.       res.end();
  58.     }
  59. }
  60.  
  61. //Create the server
  62. var server = http.createServer(handleRequest);
  63.  
  64. // Listen for connections
  65. server.listen(PORT, function(){
  66.     // Listening..
  67.     console.log("Server listening on: http://localhost:%s", PORT);
  68. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement