Tabla de contenido:

Smart Home de Raspberry Pi: 5 pasos (con imágenes)
Smart Home de Raspberry Pi: 5 pasos (con imágenes)

Video: Smart Home de Raspberry Pi: 5 pasos (con imágenes)

Video: Smart Home de Raspberry Pi: 5 pasos (con imágenes)
Video: La forma más fácil de instalar Home Assistant | Raspberry Pi 2024, Noviembre
Anonim
Hogar inteligente de Raspberry Pi
Hogar inteligente de Raspberry Pi

Ya existen varios productos que hacen que su piso sea más inteligente, pero la mayoría de ellos son soluciones patentadas. Pero, ¿por qué necesita una conexión a Internet para encender una luz con su teléfono inteligente? Esa fue una de las razones por las que construí mi propia solución Smart Home.

Programé una aplicación de servidor que se ejecuta en una Raspberry Pi. Este es un proyecto de código abierto basado en Java que le permite configurar su apartamento y conectar varios clientes y 'unidades controlables'. Muestro una solución que maneja interruptores de fuente de alimentación rc, reproduce música y videos en la Raspberry Pi, muestra el estado en el espejo inteligente y puede ser controlado por una aplicación de Android y dos aplicaciones de guijarros. La fuente está alojada en github

Paso 1: Cosas que necesita

Cosas que necesitas
Cosas que necesitas

Para configurar Smart Home, necesita los siguientes 'ingredientes'

  • Raspberry Pi al menos modelo 2 B
  • Remitente de 433 MHz, algo como esto
  • 3 cables de puente que conectan la Raspberry Pi y el remitente
  • Algunas tomas de radiocontrol a 433 MHz
  • Smartphone Android para ejecutar la aplicación cliente

Además, puede ampliar Smart Home con más clientes y unidades opcionales como esta

  • Reloj inteligente Pebble
  • Smart Mirror, vea este proyecto
  • Tira de LED controlada de 433 MHz, consulte este

Paso 2: Prepare Raspberry Pi para 433 MHz

Prepare Raspberry Pi para 433 MHz
Prepare Raspberry Pi para 433 MHz
Prepare Raspberry Pi para 433 MHz
Prepare Raspberry Pi para 433 MHz

En los siguientes pasos, necesita acceder a la línea de comando en la Raspberry Pi. Para obtener el acceso, puede leer este instructivo

Conecte el transmisor de 433 MHz con la Raspberry Pi como se muestra en la imagen de arriba

  • GND (remitente) 6 GND (raspi)
  • VCC (remitente) 2 + 5V (raspi)
  • DATOS (remitente) 11 GPIO 17 (raspi)

Conecte también una antena de 17 cm al pin ANT (remitente). Eso aumenta la señal de manera significativa.

Como necesitamos algunas bibliotecas de otros repositorios de git, tenemos que instalar git

sudo apt-get install git-core -y

Para configurar la Raspberry Pi para una comunicación de 433 MHz, necesitamos la biblioteca de cableado Pi para un mejor manejo de los GPIO.

clon de git git: //git.drogon.net/wiringPi

cableado de cd Pi./build

Entonces necesitamos una biblioteca que implemente protocolos de suministro de energía típicamente rc.

clon de git git: //github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi hacer cp enviar / usr / bin /

El ejecutable 'enviar' le permite enviar códigos para cambiar la mayoría de las fuentes de alimentación disponibles.

En mi configuración de Smart Home, también tengo una tira de LED rc descrita en este instructivo: https://www.instructables.com/id/RC-controlled-LED … Para configurar los colores de esta tira de LED, necesita otro ejecutable de envío que le permita para enviar cualquier valor entero (que codifica el color).

Por lo tanto, compile sendInt.cpp en el repositorio rcswitch-pi y muévalo a / usr / bin / sendInt.

sudo g ++ sendInt.cpp -o / usr / bin / sendInt /home/pi/rcswitch-pi/RCSwitch.o -I / home / pi / rcswitch-pi -lwiringPi

Ahora debería poder enviar comandos rc con los dos ejecutables / usr / bin / send y / usr / bin / sendInt

Paso 3: Configurar el servidor doméstico inteligente

En primer lugar, debe instalar varios paquetes. La aplicación Smart Home está basada en Java y funciona bien con openjdk-11. No estoy seguro de otros entornos de ejecución de Java. El mplayer es un reproductor de música de línea de comandos minimalista. El omxplayer usa los gráficos Raspberry Pi para la codificación de video, por lo que debe usarse para videos. Se necesita el programa ant para construir la aplicación java.

sudo apt-get install mplayer omxplayer openjdk-11-jdk ant -y

Configure los directorios para el archivo jar y para los registros.

sudo mkdir / opt / neo

sudo chown pi: pi / opt / neo mkdir / home / pi / Logs

Configure el script de inicio para iniciar la aplicación automáticamente al arrancar. Por lo tanto, copie la secuencia de comandos de casa inteligente adjunta en el directorio /etc/init.d/ También creé una secuencia de comandos en / usr / bin / que canaliza los comandos a la secuencia de comandos adjunta, así que simplemente ingrese la casa inteligente a la consola para ejecutar comandos.

sudo cp hogar inteligente /etc/init.d/smart-home

sudo chmod + x /etc/init.d/smart-home sudo sh -c "echo '#! / bin / bash'> / usr / bin / smart-home" sudo sh -c "echo '/ etc / init. d / casa inteligente / $ 1 '>> / usr / bin / casa inteligente "sudo chmod + x / usr / bin / casa inteligente sudo update-rc.d valores predeterminados de casa inteligente

Ahora es el momento de verificar el repositorio y crear la aplicación. Si no desea compilarlo usted mismo, puede descargar el smarthome.jar adjunto y moverlo a / opt / neo /

git clone [email protected]: dabastynator / SmartHome.git

ant -f SmartHome / de.neo.smarthome.build / build.ant build_remote cp SmartHome / de.neo.smarthome.build / build / jar / * / opt / neo /

Intente iniciar la casa inteligente y verifique el archivo de registro. Para obtener acceso a los GPIO, la aplicación debe ser iniciada por sudo.

sudo inicio de casa inteligente

Registros de gatos / smarthome.log

Debería ver el mensaje de error El archivo de configuración no existe que nos indica el siguiente paso. El repositorio contiene un archivo Léame que explica el archivo de configuración. Puede ver esto muy bien renderizado en github:

Copie este xml en /home/pi/controlcenter.xml, luego configure la ubicación de su servidor de medios y cambie el contenido según lo necesite. Una vez que haya terminado la configuración y haya reiniciado la casa inteligente (reinicio de la casa inteligente sudo), debería ver el siguiente contenido en el smarthome.log

24.05-08: 26 INFORMACIÓN REMOTA por de.neo.smarthome.cronjob. CronJob@15aeb7ab: Programar trabajo cron

24.05-08: 26 INFORMACIÓN REMOTA por [trigger.light]: Espere 79391760 ms para la ejecución 24.05-08: 26 INFORMACIÓN RMI por Agregar controlador web (5061 / ledstrip) 24.05-08: 26 INFORMACIÓN RMI por Agregar controlador web (5061 / acción) 24.05-08: 26 INFORMACIÓN RMI por Agregar controlador web (5061 / mediaserver) 24.05-08: 26 INFORMACIÓN RMI por Agregar controlador web (5061 / switch) 24.05-08: 26 INFORMACIÓN RMI por Agregar controlador web (5061 / controlcenter) 24.05-08: 26 INFORMACIÓN RMI por Start webserver with 5 handler (localhost: 5061) 24.05-08: 26 INFORMACIÓN REMOTA por Controlcenter: Agregue 1. unidad de control: MyUnit (xyz)…

El servidor web ahora se está ejecutando:-)

Paso 4: configurar clientes

Clientes de configuración
Clientes de configuración
Clientes de configuración
Clientes de configuración
Clientes de configuración
Clientes de configuración

Cliente Android para smartphone

El repositorio de git para la aplicación de casa inteligente también contiene la fuente del cliente de Android, por lo que puede compilarlo usted mismo. Pero adjunté el APK para este paso, eso lo hace más fácil. La primera vez que inicia la aplicación, le solicita un servidor, como en la primera imagen de arriba. Ingrese la URL del servidor y el token de seguridad.

Eso debería ser todo. Ahora tiene acceso al servidor y controla su apartamento, reproduce música y mira videos de forma remota en su Raspberry Pi. Tenga en cuenta que puede agregar widgets a su pantalla de inicio, lo que hace que los interruptores y el control de la música sean más accesibles.

Cliente Smartwatch Pebble

La fuente de los dos clientes pebble está alojada en github. Una aplicación muestra el archivo de música que se está reproduciendo actualmente: https://github.com/dabastynator/PebbleRemoteMusic … Esto también le permite pausar / reproducir y subir / bajar el volumen.

La segunda aplicación desencadena tres acciones: https://github.com/dabastynator/PebbleControl Los nombres de los desencadenantes son: mobile.come_home mobile.leaving y mobile.go_to_bed. Si define reglas de evento para este disparador en su configuration-xml, las activa con su reloj.

Todo es de código abierto, pero no es necesario que lo compile usted mismo, también adjunté las aplicaciones de guijarros. Descargue los PBW con su teléfono inteligente, su teléfono debe instalarlos en su reloj. Las aplicaciones de guijarros necesitan configuraciones para comunicarse con el servidor. Adjunté una captura de pantalla de cómo se ve mi configuración.

Cliente Smartwatch Garmin

También hay un cliente disponible para Garmin Smartwatches. La aplicación está disponible en la tienda de aplicaciones garmin connect y se puede instalar aquí:

apps.garmin.com/en-US/apps/c745527d-f2af-4…

Cliente Smart Mirror

Ya creé un instructivo que explica cómo crear Smart Mirror, vea esto https://www.instructables.com/id/Smart-Mirror-by-R…. El código fuente también está alojado en github: https:// github.com/dabastynator/SmartMirror. El software del Smart Mirror lee la configuración del archivo smart_config.js que no es parte del repositorio de git. El contenido del archivo de configuración debería verse como este listado:

var mOpenWeatherKey = 'su-clave-de-clima-abierta';

var mSecurity = 'su-token-de-seguridad';

También debe ajustar las dos primeras líneas del archivo smart_mirror.js para especificar la dirección IP del servidor de Smart Home y la ubicación para obtener el clima adecuado.

Más clientes

La aplicación del servidor es un servidor web simple. Esto le permite activar acciones desde cualquier cliente que desee mediante simples llamadas web. En el video de demostración, muestro la aplicación de Android Tasker en combinación con AutoVoice. Esto me permite activar eventos con simples comandos de voz. Por ejemplo, "ok google, es hora de dormir" puede activar mobile.go_to_bed. Pero también puede hacer llamadas web, por ejemplo, desde IFTTT. ¿Qué tal una tira de LED parpadeante amarilla para notificación por correo electrónico?

Puede solicitar al servidor posibles llamadas web como los siguientes enlaces (reemplace la ip, el puerto y el token por su configuración)

localhost: 5061 / controlcenter / api? token = secu…

localhost: 5061 / action / api? token = security-to…

localhost: 5061 / mediaserver / api? token = securi…

localhost: 5061 / switch / api? token = security-to…

localhost: 5061 / ledstrip / api? token = security-…

Paso 5: Conclusión

Todavía hay algunas características por implementar: dado que el servidor proporciona solo una API web simple, los clientes realizan muchas encuestas. Para reducir el sondeo, quiero una integración MQTT para una mejor notificación. Además, las fuentes de alimentación wifi deberían funcionar de manera más confiable que las fuentes de alimentación rc, ya que rc es solo una comunicación unidireccional.

Es muy divertido desarrollar este proyecto. Y es genial controlar el piso con varios dispositivos, incluso si la conexión a Internet se rompe.

Recomendado: