Isi kandungan:

Ring the Web !: 4 Langkah
Ring the Web !: 4 Langkah

Video: Ring the Web !: 4 Langkah

Video: Ring the Web !: 4 Langkah
Video: How To Install Ring Doorbell 4 2024, Julai
Anonim
Image
Image
Tombol tekan ke Arduino
Tombol tekan ke Arduino

Ring the Web adalah untuk mempengaruhi laman web dari tempat tempatan / sebenar.

Maklumat lanjut mengenainya:

makker.hu/RingTheWeb/

Anda memerlukan:

  • 1 butang tekan
  • Perintang 10k
  • Arduino (jenis apa pun)
  • kabel
  • komputer kecil dan berkuasa rendah - dalam kes ini RPi
  • akses ke pelayan atau komputer dengan IP awam dengan node.js
  • laman web

Langkah-langkah:

  1. Tombol tekan ke arduino
  2. Arduino ke Raspberry
  3. Raspberry ke pelayan
  4. Laman web ke pelayan

Langkah 1: Tekan butang ke Arduino

Pertama Anda memerlukan Arduino dan butang tekan!

Mana-mana jenisnya adalah mungkin, terserah kepada anda untuk memilih.

Untuk menghubungkannya, ikuti tutorial butang rasmi Arduino.

Inilah kod Arduino:

// Kod Arduino untuk membaca pin digital dan menghantar nilai ke port bersiri

// Balázs Kovács, 2018. persediaan tidak sah () {Serial.begin (9600); // buka pinMode port bersiri (8, INPUT); // sambungkan butang tekan ke Pin 8} int counter = 0; // sesuatu yang digunakan kemudian gelung void () {if (digitalRead (8) == 1) {// semak pin 8 status Serial.write ("8"); } kelewatan (100); kaunter ++; jika (kaunter = 20) {// setiap 20x100 = 2000ms -> kaunter = 0; Serial.write ("0"); // menghantar mesej "saya ada" ke pelayan}} // itu sahaja!

Langkah 2: Arduino ke Raspberry

Arduino ke Raspberry
Arduino ke Raspberry

Sekarang kita boleh menghubungkan Arduino ke komputer. Dalam kes ini, kami menggunakan Raspberry, kerana penggunaan tenaga yang rendah.

Sambungkannya melalui USB atau secara langsung dengan pin RX-TX, yang dinyatakan di sini.

Kemudian pasang node.js dan npm seperti yang dijelaskan di sini. Kata kunci adalah:

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

dan kemudian

sudo apt-get install -y nodejs

Npm (pengurus pakej Node.js) memerlukan modul socket.io-client dan serialport, jadi pasangkannya:

npm pasang socket.io-client

npm pasang serialport

Buka dan simpan fail sesuatu.js dengan kod berikut:

// mulakan sambungan socket.io:

soket var; var io = memerlukan ('socket.io-client'); soket = io ("https://yourserver.com:port"); // jika sambungan ke pelayan berjaya: socket.on ('connect', function () {socket.send ("saya di sini!"); console.log ("disambungkan ke pelayan");}); // memulakan komunikasi port bersiri, NB / dev = ttyACM0 dapat diubah: var SerialPort = memerlukan ('serialport'); var serialPort = SerialPort baru ('/ dev / ttyACM0', {baudRate: 9600}); // Sekiranya ada sesuatu yang berasal dari Arduino, menghantar mesej yang berbeza // ke pelayan mengikutnya 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) {soket. hantar ('/ klien1 1');}}); // Baca data yang ada - saya rasa tidak perlu serialPort.on ('readable', function () {console.log ('Data:', port.read ());});

Sekarang Anda harus menyediakan kod node.js sisi pelayan juga, sehingga anda boleh memulakan dan menguji skrip dengan

simpul./something.js

Sekiranya ada yang tidak kena, beritahu saya!

Langkah 3: Kod sisi pelayan

Kod sisi pelayan
Kod sisi pelayan

Di sisi pelayan, kita memerlukan node.js dengan pelayan socket.io.

Oleh itu, tambahkan dengan:

npm pasang soket-io

Maka Anda akan memerlukan skrip yang serupa dengan kod pada langkah ke-2, dengan perbezaannya, ia menunggu sambungan, dan jika ada, ia akan menyiarkan apa-apa mesej yang dihantar dari klien kepada semua pelanggan, dalam ini kes, kepada pengguna laman web …

Oleh itu, buka servercript.js dengan yang berikut:

var http = memerlukan ('http'), io = memerlukan ('socket.io'); // buka pelayan http minimum. socket.io memerlukannya. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('hello');}); // hidupkan soket tcp - pasang port anda! server.listen (7004, function () {console.log ("Pelayan TCP berjalan di port 7004");}); // analisis mesej tcp var socket = io.listen (pelayan); socket.on ('connection', function (client, rinfo) {client.broadcast.emit ('system', 'seseorang terhubung …'); client.on ('message', function (event) {console.log (event); // siarkan sebarang mesej kepada setiap pengguna yang terhubung! socket.emit ('message', event);}); client.on ('Everyone', function (event) {}); client.on ('disconnect', fungsi () {socket.emit ('message', 'seseorang terputus…');});});

Cubalah untuk mengujinya

simpul./serverscript.js

Sekiranya pelanggan berjalan juga, Anda harus melihat komunikasi mereka di kedua-dua konsol. Sekurang-kurangnya ini:

Data: 0

- secara berkala memberitahu sistem bahawa komunikasi pelayan Arduino-> Raspberry-> berfungsi.

dan

Data: 8

- memberitahu bahawa butang dihidupkan.

Langkah 4: Konfigurasikan Laman Web

Konfigurasikan Laman Web
Konfigurasikan Laman Web

Sekarang kita sudah bersedia dengan 75%!

Selesaikan kerja keras dengan memasukkan kod untuk laman web.

Ia mudah.

pertama, sertakan pelanggan socket.io:

kemudian buat sistem penganalisis mesej:

soket var;

soket = io ("yourserver.com:port"); socket.on ('connect', function () {socket.send ('anonym client - pengguna laman web - disambungkan!'); socket.on ('message', function (msg) {// jika anda ingin melihat setiap mesej, hanya unmentasikannya: // console.log (msg); if (msg == "/ RingTheBell 1") // di sini terdapat kod yang akan digunakan untuk menyatakan peristiwa butang tekan: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "# 000";}, 1000);}; jika (msg == "/ client1 1") {// di sini anda boleh meletakkan sesuatu yang bertindak balas terhadap status pelanggan yang disambungkan};});

Voilá!

siap.

Disyorkan: