Intel® Edison styrelse: IoT temperaturövervakning (12 / 13 steg)
Steg 12: kod
Följande är koden för att använda med Intel® XDK. Du kan läsa mer om att komma igång och hur du kör ett program här: https://software.intel.com/en-us/getting-started-...
var mraa = require('mraa');
var dgram = require('dgram');
var mqtt = require('mqtt');
var fs = require('fs');
var upm_lcd = kräver ('jsupm_i2clcd');
var tempSensor = nya mraa. AIO(0); //
temperatursensor kopplad till analoga IO pin 0
var powerswitch = nya mraa. Gpio(8);
tryckknapp ansluten till digital IO stift 8
var ledde = nya mraa. Gpio(2); LED
ansluten till digital IO stift 2
var fläkt = nya mraa. Gpio(3);
fläkt ansluten till digital IO stift 3, dvs röda kabeln (5 V) till GPIO 3
breakout ombord och svarta kabeln (marken) till GND.
var relä = nya mraa. Gpio(4); //
Relay ansluten till digital stift 4
var lcd = nya upm_lcd. Jhd1313m1(6,
0x3E, 0x62); LCD ansluten till I2C bussen, någon kontakt på I2C kommer att göra.
Powerswitch.dir (mraa. DIR_IN);
LED.dir (mraa. DIR_OUT);
ventilator.dir (mraa. DIR_OUT);
Relay.dir (mraa. DIR_OUT);
Touch Sensor parametrar
var ventilatorON = 0; / * för detta
demo, ventilatorON är likvärdiga med ljust (= värmekälla) av * /
var switchstate = 0;
Temperatur Sensor parametrar
var B = 3975;
Skapa MQTT
var mqttClient =
mqtt.createClient(1884);
Skapa UDP-klient
var udpClient =
dgram.createSocket('udp4');
UDP-alternativ
var rec_port = 41235;
LCD-parametrar
var lcdMessage = "";
LCD-Setup
LCD.write ("Intel Edison");
lcd.setCursor(1,0);
LCD.write ("TEMP:");
LED.write(0);
ventilator.write(0);
Relay.write(1);
Starta verksamhet
touchActivity();
lcdTempActivity();
funktion touchActivity()
{
switchstate = powerswitch.read(); läsa digitala värdet av klämma fast
IF(switchstate == 1) / * ändra ventilatorstate * /
{
om (ventilatorON == 0)
{
Relay.write(ventilatorON);
ventilatorON = 1;
}
annat
{
Relay.write(ventilatorON);
ventilatorON = 0;
}
LED.write(ventilatorON);
ventilator.write(ventilatorON);
}
setTimeout(touchActivity,1000); kontrollera varje sekund (= 1000 millisekunder)
för status för växeln.
}
funktion lcdTempActivity() {
Få temperatur
var läsning = tempSensor.read();
var motstånd = (1023 - läsning) * 10000 / läsning; Få den
motståndet av sensorn
var temperatur = (1 / (Math.log(resistance / 10000) / B + 1 / 298.15)-
273.15).toPrecision(3); Konvertera till temperatur via datablad
lcdMessage = temperatur + "C".
lcd.setCursor(1,6);
LCD.write(lcdMessage);
IF(temperature > 40)
{
lcd.setColor(255,0,0); Färgskärm
Red över 40 grader
}
annars om (temperatur > 30)
{
lcd.setColor(255,100,0); färg
skärmen orange över 30 (och under 40)--zon där fläkten slår på
automatiskt--behöver 2 regler i IOT analysverktyg.
}
annat
{
lcd.setColor (0, 255, 0); Grön som
så länge temp är under 30
}
Skicka observation till molnet
sendObservation ("temp", temperatur, nya Date().getTime());
setTimeout(lcdTempActivity,5000); / * uppdatera tempearture varje 5 sek * /
}
Skicka observation till molnet
(MQTT)
funktion sendObservation(name,
värde, å) {
var msg = JSON.stringify ({
n: namn,
v: värde,
på: på
});
Console.log ("Skicka observation:" + msg);
mqttClient.publish ("data", msg);
}
lyssna för UDP-meddelande från lokala
agent
udpClient.on ("fel",
funktion (err) {
Console.log ("udpClient fel: \n" + err.stack);
udpClient.close();
});
udpClient.on ("meddelande",
funktion (msg, rinfo)
{
var sensorName = "LED"; / * ventilator är den komponent som definieras
i verktyget Analytics * /
Console.log ("udpClient fick:" + msg + "från" +
rinfo.address + ":" + rinfo.rec_port);
Ignorera meddelanden såvida de inte är lokala
om (rinfo.address! = "127.0.0.1")
{
Console.log ("ignorera remote UDP-meddelande");
hemkomst.
}
var js = JSON.parse(msg);
var komponent = js ["komponent"];
var kommandot = js [kommando];
var argvArray = js ['argv"];
Console.log ("komponent:" + komponent);
Console.log ("kommando:" + kommando);
för (var jag = 0; jag < argvArray.length; i ++)
{
var namn =
argvArray [i] ['namn'];
var värdet = argvArray [i] ['värde'];
Console.log ("namn:" + namn);
Console.log ("värde:" + värde);
om (namn == sensorName)
{
Console.log ("cloud
(de) aktiveringen kommando för ventilator emot");
IF(parseInt(Value) == 1) / * växla
ventilator ON * /
{
om (ventilatorON == 0)
{
Relay.write(ventilatorON);
ventilatorON = 1;
LED.write(ventilatorON);
ventilator.write(ventilatorON);
}
}
annat
{
om (ventilatorON == 1)
{
Relay.write(ventilatorON);
ventilatorON = 0;
LED.write(ventilatorON);
ventilator.write(ventilatorON);
}
}
Console.log ("Ventilator staten
förändrats genom molnet kommando till: "+ ventilatorON);
}
}
});
udpClient.on ("lyssnar",
funktion () {
var adress = udpClient.address();
Console.log ("udpClient lyssnar" +
address.address + ":" + address.port);
});
udpClient.bind(rec_port);
Kontrollera att package.json har MQTT i beroenden.
{
"namn": "blankapp",
"Beskrivning": "",
"version": "0.0.0",
"main": "main.js",
"motorer": {
"nod": "> = 0.10.0"
},
"beroenden": {
"mqtt": "^ 0.3.8"
}
}