Intel Edison IoT remote miljöparametrar monitor (3 / 4 steg)
Steg 3: Programmering i JavaScript med XDK
- Redigera filen main.js i projektet:
Main.js (Vänligen ladda ner den bifogade filen, koden var förmodligen bruten efter stryket här)
/*
Main.js
Del av "Intel Edison IoT remote parametrar monitor"
Copyright 2015 Biagio Sesta, Algol Team
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/license>.
Steg för att installera MRAA & UPM bibliotek på Intel IoT plattform med IoTDevKit Linux * bild
Använda en ssh klient:
1. echo "src maa-upm http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/intel-iotdk.conf
2. opkg uppdatering
3. opkg uppgraderingen
ANVÄNDNING: ***
gå till http:/ < address_of_your_edison > /: 1377/sensorer
*/
var fs = require('fs');
var http = require('http');
var dispatcher = require('httpdispatcher');
var bind = require('bind');
var PORT = 1377;
var mraa = require("mraa");
Knappen ansluten till D2 kontakten
var buttonDigitalPinD2 = ny mraa. Gpio(2);
buttonDigitalPinD2.dir (mraa. DIR_IN);
LCD-bibliotek
var LCD = kräver ('jsupm_i2clcd');
var myLCD = ny LCD.Jhd1313m1 (0, 0x3E, 0x62);
var colorRed = {R: 255, G: 0, B: 0};
var colorBlue = {R: 0, G: 0, B: 255};
var colorWhite = {R: 40, G: 40, B: 40};
ljussensorer parametrar
GROVE Kit A0 kontakt--> Aio(0)
var myAnalogLightPin = ny mraa. AIO(0);
Air sensorer kvalitetsparametrar
GROVE Kit A3 kontakt--> Aio(3)
var myAnalogAirPin = ny mraa. AIO(3);
Temperatur sensor parametrar
GROVE Kit A1 kontakt--> Aio(1)
var myAnalogPin = ny mraa. AIO(1);
var B = 3975;
/*
Funktion: getSensorsValues()
Beskrivning: Läser värden från sensorer och returnera dem som en matris
*/
funktion getSensorsValues() {
'Använd strikt';
setInterval (funktion () {
var ambientValues = {};
ambientValues.temp = getTemperature();
ambientValues.light = getLight();
ambientValues.airQuality = getAirQuality();
återvända ambientValues;
}, 4000);
}
Console.log ("prov behandlingen Grove Kit temperaturgivare");
/*
Funktion: getTemperature()
Beskrivning: Läser värden från temperaturgivare och lämna tillbaka den
*/
funktion getTemperature() {
var en = myAnalogPin.read();
Console.log ("Analog Pin (A1) Output:" + en);
Console.log("Checking...");
var motstånd = (1023 - en) * 10000 / a; få motståndet av sensorn;
Console.log ("motstånd:" + motstånd);
var celsius_temperature = 1 / (Math.log(resistance / 10000) / B + 1 / 298.15)-273.15;//convert till temperatur via databladet.
Console.log ("Celsius temperatur:" + celsius_temperature);
returnera celsius temperatur med 2 decimaler
återvända celsius_temperature.toFixed(2);
}
/*
Funktion: getLight()
Beskrivning: Läser värden från ljussensor och lämna tillbaka den
*/
funktion getLight() {
var ljus = myAnalogLightPin.read();
returnera ljus;
}
/*
Funktion: getAirQuality()
Beskrivning: Läser värden från luft kvalitet sensor och lämna tillbaka den
*/
funktion getAirQuality() {
var iföljd = myAnalogAirPin.read();
returnera iföljd;
}
/*
Funktion: printToLcd()
Parametrar: ambientValues värdematris sensor
Beskrivning/kontroller: skriva värdena till LCD ansluten till styrelsen
*/
funktion printToLcd(ambientValues) {
myLCD.clear();
var outputColor = {};
kalla
om (ambientValues.temp < 15)
outputColor = colorBlue;
värma
annars om (ambientValues.temp > = 15 & & ambientValues.temp < 30)
outputColor = colorWhite;
heta
annat
outputColor = colorRed;
myLCD.setColor (outputColor.R, outputColor.G, outputColor.B);
Console.log ("Temp:" + ambientValues.temp);
myLCD.write ("Temp:" + ambientValues.temp);
myLCD.setCursor(1,0);
myLCD.write ("Air:" + ambientValues.airQuality);
myLCD.write ("Lux:" + ambientValues.light);
}
/*
Funktion: handleRequest()
Parametrar: begäran, http-begäran. svar, http resposne
Beskrivning/kontroller: funktion som hanterar begäran från en webbläsare
*/
funktion handleRequest (begäran, svar) {
försök {
Logga in begäran på konsol
Console.log(Request.URL);
Disptach
dispatcher.Dispatch (begäran, svar);
} catch(err) {
Console.log(err);
}
}
/*
Funktion: onGet()
Parametrar: sökväg till utskick, callback funktion som hanterar svaret
Beskrivning/kontroller: funktion som hanterar begäran från en webbläsare
*/
dispatcher.onGet ("/ sensorer", funktion (req, res, kedja) {
var ambientValues = getSensorsValues();
printToLcd(ambientValues);
/ * Nästa steg är en lösning att använda node.js mall funktion med Intel XDK
om jag börjar main.js att skriva noden main.js, binder programmet mallen korrekt
om jag laddar main.js med inbyggd funktion i XDK, programmet hittar inte sensors.tpl i relativ sökväg men det måste absolut sökväg
*/
var tpl = "sensors.tpl";
Kontrollera om programmet hitta tamplate i relativ sökväg
IF(!FS.existsSync(TPL))
tpl='/Home/root/.node_app_slot/sensors.tpl';
bind.toFile (tpl {
temperatur: ambientValues.temp,
ljus: ambientValues.light,
iföljd: ambientValues.airQuality
}, function(data) {
res.writeHead (200, {"Content-Type": "text/html"});
Res.End(data);
});
});
GROVE Kit sköld D2 -> GPIO2
/*
Funktion: startButtonWatch()
Beskrivning: Kolla värdet på knappen varje 300 MS
*/
funktion startButtonWatch() {
'Använd strikt';
var buttonValue = 0, last_b_sensor_value;
setInterval (funktion () {
buttonValue = buttonDigitalPinD2.read();
om (buttonValue === 1 & & last_b_sensor_value === 0) {
Console.log ("knappen");
var ambientValues = getSensorsValues();
printToLcd(ambientValues);
} else om (buttonValue === 0 & & last_b_sensor_value === 1) {
Console.log ("knappen släpps");
}
last_b_sensor_value = buttonValue;
}, 300);
}
Skapa en server
var server = http.createServer(handleRequest);
Låt oss börja vår server
Server.listen (PORT, function() {
Motringning när servern lyssnar framgångsrikt. Hurra!
startButtonWatch();
Console.log("Server Listening on: http://localhost:%s", port);
});
- Redigera package.json
{
"namn": "IoTParametersMonitor",
"Beskrivning": "",
"version": "1.0.0",
"main": "main.js",
"motorer": {
"nod": "> = 0.10.0"
},
"beroenden": {
"binder": "senaste",
"httpdispatcher": "senaste"
}
}
- Skapa en ny fil sensors.tpl i rotmappen på ditt projekt, denna fil är en mall som används för att binda värden från sensorer till en HTML-sida skickas till din webbläsare (Hämta filen bifogas)