Hemautomation med Arduino... Och JavaScript! (4 / 6 steg)

Steg 4: Klientsidan (webbläsaren)

Vi kommer nu att arbeta med våra /public mapp, där, vi kommer att lägga till indexet för vår app och JS-filer som kommer att göra det dynamiska, så låt oss gå:

Skapa först en mapp som heter "tillgångar", och inuti den, skapa två mer heter "lib" och "stilar", på mappen/lib, sätta bootstrap, jquery och p5 filer, dessa kommer att hjälpa oss närma sig våra mål, bootstrap se slät, och p5 och jquery för att lägga till anpassade funktioner och ett diagram att spåra house temperaturen.

Sedan i huvudmappen (/ offentliga) skapa en fil som heter index.html, kan du kolla min och klistra in den om du vill, och när du slutar den instructable anpassa det för dig och ha kul!

Här är min index.html

Efter att du har din indexfil måste det också vara två javascript-filer, en av dem att styra gränssnittet med jquery, och en annan att skapa ett diagram som visar temperaturen på realtid. Dessutom börjar vi arbeta med socket.io just nu.

Socket.IO är en kraftfull JS bibliotek att bygga realtime webbprogram, vi kommer att dra nytta av det och använda den för att släppa ut händelser från Arduino-servern till klienten och viceversa, kan du kontrollera i dokumentationen för socket.io här och det finns också många exempel på hur man använder den. Låt oss fortsätta att våra filer som tidigare nämnts.

Att kommer kallas en fil script.js och måste innehålla följande:

$(function() {
var socket = io.connect ("http://localhost:3000");
Slider med jQuery UI
$(#slider-sortiment-max) .slider({
utbud: "max",
min: 0,
Max: 255,
värde: 0,
bild: funktion (händelse, ui) {
Tilldela reglaget till dimbara led-ingången
$("#amount") .val (ui.value);
Skicka händelsen till servern med namnet och värdet av det
socket.Emit ("dimbara-ledda", ui.value);
Console.log ("reglaget värde:" + ui.value);
}
});
$("#amount") .val ($(#slider-sortiment-max) .slider ("värde"));
Både detta och nästa ($("#other-rooms-btn").click()) ändra det anropande knappen åtgärdstillståndet och släpper ut händelsen via uttaget
$("#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-rum-btn", "#other-rum-light");
socket.Emit ("andra-rum-ljus", $("#other-rooms-light").val());
Console.log($("#other-Rooms-BTN").val());
});
Kontrollerar om händelser skickas från arduino ändra vardagsrummet eller varje annat rum på grund av en tryckknapp eller fotomotstånd
socket.on ("living-room-ljus-tryckknapp", function() {changeBtnState ("#living-room-btn", "#living-room-light")});
socket.on ("bakgård-ljus-förändring", function(value) {
IF(Value) {
IF($("#Backyard-Light").val() == "Off") {
$("#backyard-light").val("On");
}
}
annat if($("#backyard-light").val() == "På") {
$("#backyard-light").val("Off");
}
});
Jag behöver ändra detta om du vill hantera fotomotstånd endast en gång per stat / / /
socket.on ("fotomotstånd-förändring", function() {changeBtnState ("#living-room-btn", "#living-room-light")});
socket.on ("andra-rum-förändring", function() {changeBtnState ("#other-rum-btn", "#other-rum-light")})
En funktion att styra dem alla, Tja, UI knapparna...
BTN: knapp-id för att ändra---ingång: input id ändra
funktion changeBtnState (btn, indata) {
var btnClass = $(btn).attr('class');
var texten, staten, newBtnClass, oldBtnClass;
om (btnClass === "btn btn-framgång") {
oldBtnClass = "btn-framgång";
newBtnClass = "btn-risk",
text = "off";
State = "On";
} else om (btnClass === "btn btn-fara") {
oldBtnClass = "btn-risk",
newBtnClass = "btn-framgång";
text = "på";
State = "Off";
}
$(btn).removeClass(oldBtnClass);
$(btn).addClass(newBtnClass);

$(btn) .text ("Vända" + text);
Console.log (btn + "är" + staten);
$(input).val(state);
}
});

Här vi hanterar händelserna UI (klickas och ett reglage) och med dem sända ut meddelanden via sockets som kommer att tas emot på servern och kommer att göra Arduino arbeta baserat på dem.

I den andra fil, som vi kommer namn "temperature_canvas_sketch" vi kommer att visa de data som vi fick från temperaturgivare med hjälp av p5.js, en stor JS bibliotek baserat på bearbetning lang. Så i vår temperature_canvas_sketch.js fil låt oss lägga till detta:

var chartpoints = []; chartpoints.push ({x: 0, y: 0});
var socket = io.connect ("http://localhost:3000");
Skapa en duk där diagrammet visas och matchande anslutningen med uttaget
funktion setup() {
cnv = createCanvas (displayWidth/2, displayHeight/5);
cnv.Parent("termo-container");
Blir en förändring när temperaturgivaren ändrar och anger det till dess element
socket.on ("temperatur", function(temperature) {
$("#termometer").val (temperatur + "° C");
createPoint(temperature);
});
}
Hantera diagram poäng att Visa
funktionen draw() {
Background(255);
noFill();
stroke(0);
Här drar vi det sista temperatur värdet från chartpoints array där det är tänkt att vara
Börjar dra i punkt
beginShape();
för (var jag = 0; jag < chartpoints.length; i ++) {
var P = chartpoints [i];
vertex (P.x, höjd - P.y);
text (P.y, P.x, höjd - P.y);
om (P.x < 0)chartpoints.pop(i);
P.x--;
}
endShape();
Ändarna Rita punkt
}
Den här funktionen anropas när tmp36 skickar ett nytt värde till klienten
funktion createPoint(temp) {
var t = random (0, höjd-20);
Skapar en ny punkt med x -> live bredden på duken & y -> temperatur värdet från arduino
var P = nya poäng (bredd, temp);
chartpoints.push(P);
}
Anpassad klass av punkter som kommer att vara ritat
var poäng = function()
{
var x;
var y;
var konstruktören = funktion Points(x, y)
{
This.x = x;
This.y = y;
};
returnera konstruktorn;
}();

Detta kommer att ta hand om Rita ett diagram med data vi skickar, i detta fall är att Visa live temperaturen i vårt hem.

Men nu har vi sockets på klienten och inte i servern, måste vi gå tillbaka dit och lägga till dem att fungera ordentligt, så gå på.

Se Steg
Relaterade Ämnen

Mitthem - hemautomation med Arduino och XBee

*** uppdaterad ***Ver 2.0-lagt till Nexa power outlet kontroll-lade till en tråd temperaturgivare-lagt till kontroll av saker via Google kalender-händelser***********************Hej allaDetta är berättelsen om mitt projekt "myHome". Jag ville by...

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

Multiplexering med Arduino och 74HC595

74HC595 är en lätt och billig (på cirka 60 cent styck) sätt att öka antalet digitala ut stiften på din Arduino. I denna tutorial ska jag visa dig hur man kör upp till 16 lysdioder med en 74HC595 med hjälp av en teknik som kallas multiplexing. I slutä...

Mugg musik: Förvandla vatten till ett Instrument med Arduino och ChucK

Vad händer om du slå alla ledande yta till ett instrument? Gillar, säga... en mugg vatten? Bäst av allt, är det billigt; du behöver bara $1 värt extra elektriska komponenter (inte inklusive Arduino).För detta projekt, min vän skörd och jag kombinerad...

Säkerhetssystem och tillgång kontroll med Arduino och RFID-

säkerhetssystem och tillgång kontroll med Arduino och RFIDDetta projekt är en evolotuin av mitt första projekt kallat "Arduino - Security System och Access Control"Som ni kan se på bloggen http://arduinobymyself.blogspot.com.br/2012/03/arduino-s...

Hur använder gamla Stepper Motors med Arduino och A4988 Driver

Jag har varit med stegmotorer ett tag nu, och de är fantastiska för alla typer av robotic projekt.Idag kommer jag att dela de saker jag har lärt mig hittills om återanvända gamla stegmotorer bärgades från skrivare. Identifiera stegmotorerStegmotorer...

Power övervakning med Arduino och logga in i Google blad

Sedan senaste veckorna tänkte jag på att göra ett projekt som kan hjälpa mig att hålla ett spår på min dagliga energi användningsområden. I detta projekt använder jag en 30A övervakning styrelse. denna styrelse har 6 strömsensor som kan läsa upp till...

Roligt spel med arduino och bearbetning

Denna tutorial ska show dig hur man gör en första person FPS-shooter i bearbetning med hjälp av en arduino. Detta projekt lämnades till oss som en avslutande tentamen i en teknisk specialkurs, (gymnasieskolan).Video av projektet! :) (Svårt att spela...

Kontroll av en DC motor med Arduino och Visual Basic

Hej vänner detta är mitt första inlägg i instructables.com där jag kommer att försöka ge mer nyhet des ofta.Idag är temat med Arduino och Visual Basic.Det projekt som vi ser idag är controller en dc-motor med Arduino och Visual Basic.För att styra en...

Rörelseaktiverade ljus med Arduino och HC-SR04 sensor

Jag gjorde detta projekt för länge sedan att tända upp i köket när jag öppnar bakdörren.Tanken var när jag öppnar bakdörren, detta ljus som tänds under 15 sekunder och som ger mig tillräckligt med tid att nå strömbrytaren på den motsatta väggen. Före...

Kapacitans mätare med arduino och 555 timer

KAPACITANS MÄTARE MED ARDUINO OCH 555 TIMER CHIPDetta projekt syftar till att bygga en enkel kapacitans mätare, en enhet för att mäta kapacitans i nanoFarads och microFarad, med en räckvidd på ca 1 nanoFarad till hundratals microFarads.Detta projekt,...

Kontrollera en LED med arduino och Wifly sköld

För att visa hur du kan styra enheter via wifi med hjälp av arduino wifly shield, kommer jag slå på och av en LED genom att skicka en http-begäran från webbläsaren till wifly sköld.Krav:1. Arduino uno2. Wifly sköld3. ledde4. 220 ohm motstånd5. ett pa...

Hur man styr motorer med Arduino och RC mottagare i 10 minuter

Detta är min andra handledning på att kontrollera saker med Arduino och R/C-mottagare. Om du inte har tittat på min första tutorial jag föreslår att du tittar på det första, här: i den här guiden kommer vi att titta på hur man styr motorer också anvä...

Styra DC Motors(PC Fans) med Arduino och Relay board

I detta instructable kommer vi att se utan att gå in i detalj, hur man använder 12V DC motorer (PC Fans) med Arduino och relay board eBlockSteg 1: Konfigurera maskinvara och programvara För att göra det behöver vi viss maskinvara kan du hitta på Inte...

Kontrollerar ledde med Arduino och C#

Hej vänner detta är min första Arduino Tutorial på att kontrollera ett LED med Arduino och C#-program.Du behöverArduinoen1K ResistorLEDProgramvaraArduino programvara - www.arduino.ccMicrosoft visual C# / Visual StudioLED är ansluten till Pin 13.Titta...

Kontrollera en RGB ledde med Arduino och bearbetning

detta instructable (min första inte mindre) visar hur man styr en RGB ledde med bearbetning och arduino.Den viktiga funktionen att vara färg markeras genom att klicka på en bild, RGB-värdet för den pixel du klickar på bearbetas och skickas till den a...

Spela upp ljud på dator med arduino och progduino

Idag kommer jag visa dig hur lätt det är att bygga en enkel spelare och kör det på datorn med arduino och progduino.Läs mer om progduino: http://www.progduino.comSteg 1: Arduino kod - spelaren på din dator.Kopiera koden till din arduino redaktör.void...

Hemautomation med arduino, knappar, LCD, EEPROM och smarttelefon

Nu kan vi styra skrovet med smart telefon hemSteg 1: Hårdvara krävs för hemautomation kan du lägga till olika saker jag väljer omkoppling eller reläI detta projekt du styr kopplat av mobila .if mobil finns inte du kan också använda knappsatsenJag ock...

IoT vägguttag med Arduino och ESP8266

I detta instructable, jag visa dig hur du lägger till förbättrad tillgänglighet, intelligens och anslutning till ett vanligt vägguttag. Detta görs med en kombination av mikrokontroller, Arduino, olika sensorer, ESP8266 och en blandning av programvaru...