Hemautomation med Arduino... Och JavaScript! (5 / 6 steg)
Steg 5: Uttag med servern och Arduino händelsehantering
Nu har vi våra socket händelsehanterare / sändare på klientsidan, vi måste göra den arbeta på serversidan, kom ihåg att vi redan installerade socket.io modul på det andra steget, så vi behöver bara ställa upp till följande rader till vår server.js fil:
var socket = require('socket.io'); < br > / / Skapa en socket
var io = socket(server);
Hämtar klienten information via uttaget när en ny anslutning (endast en för detta projekt) är etablerad
IO.Sockets.on ("anslutning", function(socket) {
Få dimbara ljusvärde från UI och skicka den till arduino
socket.on ("dimbara led', function(value) {
Console.log ("dimbara LED värde är nu:" + värde);
dimmable_led.Brightness(Value);
});
Vardagsrum och andra rum lampor kan styras via UI
socket.on ("living-room-light', function(state) {
Console.log ("Living room light är:" + staten);
living_room_light_pin_led.Toggle();
});
socket.on ("andra-rum ljus, function(val) {
other_rooms_light_pin_led.Toggle();
});
});
Som ni kan se, vi nu hantera händelser från klienten, hämta post och göra arduino reagera på dem, dimmerfunktion LED och sätta på / stänga av vardagsrummet och andra rum ljus.
Efter detta måste vi avge händelser till klienten att ändra UI när att få data/förändringar från arduino, så i vår arduino kod kommer vi att lägga till och ändra vissa rader.
På vardagsrum koden:
photoresistor.on ('ändra', function() {
om (this.scaleTo ([0, 100]) < 60) {
living_room_light =! living_room_light;
living_room_light_pin_led.on();
IO.Sockets.Emit('photoresistor-change'); Detta är nytt
Console.log('photoresistor-change');
}
}); < br >
living_room_button.on ("release", fungera () {< br > living_room_light =! living_room_light;
living_room_light_pin_led.Toggle();
IO.Sockets.Emit ("living-room-ljus-tryckknapp", null); Detta är nytt
Console.log('living-Room-Light-pushbutton');
});
På andra rum koden:
other_rooms_light_button.on ("release", funktion () {
other_rooms_light =! other_rooms_light;
other_rooms_light_pin_led.Toggle();
IO.Sockets.Emit('other-Rooms-change');
Console.log('other-Rooms-change');
});
På temperaturen mäter koden bara lägga följande rad i början av återuppringning om funktionen.on("data",...):
IO.Sockets.Emit ("temperatur", this.celsius.toFixed(2));
Och på bakgården ljus koden:
backyard_light_button.on ("release", function() {< br > backyard_light =! backyard_light;
IF(backyard_light) {
backyard_light_pin.High();
Console.log ("bakgård lyser");
IO.Sockets.Emit ("bakgård-ljus-förändring ', 1); Detta är nytt
}
annat {
backyard_light_pin.Low();
Console.log ("bakgård lampan är släckt");
IO.Sockets.Emit ("bakgård-ljus-förändring", 0); Detta är nytt
}
});
Det är det, vår kod måste fungera nu, gå till din kommandorad och köra servern
nod server
Och gå i webbläsaren till http://localhost:3000, bör du se en UI som det som visas på den bifogade bilden, att kunna interagera med din Arduino med UI och vice versa.
Jag kopplade min egen script.js filen så kan du ta en titt.