Intellekten IoT Edison web kontrollerad LED (3 / 3 steg)
Steg 3: Den node.js delen
Med hjälp av terminal anslutningen, skapa följande node.js-fil:
web_button.js (ladda ner vänligen den bifogade filen, koden var förmodligen bruten efter stryket här)
Uppdaterar /tmp/arduino.txt när en användare skickar ett kommando från webbgränssnittet.
/*
web_button.js
Del av "Intel IoT Edison web kontrollerade LED demo"
Copyright 2014 Pavlos Iliopoulos, techprolet.com
Detta program är fri programvara: du kan vidaredistribuera det och/eller ändra
det enligt villkoren i GNU General Public License som offentliggjorts av
Free Software Foundation, antingen version 3 av licensen, eller
(på ditt alternativ) någon senare version.
Detta program är distribuerat i hopp om att det kommer att vara användbar,
men utan garantier; utan att ens underförstådd garanti om
SÄLJBARHET eller lämplighet för ett visst ändamål. Se den
GNU General Public License för mer detaljer.
Du bör ha fått en kopia av GNU General Public License
tillsammans med detta program. Om inte, se < http://www.gnu.org/licenses/>.
*/
var http = require('http');
var url = require('url');
var fs = require('fs');
var arduinoFileName = "/ tmp/arduino.txt";
funktion sendResponse (ledOn, remoteIP, svar) {
om (remoteIP! = null) {
Console.log ("\nRequest till switch LED" + (ledOn? " Å ': 'Off'));
Console.log ("från" + remoteIP);
var fileStream = fs.createWriteStream(arduinoFileName);
fileStream.write (ledOn + "\n" + remoteIP + "\nOK\n");
fileStream.end();
response.writeHead (302 {
"Plats": '/'
});
Response.End();
} annat {
response.writeHead (200, {"Content-Type": "text/html"});
Response.write('<! DOCTYPE html >< html lang = "sv" >< huvud >');
Response.write ("< meta charset =" utf-8 ">");
Response.write ("< meta http-equiv ="uppdatera"content ="30"/ >');
Response.write ("< title > LED switch </title >');
om (! ledOn) {
Response.write ("< style > kropp {bakgrunden-färg: svart, färg: vit;} < / stil >');
}
Response.write ("</head >');
Response.write ("< body >< h1 > LED är nu" +(ledOn?' Å ': 'Off'));
Response.write ("</h1 >');
om (ledOn) {
Response.write ("< en href =" / av "> Stäng av! < /a >');
} annat {
Response.write ("< en href ="/on"> slå på! < /a >');
}
Response.write ("</body >< / html >');
Response.End();
}
}
funktionen processRequest (begäran, svar) {
"Använd strikt";
var sökväg = url.parse (request.url) .pathname;
var remoteIP = request.headers ['X-Forwarded-For'] == undefined?request.connection.remoteAddress:request.headers ['X-Forwarded-For'];
om (sökväg == "/ on") {
sendResponse (sant, remoteIP, svar);
} else om (sökväg == "/ off") {
sendResponse (falskt, remoteIP, svar);
} else om (sökväg == "/") {
FS.exists (arduinoFileName, funktion (finns) {
om (det finns) {
fs.readFile (arduinoFileName, function(err,data) {
om (! err) {
Console.log ('\nStored data:\n ' + data);
var storedData = data.toString().split("\n");
sendResponse ((storedData [0] == "true"), null, svar);
} annat {
Console.log(err);
}
});
} annat {
sendResponse (falskt, null, svar);
}
});
} annat {
Response.End();
}
}
http.createServer(processRequest).listen(8080);
Console.log ("Server körs på port 8080");
Kör skriptet med följande kommando:
# nod web_button.js
Webben är sedan tillgänglig på http://youredisonaddress:8080 /
Det är det! Kul med din web ha kontrollerat Edison!