Hemautomation med Arduino... Och JavaScript! (3 / 6 steg)
Steg 3: Redo från servern
Första behöver vi att starta med en mapp tillägnad projektet, så din kommandorad gör detta:
mkdir myRockingProject & & cd myRockingProject #name det som du vill
NPM init #to arbeta med nod
mkdir offentliga #here vi kommer att sätta klienten (webbläsare) grejer
Du kan hämta filen package.json som jag bifogade, satte den på projektmappen och i ditt kommando linje run:
NPM installera
Skapa sedan en fil som heter server.js, vi kommer att sätta alla våra serverside saker här, detta är den största filen vi vill arbeta med, för här är all kommunikation mellan node.js och Arduino.
Om du har skapat din egen package.json med npm init, kommer vi att lägga till noden moduler som låt oss fungerar bra på miljön, så låt oss springa:
NPM installera--spara express johnny-fem socket.io
Det kommer att installera och kan du arbeta med de nämnda modulerna (express j5 och socket.io), kommer du att kunna se en förändring på din package.json fil bland annat följande:
"beroenden": {< br > "express": "^ 4.13.4",
"johnny-five": "^ 0.9.43",
"socket.io": "^ 1.4.5"
}
Obs: Vi kommer inte att använda socket.io just nu, men vi installerade den för att få den klar när tiden kommer.
Nu, i vårt server.js filen, vi kallar de moduler att arbeta med, först måste vi använda express, detta kommer att låta oss rutt klientanrop till våra filer och interagerar med det och servern, så låt oss skapa vår server:
var uttryckliga = require('express'); Kräver modulen
var app = express(), / / skapa en uttrycklig "app"
Server = app.listen(3000); Tala om för servern att lyssna på port 3000 (localhost:3000)
app.use(Express.static('public')); Vi berättar våra app (express, att tjäna statiska filer ligger i mappen "offentliga"
Vår server är redo att lyssna på klienten om och servera information till det, men vi fortfarande med något att tjäna eller komma till, och vi har inte heller kommunikation med Arduino.
Nästa sak är att installera Arduino-server-kommunikation, vi kommer först setup det på servern, så med hjälp av Johnny-fem bibliotek, en kraftfull JavaScript-Arduino bro för att kontrollera styrelsen direkt med JavaScript, vi kommer att ställa allt vi behöver göra våra automation hända!
I samma fil vi arbetade (server.js) vi kommer att skriva koden vi annars skulle skriva på arduino IDE, så låt oss skriva följande:
Ställa in johnny-fem
var fem = require("johnny-five"),
Arduino = fem. Board();
//////////////////////////////// VARIABLES ////////////////////////////////
var living_room_light = false other_rooms_light = false, fan = false, backyard_light = false; Hjälpare
var living_room_button, other_rooms_light_button, backyard_light_button; Knappar pins
var living_room_light_pin_led, other_rooms_light_pin_led, fan_pin, dimmable_led; Lysdioder pins
var backyard_light_pin; Relay pin
var fotomotstånd; Ljussensor
var temperatur; Tmp sensor
//////////////////////////////// BOARD ////////////////////////////////
Arduino.on ("ready", function() {
//////////////////////////////// DIMMABLE LED ////////////////////////////////
dimmable_led = fem. LED(6);
//////////////////////////////// LIVING ROOM ////////////////////////////////
Initiera tryckknapp för vardagsrum på digital ingång 2
living_room_button = fem. Button(2);
Stift 13 används för att ange vardagsrum ljus, analog ingång A0 används för att kontrollera ljusstyrkan från en fotomotstånd
fotomotstånd = nya fem. Sensor("a0");
living_room_light_pin_led = ny fem. LED(13);
living_room_light_pin_led.off();
Kontrollera om fotomotstånd blir mindre än hälften av lätt tillgänglig och ändra vardagsrum ljus om tillämpligt
photoresistor.on ('ändra', function() {
om (this.scaleTo ([0, 100]) < 60) {
living_room_light =! living_room_light;
living_room_light_pin_led.on();
Console.log('photoresistor-change');
}
});
Förändringar vardagsrum ljus när tryckknappen trycks
living_room_button.on ("release", funktion () {
living_room_light =! living_room_light;
living_room_light_pin_led.Toggle();
Console.log('living-Room-Light-pushbutton');
});
//////////////////////////////// OTHER ROOMS ////////////////////////////////
Alla rum utom vardagsrummet är samtidigt lätt drivs på manuellt
other_rooms_light_button = fem. Button(4);
Ljuset drivs via pin 12, lysdioderna anslutna parallellt
other_rooms_light_pin_led = ny fem. LED(12);
Ändra ljus tillstånd när "other_lights_button" trycks sedan släppas
other_rooms_light_button.on ("release", funktion () {
other_rooms_light =! other_rooms_light;
other_rooms_light_pin_led.Toggle();
Console.log('other-Rooms-change');
});
FAN STYRA MED TEMPERATUR MÄTNING / / /
Temperaturen kommer att mätas med en TMP36 sensor
temperatur = nya fem. Termometer ({
Controller: "TMP36",
PIN: "A1",
Freq: 2000
});
TIP42 transistor kopplas till stift 5
fan_pin = ny fem. PIN(5);
När temperaturen som tillhandahålls av sensor LM35 överstiger 22° C ändras fan indata dess värde till "hög" och när temperaturen är mindre eller lika med 22° C det går "låg"
temperature.on ("data", funktion () {
Console.log ("temperatur:" + this.celsius.toFixed(2));
om (this.celsius > 24.00) {
IF(fan) {
fan_pin.High();
fan =! fan;
Console.log ("temperaturen är:"+ this.celsius.toFixed(2) +", fläkten är på");
}
}
annars om (this.celsius < 24.00) {
IF(!fan) {
fan_pin.Low();
fan =! fan;
Console.log ("temperaturen är:"+ this.celsius.toFixed(2) +", fläkten är avstängd");
}
}
});
//////////////////////////////// BACKYARD LIGHT ////////////////////////////////
backyard_light_button = ny fem. Button(8);
Relä för att växla bakgård ljuset är kopplad till pin 9
backyard_light_pin = ny fem. PIN(9);
Kolla helst tryckknapp för att växla ljus
backyard_light_button.on ("release", function() {
backyard_light =! backyard_light;
IF(backyard_light) {
backyard_light_pin.High();
Console.log ("bakgård lyser");
}
annat {
backyard_light_pin.Low();
Console.log ("bakgård lampan är släckt");
}
});
});
Hittills är vi redo att interagera med arduino via vår server, och vi kunde bara bygga vår krets, köra och det skulle fungera, men var är roligt med det? Överallt, kretsarna är awesome, men ändå detta instructable syftar att interagera med arduino använder ett webbanvändargränssnitt, så låt oss gå till nästa steg och skapa våra UI.