Domotica met Arduino... En JavaScript! (3 / 6 stap)

Stap 3: Klaar vanaf de server

Eerst moeten we om te beginnen met een map die is gewijd aan het project, dus in de opdrachtregel doen dit:

 mkdir myRockingProject && cd myRockingProject #name it as you want npm init #to work with node mkdir public #here we will put the client (browser) stuff 

U kunt downloaden het bestand van de package.json dat ik gehecht, zet het op je projectmap en in uw opdracht regel run:

 npm install 

Maak vervolgens een bestand met de naam server.js, zullen we al onze serverside spul hier, dit is het hoofdbestand dat we werken, willen want hier alle communicatie tussen node.js en Arduino is.

Als u uw eigen package.json met npm init gemaakt, zullen we om toe te voegen van het knooppunt modules waarmee ons goed voor het milieu werken, dus laten we uitvoeren:

 npm install --save express johnny-five socket.io 

Dat zal installeren en laat u werken met de genoemde modules (uitdrukkelijke j5 en socket.io), u zal zitten kundig voor zien van een wijziging op uw package.json bestand, waaronder de volgende:

 "dependencies": {<br> "express": "^4.13.4", "johnny-five": "^0.9.43", "socket.io": "^1.4.5" } 

Opmerking: We zullen niet het gebruiken van socket.io nu, maar we geïnstalleerd om het te krijgen klaar wanneer de tijd komt.

Nu, in onze server.js-bestand, zullen we het noemen van de modules om mee te werken, eerst moeten we gebruiken express, dit zal laten route de klant oproepen naar onze bestanden en interactie met het en de server, dus laten we het maken van onze server:

 var express = require('express'); // Calling the module var app = express(), // Creating an express 'app' server = app.listen(3000); // Telling the server to listen on port 3000 (localhost:3000) app.use(express.static('public')); // We tell our app (express, to serve the static files located on the 'public' folder 

Onze server is klaar om te luisteren naar de clientaanvragen en dienen informatie aan het, maar we nog steeds met niets om te dienen noch te krijgen, en we hebben niet of communicatie met de Arduino.

Het volgende ding is aan opstelling van de mededeling van de Arduino-server, zullen we eerst het opzetten op de server, dus, met de hulp van Johnny-vijf bibliotheek, een krachtige JavaScript-Arduino brug om controle op het bestuur rechtstreeks met JavaScript, zal zetten we alles wat we nodig om onze automatisering gebeuren!

In hetzelfde bestand we werkten (server.js), we zullen de code schrijven we anders zou schrijven op de arduino IDE, dus laten we schrijft het volgende:

 // Setting up johnny-five var five = require("johnny-five"), arduino = five.Board(); //////////////////////////////// VARIABLES //////////////////////////////// var living_room_light = false, other_rooms_light = false, fan = false, backyard_light = false; // Helpers var living_room_button, other_rooms_light_button, backyard_light_button; // Buttons pins var living_room_light_pin_led, other_rooms_light_pin_led, fan_pin, dimmable_led; // LEDs pins var backyard_light_pin; // Relay pin var photoresistor; // Light sensor var temperature; // Tmp sensor //////////////////////////////// BOARD //////////////////////////////// arduino.on("ready", function() { //////////////////////////////// DIMMABLE LED //////////////////////////////// dimmable_led = five.Led(6); //////////////////////////////// LIVING ROOM //////////////////////////////// //Initialize pushbutton for living room at digital input 2 living_room_button = five.Button(2); // Pin 13 is used to set living room light, analog input A0 is used to check light intensity from a photoresistor photoresistor = new five.Sensor("A0"); living_room_light_pin_led = new five.Led(13); living_room_light_pin_led.off(); // Check if photoresistor gets less than a half of light available and change living room light if applicable photoresistor.on('change', function() { if(this.scaleTo([0, 100]) < 60){ living_room_light = !living_room_light; living_room_light_pin_led.on(); console.log('photoresistor-change'); } }); // Changes living room light when pushbutton is pushed living_room_button.on("release", function () { living_room_light = !living_room_light; living_room_light_pin_led.toggle(); console.log('living-room-light-pushbutton'); }); //////////////////////////////// OTHER ROOMS //////////////////////////////// // All rooms excepting the living room are simultaneously light powered on manually other_rooms_light_button = five.Button(4); // Light is powered via pin 12, LEDs connected in parallel other_rooms_light_pin_led = new five.Led(12); // Change light state whenever 'other_lights_button' is pressed then released other_rooms_light_button.on("release", function () { other_rooms_light = !other_rooms_light; other_rooms_light_pin_led.toggle(); console.log('other-rooms-change'); }); //////////////////////////////// FAN CONTROLLING WITH TEMPERATURE MEASURING //////////////////////////////// // Temperature will be measured with a TMP36 sensor temperature = new five.Thermometer({ controller: "TMP36", pin: "A1", freq: 2000 }); // TIP42 transistor is attached to pin 5 fan_pin = new five.Pin(5); // Whenever temperature provided by LM35 sensor is greater than 22° C the fan input changes its value to 'high' and when temperature is less or equal to 22° C it goes 'low' temperature.on("data", function () { console.log('temperature: ' + this.celsius.toFixed(2)); if(this.celsius > 24.00) { if(fan) { fan_pin.high(); fan = !fan; console.log("Temperature is: "+this.celsius.toFixed(2)+", fan is on"); } } else if(this.celsius < 24.00) { if(!fan) { fan_pin.low(); fan = !fan; console.log("Temperature is: "+this.celsius.toFixed(2)+", fan is off"); } } }); //////////////////////////////// BACKYARD LIGHT //////////////////////////////// backyard_light_button = new five.Button(8); // Relay to toggle the backyard light is attached to pin 9 backyard_light_pin = new five.Pin(9); // Check any pushbutton event to toggle the light backyard_light_button.on("release", function() { backyard_light = !backyard_light; if(backyard_light) { backyard_light_pin.high(); console.log("Backyard light is on"); } else { backyard_light_pin.low(); console.log("Backyard light is off"); } }); }); 

Tot nu toe, we zijn klaar om te interageren met arduino via onze server, en we konden gewoon bouwen onze schakeling, voer de code en het zou werken, maar waar is het plezier mee? Overal, circuits zijn geweldig, maar toch het doel van dit instructable is voor interactie met de arduino via een webinterface voor de gebruiker, dus laten we gaan naar de volgende stap en maken onze UI.

Gerelateerde Artikelen

Inleiding tot de domotica met Arduino en RF-signalen!

Inleiding tot de domotica met Arduino en RF-signalen!

Vandaag ga ik Toon u een inleiding op huisautomatisering met RF-signalen.Stel je het midden van de winter, het is koud en donker buiten, maar dankzij automatisering u wakker worden met een warme en lichte kamer met een warme kop koffie stomen langs d
MyHome - domotica met Arduino en XBee

MyHome - domotica met Arduino en XBee

*** update ***Ver 2.0-toegevoegd Nexa outlet zuigkrachtregeling-toegevoegde één draad temperatuursensoren-toegevoegde controle van materiaal via de gebeurtenissen van de kalender van Google***********************Hoi allemaalDit is het verhaal over mi
Domotica met Raspberry Pi, Arduino, Domoticz, MySensors.

Domotica met Raspberry Pi, Arduino, Domoticz, MySensors.

Hallo collega-makers,Dit is mijn eerste Instructable op Home Automation. Het idee is het bouwen van een controller en draadloze knooppunten controle en monitor.Na een heleboel hit en proef met veel verschillende controllers zoals OpenHab, DomotiGa, g
Home Automation met behulp van RF-Transceiver met Arduino Micrcontroller

Home Automation met behulp van RF-Transceiver met Arduino Micrcontroller

Dit project laten zien voor het ontwerp en de ontwikkeling van een Home Automation systeem met behulp van RF-Transceiver gecontroleerd door Arduino Micrcontroller. De gebruiker zal verschillende indoor apparatuur zoals bollen, deuren en fans met behu
Bedien uw Tv, Dvd en Audio systeem met Arduino en Android

Bedien uw Tv, Dvd en Audio systeem met Arduino en Android

Hallo iedereen, dit is mijn tweede instructable en mijn eerste in het Engels, dus, sorry voor de fouten.Ik wil delen dit project die het gaat over hoe u kunt uw Tv, DVD en uw audiosysteem met Arduino en een app voor Android gemaakt met app uitvinder.
IoT stopcontact met Arduino en ESP8266

IoT stopcontact met Arduino en ESP8266

In dit instructable, ik u tonen hoe verbeterde toegankelijkheid, intelligentie en connectiviteit toevoegen aan een gewone stopcontact. Dit wordt gedaan met een combinatie van microcontrollers, Arduino, diverse sensoren, ESP8266 en een mix van softwar
Home Automation met Arduino, Buttons, LCD, EEPROM en slimme telefoon

Home Automation met Arduino, Buttons, LCD, EEPROM en slimme telefoon

Nu kunnen we de controle van romp huis met slimme telefoonStap 1: Hardware vereist voor domotica kunt u verschillende dingen, ik kies schakelen of relayIn dit project u zal bepalen switcher door mobiele .if mobiele niet aanwezig is kunt u ook bediene
LED kubus met Arduino en aangepaste PCB

LED kubus met Arduino en aangepaste PCB

dit instructable details over het ontwerp en bouwproces voor een 5 x 5 x 5 LED-kubus, instelbaar met behulp van een Arduino, die zich op een aangepaste printplaat bevindt.Extra informatie, foto's en video's vindt u op mijn website.Het afgewerkt produ
Een Levitating bol draait gloed en knippert met Arduino

Een Levitating bol draait gloed en knippert met Arduino

Een levitating little Death Star in Instructables nodigde me aan het nieuwe project met Arduino. Drie beleidsterreinen werden besloten en bewaard als onderscheid met de voorloper.Doe het zelf met geen (of minder) ready-made.Draaiende houden.Maak gloe
PHloat2 DIY zuur water testen sculptuur & kit met arduino

PHloat2 DIY zuur water testen sculptuur & kit met arduino

pHloatpHloat is een DIY kit die is gemaakt voor gebruik in combinatie met een pre-owned / reeds bestaande arduino microcontroller. Het doel is het testen van de pH-niveaus in de lokale rivieren, meren en stromen als gevolg van de toestroom van lucht-
Kamertemperatuur in Dot-Matrix beeldscherm met Arduino en LM35

Kamertemperatuur in Dot-Matrix beeldscherm met Arduino en LM35

Hey daar!Dit is mijn eerste instructable, en ik zal je laten zien hoe u een temperatuursensor en een Dot-Matrix beeldscherm met arduino in real-time kunt interface.Ik heb bijgevoegd de arduino schets, die nogal groot in één oogopslag is, maar als u o
Aan de slag met Arduino - twee speler Arduino Pong

Aan de slag met Arduino - twee speler Arduino Pong

In deze tutorial gaan we een arduino gebaseerde controller die we gebruiken kunnen om te bepalen van een spel voor 2 spelers van pong bouwen.We gaan een paar van dial potentiometers (het draaien van knoppen) gebruiken om te controleren de pong vleerm
Mood Lamp met Arduino

Mood Lamp met Arduino

Hallo! In deze tutorial leert u om een mood lamp met arduino.Ik weet dat je hebt misschien een heleboel mood lamp projecten met arduino gezien, maar ik was zeer tevreden met hen niet, omdat ze allemaal heel abrupt de kleur wijzigen. Dus, heb ik beslo
AtoZ van RC hobby + DIY radio met ARDUINO

AtoZ van RC hobby + DIY radio met ARDUINO

Wikipedia omschrijft RC-voertuig alsEen afstandsbediening voertuig is een voertuig dat op afstand wordt bestuurd door een betekent dat de beweging met een externe oorsprong niet tot het apparaat beperkt. Dit is vaak een bedieningsorgaan radio, kabel