Tabla de contenido:
- Paso 1: Suministros y conexiones
- Paso 2: Configuración de PI
- Paso 3: descarga y compilación del código
- Paso 4: usándolo
- Paso 5: cómo funciona el código
- Paso 6: personalización y nombres descriptivos
Video: Controlador de relé Alexa Raspberry Pi: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Creé este Instructable para compartir mis experiencias con la integración de dispositivos IOT con Alexa de Amazon.
Este proyecto permite controlar una placa de relés conectada a una raspberry pi desde un controlador smarthome.
Se ha probado con Alexa, pero también parece funcionar bien con Samsung Smartthings y otras interfaces de control, ya que emula una serie de enchufes Belkin Wemo.
Hay MUCHOS ejemplos basados en el excelente código FAUXMO, pero esto significó aprender Python y no me dio el control detallado que necesitaba para mis dispositivos, por lo que decidí volver a crear uno desde cero usando C como mi lenguaje de codificación base.
Tampoco quería tener que ir a las profundidades del código lambda en Amazon.com, así que lo he mantenido realmente simple.
Publiqué la fuente y las notas en Github:
github.com/Switchdoctorstu/StuPiMo
El tutorial es realmente para cubrir cómo hacerlo funcionar y publicar mis notas en caso de que ayude a otros.
Paso 1: Suministros y conexiones
Las cosas que necesita están disponibles en Amazon / EBay:
- Frambuesa PI *
- Fuente de alimentación Pi
- Conectores Dupont
- Tablero de relés
- Cable micro USB antiguo (para cortar a la mitad para alimentar la tarjeta de relé)
Cualquier Raspberry Pi funcionará, lo he probado en un Model B y Zero.
* Si usa Pi Zero, necesitará un adaptador de red OTG (a menos que compre la versión 'W' con buit en WiFi)
Deberá conectar el Pi a la red.
Utilice los conectores dupont para conectar la tarjeta de relé al Pi.
Tenga en cuenta que la tarjeta de relé debe utilizar alimentación externa (retire el enlace y conéctelo a 5v externos). Funcionará con la tecnología de PI, pero no se recomienda para la producción en ejecución.
Para mi configuración utilicé un HUB USB con alimentación externa. Esto proporciona energía al PI.
También corté el extremo de un cable USB viejo y encendí los relés desde una segunda conexión USB al concentrador para mantenerme a salvo. Mi versión de 'producción' usa una pequeña fuente de alimentación conmutada de 5V 5A. Nuevamente, simplemente corté un cable USB por la mitad para alimentar el Pi a través de Micro-USB y corté dos de los conectores dupont para alimentar la placa de relés. Hay 4 cables en el cable USB, la mayoría usa rojo / negro para indicar el suministro de 5v, pero en caso de duda use un medidor para asegurarse de obtener los cables correctos.
Los pines de relé en la placa están conectados a los pines GPIO relevantes en el encabezado PI.
El código le permite elegir los pines GPIO, pero el predeterminado que usé fue:
- Pin de relé 1 - Tierra
- Pin de relé 2 - Relé 1 - GPIO 0
- Pin de relé 3 - Relé 2 - GPIO 1
- Pin del relé 4 - Relé 3 - GPIO 2
- Pin de relé 5 - Relé 4 - GPIO 3
- Pin del relé 6 - Relé 5 - GPIO 4
- Pin de relé 7 - Relé 6 - GPIO 5
- Pin de relé 8 - Relé 7 - GPIO 6
- Pin del relé 9 - Relé 8 - GPIO 7
- Pin de relé 10 - + 5v para lógica
Paso 2: Configuración de PI
No voy a volver a crear un tutorial sobre cómo poner su PI en funcionamiento y conectado a la red.
Hay muchas guías que incluyen un excelente instructable en:
www.instructables.com/id/Ultimate-Raspberr…
Deberá llegar al punto en el que el PI esté visible en la red y pueda conectarse a él.
No importa si esto es vía Ethernet o inalámbrica.
Este proyecto se puede completar solo con Raspberry PI usando el Geany Programmers Editor, pero personalmente me resulta más fácil preparar mi código en una PC usando Visual Studio o Eclipse (o incluso Notepad ++) y luego subirlo al PI para depurarlo usando un Conexión VNC. Nuevamente, no voy a cubrir eso aquí, ya que hay muchos instructivos excelentes sobre cómo configurar VNC en un RPi.
Todo lo que necesita es llegar al punto en el que pueda cargar y compilar el código.
Una nota que es importante es que dado que el controlador UPNP requiere multidifusión UDP, las interfaces utilizadas deben configurarse en modo 'Promiscuo'.
Esto se puede hacer en la línea de comando:
pi @ raspberrypi: ~ $ ifconfig eth0 promisc
y / o
pi @ raspberrypi: ~ $ ifconfig wlan0 promisc
Esto debe hacerse permanente, así que edité el archivo /etc/rc.local
sudo nano / etc / rc.local
para incluir la línea:
sudo ifconfig eth0 promisc
después del primer conjunto de líneas de banner # para asegurarse de que las interfaces se establecieron al inicio.
Paso 3: descarga y compilación del código
El código en sí se encuentra en mi repsoitory de Github;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
mientras que hay formas 'correctas' de clonar el repositorio. Me resultó más fácil abrir el editor Geany en el escritorio de Pi y pegar el código.
Del mismo modo, si está utilizando la línea de comandos;
Crea un directorio nuevo
mkdir Stu
Cambiar a eso
cd Stu
Crea un nuevo archivo de texto
nano StuPiMo.c
Copie el código del Github sin procesar y péguelo en el nuevo archivo
Guardar y Salir.
Una vez que tenga el archivo como un objeto de código fuente C, puede compilarlo usando
gcc -o StuPiMo StuPiMo.c -l cableadoPi
tenga en cuenta que el "-l cableadoPi" es necesario para garantizar que el compilador enlaza en la biblioteca de cableado requerida.
Luego, el código se puede ejecutar usando
./StuPiMo
Nuevamente, si desea que esto se ejecute al inicio, use el comando:
sudo nano /etc/rc.local
para agregar la siguiente línea
sudo / home / pi / Stu / StuPiMo y
a su archivo /etc/rc.local. No olvide guardar su archivo al salir.
Tenga en cuenta que el '&' es esencial para garantizar que se genere un subproceso para garantizar que el script no se bloquee en este punto.
Paso 4: usándolo
Una vez que tenga el código en ejecución, pídale a alexa que 'descubra dispositivos' y ella debería encontrar los 8 dispositivos virtuales de Wemo.
Entonces es solo un caso de decir: "Alexa enciende el enchufe 1" o "Alexa apaga el enchufe 6", etc. y se cambiará el relé correspondiente.
Paso 5: cómo funciona el código
El código funciona emulando una serie de dispositivos de enchufe Belkin Wemo.
Para lograr esto, tiene que manejar 2 funciones principales.
- un controlador de difusión de descubrimiento UPNP
- un 'controlador de dispositivo' (uno por dispositivo virtual) para administrar los comandos enviados al dispositivo y las respuestas requeridas.
Una característica 'adicional' es que también publica una página web para permitir el control de los dispositivos.
Controlador UPNP
El controlador UPNP abre un socket para monitorear los paquetes del protocolo SSDP en el puerto 1900 239.255.255.250.
Responde a cualquier consulta de 'M-SEARCH' que llega con un paquete de respuesta de descubrimiento que anuncia los emuladores de wemo individuales a cualquiera que los pregunte.
Manejador de dispositivos
Los controladores de dispositivos (uno por dispositivo virtual) monitorean una serie de puertos IP y responden a las solicitudes.
Servirá una respuesta setup.xml cuando se le solicite
Servirá un archivo de descripción del evento cuando se le solicite
Responderá a una solicitud GETBINARYSTATE
Procesará y responderá a una solicitud SETBINARYSTATE
Servidor web
El servidor web es una rutina simple que crea un formulario HTML que contiene un botón por relé.
Responderá a los botones que se presionan y cambiará el estado del relé en consecuencia.
Paso 6: personalización y nombres descriptivos
No me he vuelto loco con el código para mantenerlo simple y editable.
Los conceptos básicos se pueden personalizar mediante definiciones al comienzo del código:
// definiciones globales # definir WEBPORT 5353 // puerto para ejecutar el servidor web
#define NUMDEVICES 8 // Número de dispositivos virtuales para crear
#define PORTBASE 43450 // puerto IP base para incrementar desde
WEBPORT es el número de puerto en el que se ejecuta el servidor web integrado. Esto podría hacerse para sentarse en 80 para facilitar las cosas, pero encontré que entraba en conflicto con tomcat u otros servicios que se ejecutan localmente.
NUMDEVICES define el número de emuladores WEMO individuales que se ejecutarán. Si tiene una tarjeta de relé de 2 puertos, configure esto en 2, 4 puertos = 4, etc.
Los nombres descriptivos de los dispositivos se establecen en una rutina llamada setup_names:
int setup_names (caracteres amigables [NUMDEVICES] [NAMELEN]) {int i = 0;
// usa este bucle
para (i = 0; i <NUMDISPOSITIVOS; i ++) {
sprintf (amigable , "Socket% d", i + 1);
}
// o la siguiente tabla manual para completar los nombres de los dispositivos
/*
strcpy (amigable [0], "TV del dormitorio");
strcpy (amigable [1], "Manta eléctrica");
strcpy (amigable [2], "Lámpara de dormitorio");
strcpy (amigable [3], "Socket 4");
strcpy (amigable [4], "Socket 5");
strcpy (amigable [5], "Socket 6");
strcpy (amigable [6], "Socket 7");
strcpy (amigable [7], "Socket 8");
*/
volver i;
}
Usé un bucle para llamar a cada uno de los dispositivos 'Socket n', pero puede eliminar este bucle y agregar sus propios nombres descriptivos en su lugar (solo asegúrese de agregar el mismo número que NUMDEVICES) si elimina el / * * /
Recuerde volver a compilar el código si realiza algún cambio.
Recomendado:
Sistema de casa inteligente Alexa con módulo de relé NodeMCU: 10 pasos
Sistema Alexa Smart Home usando el módulo de relé NodeMCU: En este proyecto de IoT, hice el sistema Alexa Smart Home Automation usando NodeMCU ESP8266 & Módulo de relés. Puede controlar fácilmente la luz, el ventilador y otros electrodomésticos con el comando de voz. Para conectar el altavoz inteligente Echo Dot con
Interruptor de relé IOT controlado por voz basado en Arduino (compatible con Google Home y Alexa): 11 pasos
Interruptor de relé IOT controlado por voz basado en Arduino (compatible con Google Home y Alexa): este proyecto describe cómo hacer un interruptor de relé IOT controlado por voz basado en Arduino. Este es un relé que puede encender y apagar de forma remota usando una aplicación para iOS y Android, así como vincularlo a IFTTT y controlarlo con su voz usando Goog
Cómo controlar un dispositivo usando Raspberry Pi y un relé - LO BÁSICO: 6 pasos
Cómo controlar un dispositivo usando Raspberry Pi y un relé - LO BÁSICO: Este es un tutorial básico y sencillo sobre cómo controlar un dispositivo usando Raspberry Pi y un relé, útil para hacer proyectos de IoT Este tutorial es para principiantes, es amigable para sígalo incluso si no tiene ningún conocimiento sobre el uso de Raspberry
Controlador de juegos de bricolaje basado en Arduino - Controlador de juegos Arduino PS2 - Jugar a Tekken con el gamepad DIY Arduino: 7 pasos
Controlador de juegos de bricolaje basado en Arduino | Controlador de juegos Arduino PS2 | Jugar a Tekken con DIY Arduino Gamepad: Hola chicos, jugar juegos siempre es divertido, pero jugar con su propio controlador de juego personalizado DIY es más divertido. Así que haremos un controlador de juego usando arduino pro micro en este instructivo
YABC - Otro controlador Blynk más - Controlador de temperatura y humedad en la nube de IoT, ESP8266: 4 pasos
YABC - Otro controlador Blynk más - Controlador de temperatura y humedad de la nube de IoT, ESP8266: Hola fabricantes, recientemente comencé a cultivar hongos en casa, hongos ostra, pero ya tengo 3x de estos controladores en casa para el control de temperatura del fermentador para mi cerveza casera, esposa también está haciendo esto de Kombucha ahora, y como termostato para calor