Kazalo:

Pokliči na splet!: 4 koraki
Pokliči na splet!: 4 koraki

Video: Pokliči na splet!: 4 koraki

Video: Pokliči na splet!: 4 koraki
Video: Тест каравана в -25° . Ночёвка зимой. Как не замёрзнуть? 2024, November
Anonim
Image
Image
S pritiskom na Arduino
S pritiskom na Arduino

Ring the Web je namenjen vplivanju na spletna mesta iz lokalnih/resničnih krajev.

Več informacij o tem:

makker.hu/RingTheWeb/

Potrebovali boste:

  • 1 gumb
  • 10k upor
  • Arduino (katere koli vrste)
  • kabli
  • majhen računalnik z nizko porabo energije - v tem primeru RPi
  • dostop do strežnika ali računalnika z javnim IP z node.js
  • Spletna stran

Koraki:

  1. Pritisnite gumb za arduino
  2. Arduino do maline
  3. Malina na strežnik
  4. Spletno mesto na strežnik

Korak: Pritisnite gumb na Arduino

Najprej potrebujete Arduino in gumb!

Vse vrste so možne, na vas je, da izberete.

Če jih želite povezati, sledite uradni vadnici gumbov Arduina.

Tu je koda Arduino:

// Arduino koda za branje digitalnega zatiča in pošiljanje vrednosti na serijska vrata

// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // odpremo zaporedna vrata pinMode (8, INPUT); // priključitev gumba na Pin 8} int števec = 0; // nekaj uporabljenega kasneje void loop () {if (digitalRead (8) == 1) {// preveri stanje pin 8 Serial.write ("8"); } zamuda (100); števec ++; if (števec = 20) {// vsakih 20x100 = 2000ms -> števec = 0; Serial.write ("0"); // pošlje strežniku sporočilo "obstoječ sem"}} // to je vse!

Korak: Arduino do maline

Arduino do maline
Arduino do maline

Zdaj lahko Arduino povežemo z računalnikom. V tem primeru uporabljamo malino zaradi majhne porabe energije.

Priključite ga prek USB-ja ali neposredno s tukaj opisanimi zatiči RX-TX.

Nato namestite node.js in npm, kot je opisano tukaj. Ključne besede so:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

in potem

sudo apt -get install -y nodejs

Npm (upravitelj paketov Node.js) potrebuje odjemalce socket.io in module za serijski port, zato jih namestite:

npm namestite odjemalca socket.io

npm namestite serijski port

Odprite in shranite datoteko something.js z naslednjo kodo:

// inicializiramo socket.io povezavo:

varna vtičnica; var io = require ('socket.io-client'); socket = io ("https://yourserver.com:port"); // če je povezava s strežnikom uspešna: socket.on ('connect', function () {socket.send ("sem tukaj!"); console.log ("povezan s strežnikom");}); // inicializiramo komunikacijo prek serijskih vrat, NB /dev = ttyACM0 je mogoče spremeniti: var SerialPort = require ('serialport'); var serialPort = nov SerialPort ('/dev/ttyACM0', {baudRate: 9600}); // Če nekaj prihaja iz Arduina, pošlje strežniku različna sporočila // po njem serialPort.on ('data', function (data) {console.log ('Data:', data.toString ('ascii')); if (data.indexOf ('8')! ==-1) {socket.send ('/RingTheBell 1');} if (data.indexOf ('0')! ==-1) {socket. send ('/client1 1');}}); // Branje razpoložljivih podatkov - mislim, da ni potrebno serialPort.on ('berljivo', function () {console.log ('Podatki:', port.read ());});

Zdaj bi morali nastaviti tudi kodo node.js na strani strežnika, do takrat pa lahko zaženete in preizkusite skript

vozlišče./something.js

Če je kaj narobe, mi sporočite!

3. korak: Koda na strani strežnika

Koda na strani strežnika
Koda na strani strežnika

Na strani strežnika potrebujemo node.js s strežnikom socket.io.

Zato ga dodajte z:

npm namestite socket-io

Potem boste potrebovali podoben skript za kodo v 2. koraku, z razliko, da čaka na povezave, in če so prisotne, bo v tem odjemalcu predvajal vsa sporočila, poslana od odjemalca, vsem odjemalcem. uporabnikom spletnega mesta …

Odprite torej servercript.js z naslednjim:

var http = require ('http'), io = require ('socket.io'); // odpre minimalni strežnik http. socket.io potrebuje. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text/html'}); res.end ('hello');}); // vklopite vtičnico tcp - nastavite vrata! server.listen (7004, function () {console.log ("Strežnik TCP deluje na vratih 7004");}); // analiziramo sporočila tcp var socket = io.listen (strežnik); socket.on ('povezava', funkcija (odjemalec, rinfo) {client.broadcast.emit ('sistem', 'nekdo je povezan …'); client.on ('sporočilo', funkcija (dogodek) {console.log (dogodek); // oddaja vsako sporočilo vsem povezanim uporabnikom! socket.emit ('sporočilo', dogodek);}); client.on ('vsi', funkcija (dogodek) {}); client.on ('odklopi', function () {socket.emit ('sporočilo', 'nekdo je odklopljen …');});});

Poskusite ga preizkusiti

vozlišče./serverscript.js

Če se odjemalec tudi izvaja, bi morali videti njihovo komunikacijo na obeh konzolah. Vsaj te:

Podatki: 0

-sistemu občasno sporoča, da komunikacija s strežnikom Arduino-> Raspberry-> deluje.

in

Podatki: 8

- pove, da je gumb vklopljen.

4. korak: Konfigurirajte spletno mesto

Konfigurirajte spletno mesto
Konfigurirajte spletno mesto

Zdaj smo pripravljeni s 75%!

Trdo delo zaključite z vključitvijo kode za spletno mesto.

To je enostavno.

najprej vključite odjemalca socket.io:

nato ustvarite sistem za analizo sporočil:

varna vtičnica;

socket = io ("yourserver.com:port"); socket.on ('connect', function () {socket.send ('anonimni odjemalec - uporabnik spletnega mesta - je povezan!'); socket.on ('message', function (msg) {// če želite videti vsako sporočilo, samo razkomentirajte: // console.log (msg); if (msg == "/RingTheBell 1") // tukaj pride koda za izražanje dogodka s tipko: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "#000";}, 1000);}; if (msg == "/client1 1") {// tukaj lahko postavite nekaj ki reagira na stanje povezanega odjemalca};});

Voilá!

pripravljeno.

Priporočena: