Flood detection i en smart streep lyktstolpe (1 / 4 steg)
Steg 1: Initial setup och temperatur sensor
Att lägga till Cylon.js
Detta projekt används den Cylon.js ramen (http://cylonjs.com/)
Cylon.js är en JavaScript-ramverk för robotics, fysiska computing och Sakernas Internet. Det gör det otroligt enkelt att kommandot robotar och enheter
Den största fördelen med Cylon.js är att samma kod ska köras på olika enheter (Intel Galileo, Arduino, Raspberry Pi, etc).
För att använda den, lägga till följande beroenden på package.json
"cylon": "1.2.0",
"cylon-intel-iot": "0.8.0",
"cylon-gpio": "0.27.0",
"cylon-i2c": "0.23.0" < br >
Samt main.js
var cylon = require("cylon");
Cylon.robot({
Namn: "floodDetection",
anslutningar: {
Galileo: {adapter: "intel-iot"}
},
enheter: {
},
arbeta: function() {
}
{}); < br >
Koppla temperaturgivaren
Innan vi börjar utvecklingen av funktionen för identifiering av översvämning, låt oss börja med temperaturgivaren.
Koppla in den i hamn A2 och kör sedan följande kod:
var cylon = require("cylon");
Cylon.robot({
Namn: "floodDetection",
anslutningar: {
Galileo: {adapter: "intel-iot"}
},
enheter: {
Temp: {drivrutin: "upm-grovetemp", pin: 2, anslutning: "galileo"},
},
debugValue: funktionen (meddelande, värde, status) {
Console.log (nya Date(), meddelande + "=" + värde + "[" + status + "]");
},
processBuffer: funktionen (/ * värde rapporteras av sensor * / currentValue, / * utbud * / buffert, / * sammanhang * / det) {
Initiera buffert om null
om (! buffer.values) {
buffer.Values = [];
};
Lägg till currentValue till buffert
buffer.values.push(currentValue);
Kontrollera storleken på bufferten. Om det har nått
sin buffert. MAX_SIZE, då vidta vissa åtgärder
om (buffer.values.length == buffert. MAX_SIZE) {
Hämta genomsnittliga värde. Detta värde kommer att användas
att utlösa en åtgärd.
var sumOfAllValues = 0;
buffer.values.forEach(function(oldValue) {
sumOfAllValues += oldValue;
});
var avgOfAllValues = (sumOfAllValues / buffer. MAX_SIZE);
Själva åtgärden
buffer.Action (, avgOfAllValues);
Återställa buffert
buffer.Values = null;
};
returnera buffert;
},
arbeta: function() {
var det =.
var temperatureBuffer = {
MAX_SIZE: 5,
data: null,
åtgärd: funktion (, avgValue) {
that.debugValue ("temperatur", avgValue);
},
};
setInterval(function() {
that.temperateBuffer = that.processBuffer(that.temp.value(), temperatureBuffer, som);
}, 1000);
}
{}); < br >
Produktionen bör Visa temperaturen (i Celsius) varje 5 sekunder.
Buffrade värden
Temperaturvärde som rapporterats av sensorn fångas varje sekund och sätta i en buffert tillägnad värdena för denna sensor. Denna buffert styrs av den metoden processBuffer, som tar som parametrar (1) det aktuella värdet av en given sensor, (2) buffert objekt för denna sensor och (3) variabeln "som".
Buffert objektet har (se temperatureBuffer) åtminstone:
- MAX_SIZE - den maximala storleken på bufferten;
- data - en matris med värden som rapporterats av sensorn;
- action - Javascript-funktionen utlöses av processBuffer;
Metoden bufferedReader kommer stack de senaste MAX_SIZE värden rapporteras av en viss sensor. När 'data' matrisstorlek är lika med MAX_SIZE, beräknar denna metod medelvärdet från de värden som finns i den här matrisen. Sedan funktionen skickas som parameter "åtgärder" kommer att utföras med hjälp av detta genomsnittliga värde och variabeln "data" kommer att anges till null.
Syftet med denna buffert är att avvikande värden.
På ovanstående kod, kommer funktionen "action" helt enkelt ut den genomsnittliga temperaturen. På följande steg, kommer att denna funktion vara mer användbart.