Integriamo un nostro vecchio progetto di una multipresa con ESP32 in Home Assistant per gestirla più comodamente

Qualche anno fa realizzammo un progetto con una ESP32, creando una multipresa da gestire con interfaccia web [LINK], il cui unico limite era la gestione da remoto. Infatti potevamo tranquillamente gestirla all’interno della nostra rete Wi-Fi domestica, attivando e disattivando le cinque singole prese anche tramite un piccolo controller con ESP8266 che abbia successivamente creato [LINK]. Potendoci finalmente occuparci di Home Assistant, possiamo integrarla e gestirla comodamente da remoto sia con Hassio che con Alexa, se desideriamo anche integrare l’assistente vocale di Amazon in Home Assistant.

Fase preliminare

Prima di sposarci in Home Assistant dobbiamo ricordarci che la multipresa funziona tramite protocollo HTTP, quindi dobbiamo conoscere gli URL da utilizzare per le cinque prese, considerando poi che ogni presa ha due stati, uno di chiusura ed uno di apertura del relè, quindi un totale di 10 stati da gestire.



Trovare gli URL è semplicissimo e, di fatti, è sufficiente aprire lo sketch del progetto del controller ed andarli a mettere da parte per i passaggi successivi. Se non riuscite a trovare questo sketch, eccovi il LINK. Vediamo in questo esempio, gli URL che interessano a noi e che troviamo tra due parentesi tonde dopo http.begin

void rl1_on(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay01/on");
int httpCode = http.GET();


http.end();

}
}

void rl1_off(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay01/off");
int httpCode = http.GET();


http.end();

}
}

void rl2_on(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay02/on");
int httpCode = http.GET();


http.end();

}
}

void rl2_off(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay02/off");
int httpCode = http.GET();


http.end();

}
}

void rl3_on(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay03/on");
int httpCode = http.GET();


http.end();

}
}

void rl3_off(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay03/off");
int httpCode = http.GET();


http.end();

}
}


void rl4_on(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay04/on");
int httpCode = http.GET();


http.end();

}
}

void rl4_off(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay04/off");
int httpCode = http.GET();


http.end();

}
}

void rl5_on(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay05/on");
int httpCode = http.GET();


http.end();

}
}

void rl5_off(){
if (WiFi.status() == WL_CONNECTED) {

HTTPClient http;

http.begin("http://192.168.1.153/Relay05/off");
int httpCode = http.GET();


http.end();

}
}

Ricordiamoci, pure, che l’indirizzo IP 192.168.1.153 è quello della multipresa, che nel suo sketch avevamo definito come statico.



Integrazione in Home Assistant

Il primo passaggio è modificare il file configuration.yaml ed predisporre Home Assistant affinché interagire con la multipresa ed il suoi 10 URL. Utilizzeremo il comando RESTful, una integrazione di Home Assistant per la gestione di servizi tramite URL. Andiamo alla fine del fiel configuration.yaml e copiamo quanto segue:

rest_command:
  open_r1_http:
    url: http://192.168.1.153/Relay01/on
  close_r1_http:
    url: http://192.168.1.153/Relay01/off
  open_r2_http:
    url: http://192.168.1.153/Relay02/on
  close_r2_http:
    url: http://192.168.1.153/Relay02/off
  open_r3_http:
    url: http://192.168.1.153/Relay03/on
  close_r3_http:
    url: http://192.168.1.153/Relay03/off
  open_r4_http:
    url: http://192.168.1.153/Relay04/on
  close_r4_http:
    url: http://192.168.1.153/Relay04/off
  open_r5_http:
    url: http://192.168.1.153/Relay05/on
  close_r5_http:
    url: http://192.168.1.153/Relay05/off

Come possiamo notare, abbiamo creato due richieste per relè, una che inizia per open per indicare lo stato di ON del relè, uno close per indicare lo stato di OFF del relè. Ora creiamo gli script, perciò muoviamoci dalla pagina iniziale di Home Assistant andando su Impostazioni -> Automazioni e scenari -> Script e clicchiamo su Aggiungi script e poi su Crea un nuovo script. Anche qui creiamo uno script per ogni stato di ogni singolo relè, quindi in tutto 10 script. Di seguito un esempio dello script da creare.

Multipresa

In Nome inseriamo il nome che diamo allo script, in Modalità scegliamo Singolo, mentre nella sezione Sequenza clicchiamo su Aggiungi azione e selezioniamo Chiama un servizio. Nella casella Servizio selezioniamo il servizio che dobbiamo far eseguire allo script. Otteniamo una lista come questa dopo aver creato tutti e 10 gli script.

Ora che abbiamo gli script, dobbiamo generare gli switch per gestire ogni singolo relè. Torniamo a modificare il file configuration.yaml e andiamo a copiare quanto segue:

switch:
  - platform: template
    switches:
      r01:
        turn_on:
          service: script.r1
          target:
            entity_id: switch.r01
        turn_off:
          service: script.r1_off
          target:
            entity_id: swtch.r01
        icon_template: mdi:power-socket-eu

      r02:
        turn_on:
          service: script.r2_on
          target:
            entity_id: switch.r02
        turn_off:
          service: script.r2_off
          target:
            entity_id: switch.r02
        icon_template: mdi:power-socket-eu

      r03:
        turn_on:
          service: script.r3_on
          target:
            entity_id: switch.r03
        turn_off:
          service: script.r3_off
          target:
            entity_id: switch.r03
        icon_template: mdi:power-socket-eu
      r04:
        turn_on:
          service: script.r4_on
          target:
            entity_id: switch.r04
        turn_off:
          service: script.r4_off
          target:
            entity_id: switch.r04
        icon_template: mdi:power-socket-eu

      r05:
        turn_on:
          service: script.r5_on
          target:
            entity_id: switch.r05
        turn_off:
          service: script.r5_off
          target:
            entity_id: switch.r05
        icon_template: mdi:power-socket-eu

Come possiamo leggere, abbiamo creato cinque switch, ognuno possiede due script, uno per lo stato di ON ed uno di OFF, richiamando a loro volta gli script che avevamo creato precedentemente. Torniamo alla Panoramica di Home Assistant ed andiamo a modificare la Plancia. In basso apparirà il pulsante Aggiungi scheda. Andiamo su Per entità e cerchiamo gli switch che abbiamo creato.



Selezioniamoli tutti, poi clicchiamo su Continua e su Aggiungi alla plancia. Una volta aggiunti, possiamo personalizzare la scheda modificando i nomi degli switch, dando un’intestazione alla scheda, aggiungendo l’interruttore dell’intestazione e tanto altro. Non resta che gestire la nostra multipresa con ESP32 direttamente da Home Assistant. Se lo desideriamo, integriamo Alexa in Home Assistant in modo tale da gestire anche tramite assistente vocale la nostra multipresa.