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

Stap 4: Client side (de browser)

Wij zullen nu samen met onze toeschouwers map, daar zullen we de index van onze app en de JS-bestanden die dynamisch maken zal, dus laten we gaan toevoegen:

Maak eerst een map met de naam 'activa', en erin, twee meer met de naam 'lib' en 'stijlen', voor de map/lib zetten bootstrap, jquery en de p5-bestanden te maken, deze zal helpen ons benaderen onze doelstelling, bootstrap om te kijken glad, en p5 en jquery aangepaste functionaliteit en een grafiek voor het bijhouden van de temperatuur van het huis toe te voegen.

In de hoofdmap (/ openbare) Maak vervolgens een bestand met de naam index.html, u kunt mij controleren en plakken als u wilt, en na het beëindigen van de instructable voor u aanpassen en veel plezier!

Hier is mijn index.html

Nadat u uw indexbestand hebt moeten er worden ook twee javascript-bestanden, een van hen om te bepalen van de interface met jquery, en een andere om te maken van een grafiek met de temperatuur op real-time. Ook, zullen we beginnen met het werken met socket.io op dit moment.

Socket.io is een krachtige JS bibliotheek realtime om webtoepassingen te bouwen zullen, wij profiteren van het gebruiken voor het uitzenden van evenementen van de Arduino-server naar de client en viceversa, kunt u de socket.io documentatie hier en er zijn ook veel voorbeelden over hoe het te gebruiken. Laten we blijven onze bestanden eerder vermeldden.

Één bestand zal worden genoemd script.js en moet de volgende gegevens bevatten:

 $(function() { var socket = io.connect("http://localhost:3000"); // Slider with jQuery UI $( "#slider-range-max" ).slider({ range: "max", min: 0, max: 255, value: 0, slide: function( event, ui ) { // Assign the slider value to the dimmable-led input $( "#amount" ).val( ui.value ); // Send the event to the server with the name and value of it socket.emit('dimmable-led', ui.value); console.log("Slider value: " + ui.value); } }); $( "#amount" ).val( $( "#slider-range-max" ).slider( "value" ) ); // Both this and the next ( $("#other-rooms-btn").click() ) change the calling action button state and emit the event via socket $("#living-room-btn").click(function() { changeBtnState("#living-room-btn", "#living-room-light"); socket.emit('living-room-light', $("#living-room-light").val()); console.log($("#living-room-btn").val()); }); $("#other-rooms-btn").click(function() { changeBtnState("#other-rooms-btn", "#other-rooms-light"); socket.emit('other-rooms-lights', $("#other-rooms-light").val()); console.log($("#other-rooms-btn").val()); }); // Checks for events sent from arduino to change the living room or every other rooms because of a pushbutton or photoresistor socket.on('living-room-light-pushbutton', function() { changeBtnState("#living-room-btn", "#living-room-light") }); socket.on('backyard-light-change', function(value) { if(value) { if($("#backyard-light").val() == "Off") { $("#backyard-light").val("On"); } } else if($("#backyard-light").val() == "On") { $("#backyard-light").val("Off"); } }); ///// I need to change this to handle the photoresistor only once per state ///// socket.on('photoresistor-change', function() { changeBtnState("#living-room-btn", "#living-room-light") }); socket.on('other-rooms-change', function() { changeBtnState("#other-rooms-btn", "#other-rooms-light") }) // One function to rule them all, well, the UI buttons... // btn: the button id to change ------ input: the input id to change function changeBtnState(btn, input) { var btnClass = $(btn).attr('class'); var text, state, newBtnClass, oldBtnClass; if(btnClass === "btn btn-success") { oldBtnClass = 'btn-success'; newBtnClass = 'btn-danger'; text = 'off'; state = "On"; } else if(btnClass === "btn btn-danger") { oldBtnClass = 'btn-danger'; newBtnClass = 'btn-success'; text = 'on'; state = "Off"; } $(btn).removeClass(oldBtnClass); $(btn).addClass(newBtnClass); $(btn).text("Turn " + text); console.log(btn + " is " + state); $(input).val(state); } }); 

Hier wij omgaan met de UI-gebeurtenissen (Klik op van en een schuifregelaar) en met hen emitterende berichten via sockets weer die op de server worden ontvangen en Arduino zal doen werk gebaseerd op hen.

In de andere file, die we 'temperature_canvas_sketch' zal noemen we de gegevens die we van de temperatuursensor met behulp van p5.js, een grote JS bibliotheek gebaseerd op Processing lang wordt weergegeven. Dus in onze temperature_canvas_sketch.js-bestand laten we Voeg dit toe:

 var chartpoints = []; chartpoints.push({x: 0, y: 0}); var socket = io.connect("http://localhost:3000"); // Creating a canvas where the chart will be displayed and matching the connection with the socket function setup() { cnv = createCanvas(displayWidth / 2, displayHeight / 5); cnv.parent("termo-container"); // Gets a change whenever the temperature sensor changes and sets it to its element socket.on('temperature', function(temperature) { $("#termometer").val(temperature + "°C"); createPoint(temperature); }); } // Handle chart points to display function draw() { background(255); noFill(); stroke(0); // Here we draw the last temperature value from the chartpoints array where it is supposed to be //// Starts draw of point beginShape(); for (var i=0; i < chartpoints.length; i++) { var P = chartpoints[i]; vertex(P.x, height - P.y); text(P.y, P.x, height - P.y); //if (P.x<0)chartpoints.pop(i); P.x--; } endShape(); //// Ends draw of point } // This function is called whenever the tmp36 sends a new value to the client function createPoint(temp) { //var t = random(0, height-20); // Creates a new point with x -> live width of the canvas & y -> the temperature value from arduino var P = new Points(width, temp); chartpoints.push(P); } // Custom class of points that will be drawed var Points = function() { var x; var y; var constructor = function Points(x, y) { this.x = x; this.y = y; }; return constructor; }(); 

Dit zorgt voor tekenen een grafiek met de gegevens die we sturen, in dit geval is aan te tonen van de live temperatuur van ons huis.

Maar nu we sockets op de client en niet op de server hebben, we moeten terugkeren en ze werken goed, dus ga op toevoegen.

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