¿Se puede instalar Home Assistant en un pc antiguo?


Home Assistant es un software de código abierto diseñado para la automatización del hogar. Funciona como una plataforma de integración y centro de control para dispositivos domésticos inteligentes. Lo primero que tenemos que saber es que necesitaremos un equipo que haga servidor, y aunque muchas personas optan por una raspberry una idea es reusar un equipo. Aquí te dejo un resumen de sus principales características y usos:

¿Qué es Home Assistant?

Home Assistant es un sistema operativo que permite integrar y controlar una amplia variedad de dispositivos domóticos de diferentes marcas. Es gratuito y de código abierto, lo que significa que cualquier persona puede contribuir a su desarrollo y personalización.

¿Para qué sirve?

  • Automatización: Permite crear automatizaciones complejas para que los dispositivos funcionen de manera coordinada sin intervención manual. Por ejemplo, puedes programar que las luces se enciendan automáticamente al atardecer o que el termostato ajuste la temperatura cuando detecte que estás en casa.
  • Integración: Home Assistant puede conectarse con cientos de marcas y miles de dispositivos, unificando el control de todos ellos en una sola plataforma.
  • Control remoto: Puedes controlar tus dispositivos desde cualquier lugar a través de una interfaz web o una aplicación móvil1.
  • Notificaciones: Envía alertas y notificaciones a tu dispositivo móvil sobre el estado de tus dispositivos o eventos específicos, como la detección de movimiento o cambios en la temperatura.

Tipos de instalación

Home Assistant se puede instalar de varias maneras, dependiendo de tus necesidades y conocimientos técnicos:

  • Home Assistant OS: Una instalación completa que incluye el sistema operativo y Home Assistant. EN EL CASO DE UN PC DEBE SER COMPATIBLE CON UAN INSTALACION ACTUAL DE UBUNTU , POR LO QUE SI ES MUY ANTIGUO, ESTA OPCION NO ES VIABLE
  • Home Assistant Container: Ejecuta Home Assistant en un contenedor Docker. ESTA ES LA INSTALACION QUE PROPONEMOS
  • Home Assistant Core: Solo el software de Home Assistant, que se puede instalar en cualquier sistema operativo compatible.

INSTALACION CON DOCKER UN XUBUNTU

Sí, es posible instalar Home Assistant en un PC «antiguo», por ejemplo de un viejo portatil con un procesador Intel Centrino Duo, como el Toshiba Tecra. Sin embargo, hay algunas consideraciones importantes a tener en cuenta:

  1. Rendimiento: Aunque Home Assistant puede funcionar en hardware más antiguo, el rendimiento puede no ser óptimo. Un procesador Intel Centrino Duo es bastante antiguo y puede tener dificultades para manejar múltiples integraciones y automatizaciones complejas1.
  2. Sistema Operativo: La forma más recomendada de instalar Home Assistant en hardware x86-64 es utilizando el sistema operativo Home Assistant OS. Puedes instalarlo a través de una distribución de Linux como Ubuntu y luego usar Docker para ejecutar Home Assistant2.
  3. Almacenamiento: Es recomendable utilizar un SSD en lugar de un HDD para mejorar la velocidad y la fiabilidad del sistema.
  4. Memoria RAM: Asegúrate de tener al menos 2 GB de RAM, aunque 4 GB sería más ideal para un rendimiento más fluido.

Si decides seguir adelante, este es el resumen de los pasos básicos:

  1. Instalar Ubuntu: Descarga e instala Ubuntu en tu Toshiba Tecra.
  2. Instalar Docker: Una vez que Ubuntu esté funcionando, instala Docker.
  3. Instalar Home Assistant: Usa Docker para instalar Home Assistant siguiendo las instrucciones oficiales de Home Assistant para la instalación en x86-64.

PASO A PASO

Si tu Toshiba Tecra ya tiene instalado Xubuntu, en efecto aún puedes instalar Home Assistant. Aquí tienes una guía básica para hacerlo:

  1. Instalar Xubuntu: Asegúrate de tener Xubuntu instalado y actualizado en tu Toshiba Tecra.
  2. Instalar Docker:
    • Abre una terminal y ejecuta los siguientes comandos para instalar Docker:
    • sudo apt update
    • sudo apt install docker.io
    • sudo systemctl start docker
    • sudo systemctl enable docker
  3. Instalar Home Assistant:
    • Una vez que Docker esté instalado, puedes instalar Home Assistant usando Docker. Ejecuta los siguientes comandos en la terminal:
    • sudo docker run -d --name homeassistant --restart=unless-stopped -v /path/to/your/config:/config -e TZ=Europe/Madrid --net=host ghcr.io/home-assistant/home-assistant:stable
    • Asegúrate de reemplazar /path/to/your/config con la ruta donde deseas almacenar la configuración de Home Assistant.
  4. Acceder a Home Assistant:
    • Una vez que Home Assistant esté en funcionamiento, puedes acceder a la interfaz web abriendo un navegador y navegando a http://localhost:8123.

Integración Arduino IoT Cloud Amazon Alexa


En este post vamos integrar Arduino con Alexa para lo cual vamos a utilizar Arduino IoT Cloud, es decir usaremos el Editor web Arduino , Arduino IoT Cloud asi como Alexa Skills para Arduino .

En cuanto al hardware se usaran los siguientes componentes:

  • Arduino MKR WiFi 1010 × 1
  • Escudo Arduino MKR ENV × 1
  • Protoboard (genérico) × 1
  • LED de alto brillo, blanco × 1
  • Cables de puente (genéricos) × 1
  • Cátodo común LED RGB × 1
  • Resistencia 220 ohmios

1: Arduino IoT Cloud y montaje inicial

El esquema que se va a usar es bastante simple, como se puede ver en la imagen de abajo, pues se basa en dos simples leds ( uno tricolor) con sus correspondientes resistencias limitadoras todo ello conectado a un arduino MKR

Desde la página principal de IoT Cloud , crearemos algo nuevo y le asignaremos un nombre significativo Luego seleccionaremos el tablero que vamos a usar. Si no puede ver su tablero, es posible que haya omitido agregar un nuevo dispositivo siguiendo el procedimiento que comienza después de hacer clic en el botón AGREGAR DISPOSITIVO , en la sección Dispositivos .

Una vez hecho esto, añadiremos tres propiedades a nuestra «Thing» (cosa) . Los dos primeros representarán las lámparas , el último la temperatura.

El tipo ColouredLight nos permite controlar una Luz RGB , permitiéndonos controlar su brillo y color. Configúrelo como ReadandWrite porque necesitaremos controlar su comportamiento usando Alexa.

El tipo DimmedLight es similar al anterior, pero solo nos permite controlar el brillo de una luz.

La última propiedad a agregar es la temperatura . Agreguemos este como ReadOnly, ya que solo queremos saber su valor, no establecerlo. Como tipo podemos usar el sensor de temperatura (Celsius), pero siéntase libre de configurarlo como Fº si le conviene más.

Así es como debería verse la vista del Panel de control de su cosa en este punto:

Al agregar propiedades, asegúrese de usar solo los tipos enumerados en la sección Hogar inteligente ; de lo contrario, no funcionarán con Alexa.

La sección Smart Home

Ahora vaya al Editor web haciendo clic en el botón Editar boceto en la vista de edición de su cosa .

2: Editor web Arduino

En el Editor web necesitamos agregar algún código al Sketch generado automáticamente para nosotros.

Debido a que queremos leer algunos datos ambientales (es decir, la temperatura, pero no dude en agregar luz, humedad y presión si lo desea), importaremos la biblioteca Arduino_MKRENV en la parte superior de nuestro Sketch.

#include <Arduino_MKRENV.h>

Luego definimos algunas constantes para los pines de la placa que se usarán para R, G, Bandwhitelight , de esta manera el código es más legible:

#define PIN_MEETING_ROOM 5
#define PIN_LOUNGE_AREA_R 2
#define PIN_LOUNGE_AREA_B 3
#define PIN_LOUNGE_AREA_G 4

Ahora, en la función de configuración , podemos inicializar el Arduino MKR ENV Shield con:

if (!ENV.begin()) {
   Serial.println("Failed to initialize MKR ENV shield!");
   while (1);
}

De esta forma si el escudo no está instalado se bloqueará la ejecución del Sketch .

No necesitamos especificar que pinMode debe ser OUTPUT (saldia ) porque lusaremos analogWrite() para establecer la intensidad de nuestro LED blanco o los colores individuales del RGB.

En la función de bucle vamos a leer la temperatura cada segundo:

temperature = ENV.readTemperature();
delay(1000);

Finalmente, es hora de implementar nuestras funciones de devolución de llamada: las que se ejecutarán cada vez que se extraiga un cambio en el valor de una propiedad de IoT Cloud.

Tenemos que implementar onMeetingRoomChangeonLoungeAreaChange:

void onMeetingRoomChange() {
 uint8_t brightness = map(meetingRoom.getBrightness(), 0, 100, 0, 255);
 if (meetingRoom.getSwitch()) {
   Serial.println(brightness);
   analogWrite(PIN_MEETING_ROOM, brightness);    
 }
 else{
   analogWrite(PIN_MEETING_ROOM, LOW);
 }
}

Con el código de arriba primero leemos el valor de brillo de la nube y lo asignamos a un valor utilizable, luego verificamos si el interruptor de la luz está encendido, si lo está podemos encender la luz, usando el brightnessr ojo antes. De lo contrario apagamos la luz

El principio de funcionamiento es el mismo para la otra devolución de llamada:

void onLoungeAreaChange() {
 uint8_t r, g, b;
 loungeArea.getValue().getRGB(r, g, b);
 if (loungeArea.getSwitch()) {
   Serial.println("R:"+String(r)+" G:"+String(g)+ " B:"+String(b));
   analogWrite(PIN_LOUNGE_AREA_R, r);
   analogWrite(PIN_LOUNGE_AREA_B, b);
   analogWrite(PIN_LOUNGE_AREA_G, g);
 }
 else{
    Serial.println("Lamp Off");
    analogWrite(PIN_LOUNGE_AREA_R, 0);
    analogWrite(PIN_LOUNGE_AREA_B, 0);
    analogWrite(PIN_LOUNGE_AREA_G, 0);
 }
}

La única diferencia notable es el hecho de que en lugar del brillo solo, tenemos tres componentes diferentes: son la representación del color RGB de la luz. Por supuesto, podemos definir colores personalizados por nombre en la aplicación Alexa, por lo que no tendremos que decir manualmente qué cantidades de rojo, verde o azul queremos configurar.

Este es el código al completo:

/* 
  Sketch generated by the Arduino IoT Cloud Thing "Office"
  https://create.arduino.cc/cloud/things/f2c77d46-5abb-41e2-a8bb-3990155f342c 

  Arduino IoT Cloud Properties description

  The following variables are automatically generated and updated when changes are made to the Thing properties

  CloudTemperature temperature;
  CloudDimmedLight meetingRoom;
  CloudColoredLight loungeArea;

  Properties which are marked as READ/WRITE in the Cloud Thing will also have functions
  which are called when their values are changed from the Dashboard.
  These functions are generated with the Thing and added at the end of this sketch.
*/

#include "thingProperties.h"
#include <Arduino_MKRENV.h>

#define PIN_MEETING_ROOM 5
#define PIN_LOUNGE_AREA_R 2
#define PIN_LOUNGE_AREA_B 3
#define PIN_LOUNGE_AREA_G 4

void setup() {
  // Initialize serial and wait for port to open:
  Serial.begin(9600);
  // This delay gives the chance to wait for a Serial Monitor without blocking if none is found
  delay(1500);
  
  if (!ENV.begin()) {
    Serial.println("Failed to initialize MKR ENV shield!");
    while (1);
  }

  // Defined in thingProperties.h
  initProperties();

  // Connect to Arduino IoT Cloud
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  
  /*
     The following function allows you to obtain more information
     related to the state of network and IoT Cloud connection and errors
     the higher number the more granular information you’ll get.
     The default is 0 (only errors).
     Maximum is 4
 */
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();
}

void loop() {
  ArduinoCloud.update();
  // Your code here 
  temperature = ENV.readTemperature();
  delay(1000);
}


void onMeetingRoomChange() {
  uint8_t brightness = map(meetingRoom.getBrightness(), 0, 100, 0, 255);
  if (meetingRoom.getSwitch()) {
    Serial.println(brightness);
    analogWrite(PIN_MEETING_ROOM, brightness);    
  }
  else{
    analogWrite(PIN_MEETING_ROOM, LOW);
  }
}


void onLoungeAreaChange() {
  uint8_t r, g, b;
  loungeArea.getValue().getRGB(r, g, b);
  if (loungeArea.getSwitch()) {
    Serial.println("R:"+String(r)+" G:"+String(g)+ " B:"+String(b));
    analogWrite(PIN_LOUNGE_AREA_R, r);
    analogWrite(PIN_LOUNGE_AREA_B, b);
    analogWrite(PIN_LOUNGE_AREA_G, g);
  }
  else{
     Serial.println("Lamp Off");
     analogWrite(PIN_LOUNGE_AREA_R, 0);
     analogWrite(PIN_LOUNGE_AREA_B, 0);
     analogWrite(PIN_LOUGE_AREA_G, 0);
  }
}

3: Configuración de habilidades de Amazon Alexa

Ahora necesitaremos la aplicación Amazon Alexa, que se puede descargar desde la App Store de Apple o la Google Play Store . Una vez instalado, inicie sesión con su cuenta existente o cree una nueva.

Repasemos los pasos necesarios para instalar Arduino Alexa Skill. Seguiremos la secuencia de imágenes a continuación para ver todos los pasos requeridos.

1/9: toca "Dispositivos"
Toque «Dispositivos»
2/9: Ahora habilitemos nuestras habilidades para el hogar inteligente
Ahora habilitemos nuestras habilidades para el hogar inteligente (smart Home Skills)

Tecleando «Arduino» y tocando «buscar» obtendremos una lista. ¡Ese es el que necesitamos!

Una vez seleccionado, tendremos que habilitarlo

Inicie sesión con nuestras credenciales de cuenta Arduino Create

Nuestra Alexa y Arduino IoT Cloud ahora pueden hablar entre sí

Es hora de descubrir nuestros dispositivos

Un poco de paciencia no hará daño, así que habrá que esperar hasta que Alexa reconozca los nuevos dispositivos que nos hemos montado.

4: Configuración de dispositivos Amazon Alexa

Después de esperar un poco, debería ver que se han encontrado algunos dispositivos.

Después de tocar en Elegir dispositivo, se le presentará la página de configuración que enumera todos los dispositivos disponibles (se nombrarán de acuerdo con el nombre de nuestras propiedades en Arduino IoT Cloud).

Vamos a elegir un dispositivo y toque Set Hasta dispositivo . Si lo desea, también puede agregarlo a un grupo (de esta manera puede controlar y organizar sus dispositivos más fácilmente), de lo contrario, omita esta parte.

Repita el proceso de configuración para cada dispositivo que desee controlar.

Finalmente, la vista del dispositivo debería verse así:

Finalmente podemos empezar a preguntar cosas como «Alexa, ¿cuál es la temperatura en la oficina?» o «Alexa, enciende la luz de la sala de reuniones» .

Más información en https://create.arduino.cc/projecthub/303628/arduino-iot-cloud-amazon-alexa-integration-4e6078