Tabla de contenido:

¡Ring the Web !: 4 pasos
¡Ring the Web !: 4 pasos

Video: ¡Ring the Web !: 4 pasos

Video: ¡Ring the Web !: 4 pasos
Video: UW Control with Preordain & Day's Undoing | Modern | MTGO 2024, Diciembre
Anonim
Image
Image
Botón para Arduino
Botón para Arduino

Ring the Web es para afectar sitios web desde lugares locales / reales.

Más información al respecto:

makker.hu/RingTheWeb/

Necesitarás:

  • 1 pulsador
  • Resistencia de 10k
  • Arduino (cualquier tipo)
  • cables
  • computadora pequeña de bajo consumo, en este caso un RPi
  • acceso a un servidor o computadora con IP pública con node.js
  • sitio web

Pasos:

  1. Pulsador para arduino
  2. Arduino a frambuesa
  3. Frambuesa al servidor
  4. Sitio web al servidor

Paso 1: Botón para Arduino

¡Primero necesitas un Arduino y un botón!

Cualquier tipo de ellos es posible, tú eliges.

Para conectarlos, siga el tutorial oficial de botones de Arduino.

Aquí está el código Arduino:

// Código Arduino para leer un pin digital y enviar valor al puerto serie

// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // abre el puerto serie pinMode (8, INPUT); // conecta el pulsador al pin 8} int contador = 0; // algo usado más tarde void loop () {if (digitalRead (8) == 1) {// verifica el estado del pin 8 Serial.write ("8"); } retraso (100); contador ++; if (contador = 20) {// cada 20x100 = 2000ms -> contador = 0; Serial.write ("0"); // envía un mensaje "existo" al servidor}} // ¡eso es todo!

Paso 2: Arduino a frambuesa

Arduino a frambuesa
Arduino a frambuesa

Ahora podemos conectar Arduino a una computadora. En este caso usamos una frambuesa, por su bajo consumo de energía.

Conéctelo a través de USB o directamente con los pines RX-TX, descritos aquí.

Luego instale node.js y npm como se describe aquí. Las palabras clave son:

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

y luego

sudo apt-get install -y nodejs

Npm (el administrador de paquetes de Node.js) necesita módulos socket.io-client y serialport, así que instálelos:

npm instalar socket.io-client

npm instalar puerto serie

Abra y guarde un archivo something.js con el siguiente código:

// inicializa la conexión socket.io:

var socket; var io = require ('socket.io-client'); socket = io ("https://yourserver.com:port"); // si la conexión al servidor es exitosa: socket.on ('connect', function () {socket.send ("¡estoy aquí!"); console.log ("conectado al servidor");}); // inicializar la comunicación del puerto serie, NB / dev = ttyACM0 se puede cambiar: var SerialPort = require ('serialport'); var serialPort = new SerialPort ('/ dev / ttyACM0', {baudRate: 9600}); // Si algo viene del Arduino, envía diferentes mensajes // al servidor según sea 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. enviar ('/ client1 1');}}); // Leer datos que están disponibles - creo que no es necesario serialPort.on ('legible', function () {console.log ('Data:', port.read ());});

Ahora también debe configurar el código node.js del lado del servidor, hasta que pueda iniciar y probar el script por

node./something.js

Si algo anda mal, ¡házmelo saber!

Paso 3: Código del lado del servidor

Código del lado del servidor
Código del lado del servidor

En el lado del servidor, necesitamos node.js con el servidor socket.io.

Así que agrégalo con:

npm instalar socket-io

Luego, necesitará un script similar al código en el segundo paso, con la diferencia de que espera las conexiones y, si están presentes, transmitirá cualquier mensaje enviado desde el cliente a todos los clientes, en este caso, a los usuarios del sitio web …

Entonces, abra un serverscript.js con lo siguiente:

var http = require ('http'), io = require ('socket.io'); // abre un servidor http mínimo. socket.io lo necesita. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('hola');}); // enciende el socket tcp - ¡configura tu puerto! server.listen (7004, function () {console.log ("servidor TCP ejecutándose en el puerto 7004");}); // analizar los mensajes tcp var socket = io.listen (servidor); socket.on ('connection', function (client, rinfo) {client.broadcast.emit ('system', 'somebody connected …'); client.on ('message', function (event) {console.log (event); // difunde cualquier mensaje a todos los usuarios conectados! socket.emit ('mensaje', evento);}); cliente.on ('todos', función (evento) {}); cliente.on ('desconectar', function () {socket.emit ('mensaje', 'alguien desconectado …');});});

Pruébelo para probarlo con

node./serverscript.js

Si el cliente también se está ejecutando, debería ver su comunicación en ambas consolas. Al menos estos:

Datos: 0

- le dice periódicamente al sistema que la comunicación Arduino-> Raspberry-> servidor está funcionando.

y

Datos: 8

- dice que el botón está encendido.

Paso 4: configurar el sitio web

Configurar sitio web
Configurar sitio web

¡Ahora estamos listos con el 75%!

Termine el arduo trabajo con incluir el código del sitio web.

Es fácil.

primero, incluya el cliente socket.io:

luego cree el sistema analizador de mensajes:

var socket;

socket = io ("yourserver.com:port"); socket.on ('conectar', function () {socket.send ('cliente anónimo - un usuario del sitio web - está conectado!'); socket.on ('mensaje', función (msg) {// si quieres ver cada mensaje, simplemente descomentarlo: // console.log (msg); if (msg == "/ RingTheBell 1") // aquí viene el código a usar para expresar el evento pushbutton: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "# 000";}, 1000);}; if (msg == "/ client1 1") {// aquí puedes colocar algo que reacciona al estado del cliente conectado};});

¡Voilá!

Listo.

Recomendado: