community italiana di domotica personale
 
Aggiornare il proprio record su DuckDNS tramite automazione Home Assistant

Aggiornare il proprio record su DuckDNS tramite automazione Home Assistant

Amazon - Promozioni del giorno  
SCOPI DELLA GUIDA:
  • Mantenere aggiornata la propria associazione IP WAN/FQDN presso DuckDNS in modo estremamente semplice ed efficace usando un’automazione Home Assistant
  • Livello di difficoltà: basso
CONCETTI AFFRONTATI:
  • Configurazione software
COMPONENTI SOFTWARE UTIlIZZATE:
PREREQUISITI:
  • Home Assistant configurato e funzionante
  • Raspberry Pi con sistema operativo Raspberry Pi OS
DISPOSITIVI FISICI UTILIZZATI:
Guida indicata per utenti con installazione:
Ambiente Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In presenza di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat.
Revisione guida: 1.5

Aggiornamento DuckDNS via Home Assistant

Abstract

Come spiegato anche presso la sua scheda, DuckDNS è un servizio gratuito di Dynamic DNS il quale consente a chiunque di definire un FQDN (in breve, un “nome proprio su Internet“) tale da consentire un rapido accesso alla propria domotica personale (e/o altri servizi) da remoto, ovvero lontani dalla propria rete locale domestica.

Sì, perché il punto di accesso del proprio modem è solitamente rappresentato dall’indirizzo IP WAN che il fornitore di accesso gli attribuisce, indirizzo che nel tempo varia dinamicamente per diversi motivi. Va da sé che, salvo possedere un IP fisso (solitamente ottenibile a pagamento) collegarsi a tale indirizzo preveda di conoscerne le variazioni in tempo reale.

Qui interviene il sopracitato servizio Dynamic DNS, il quale permette di definire un nome FQND arbitrario (eg. casamia.duckdns.org) il quale, associato all’indirizzo IP WAN di cui sopra, permette di doversi ricordare semplicemente un insieme di parole (fisse) anziché un indirizzo numerico (che per l’appunto comunque varia). Quando si evoca l’indirizzo FQDN, il servizio DNS risolve per noi l’associazione dell’indirizzo IP e quindi presso esso dirige le sue richieste Internet; la cosa cruciale è quindi che l’associazione FQDN / indirizzo IP WAN sia sempre mantenuta aggiornata, altrimenti rischiederemmo una risoluzione verso un IP non più corretto, perché magari nel frattempo il fornitore d’accesso potrebbe averlo modificato.

Per provvedere a tale aggiornamento le tecniche sono le più disparate. Una delle più comuni è lasciare che sia il proprio modem ad effettuare l’aggiornamento (per esempio, i modem FRITZ!Box consentono di farlo configurando una voce apposita di menu), laddove il modem non lo preveda è necessario che un host sulla propria rete domestica provveda a questa semplice ma cruciale attività.

Gli utilizzatori di Home Assistant OS (aka HassOS/HASSIO) tendono ad utilizzare l’add-on specifico di DuckDNS, il quale consente non solo di tenere aggiornata l’associazione ma anche a gestire lo scambio dei certificati di sicurezza; gli utenti Home Assistant Core, invece, possono sbizzarrirsi nelle tecniche più disparate.

In questa guida proponiamo una tecnica estremamente semplice ed efficace per mantenere l’associazione, presso una qualsiasi installazione (Core e non) di Home Assistant, utilizzando una semplice e comodissima automazione.

N.b. Sì: esiste anche un componente ufficiale di Home Assistant allo stesso scopo della presente guida, ma semplicemente funziona male. Bocciato.

Si parte

Servizio DuckDNS

N.b. Se si possiede già un dominio definito presso DuckDNS è allora possibile saltare a pie’ pari questo paragrafo. L’unica informazione necessaria è, oltre il proprio nome dominio, il proprio token di accesso disponibile presso la propria sezione privata di DuckDNS.

Collegarsi quindi al servizio tramite l’indirizzo https://www.duckdns.org e, una volta registrati creare un proprio nome dominio (se non lo si possiede già) che, univocamente, rappresenterà il vostro modem collegato ad Internet. Il suffisso è sempre lo stesso (“.duckdns.org“) mentre ciò che cambia e va scelto è il suffisso (per esempio “casamia“).

Per questa guida, daremo per assunto di aver creato il seguente FQDN:

casamia.duckdns.org

dove “duckdns.org” è la parte fissa mentre casamia è il nome dominio da noi creato a mo’ di esempio.

All’interno della propria sezione privata di DuckDNS troverete anche un campo importante chiamato “token“, il quale appare analogo a questo:

e3ff465f-c6d6-acb1-4416-44b2af152111

Appuntarselo da una parte, tornerà utile a breve.

secrets.yaml

Aggiungiamo ora due chiavi all’interno del file secrets.yaml presente nella cartella che contiene i file di configurazione di Home Assistant (la stessa di configuration.yaml, per capirci). Se il file non esiste, crearlo.

Aggiungere queste chiavi:

duckdns_domain: nomedomino
duckdns_token: xxxxxxx-yyyy-zzzz-qqqq-aaaaaaaaa

dove nomedominio sarà il proprio nome dominio (per esempio “casamia“) e xxxxxxx-yyyy-zzzz-qqqq-aaaaaaaaa sarà il proprio token precedentemente identificato.

Salvare e uscire.

Package

Creare dunque un package chiamato duckdns.yaml nella propria cartella dei package contenente il seguente codice:

sensor:
  - platform: rest
    name: public_ip
    resource: https://ipinfo.io/ip

input_text:
  duckdns_domain:
    initial: !secret duckdns_domain
  duckdns_token:
    initial: !secret duckdns_token

rest_command:
  update_duckdns_ip:
    url: "https://www.duckdns.org/update?domains={{ states('input_text.duckdns_domain') }}&token={{ states('input_text.duckdns_token') }}"
    verify_ssl: true

automation:
  - id: update_duckdns_ip
    alias: "Update DuckDNS IP"
    trigger:
      - id: ip
        platform: state
        entity_id: sensor.public_ip
      - id: start
        platform: homeassistant
        event: start
    action:
      - choose:
          - alias: ip
            conditions:
              - condition: trigger
                id: ip
              - condition: template
                value_template: "{{ trigger.to_state.state not in ['unknown','unavailable','none'] }}"
            sequence:
              - service: rest_command.update_duckdns_ip
          - alias: start
            conditions:
              - condition: template
                value_template: "{{ states('sensor.public_ip') not in ['unknown','unavailable','none'] }}"
            sequence:
              - service: rest_command.update_duckdns_ip

salvare e poi riavviare Home Assistant.

Spiegazione

Dopo il riavvio saranno state create una serie di entità:

  • sensor.public_ip
  • input_text.duckdns_domain
  • input_text.duckdns_token
  • automation.update_duckdns_ip

In pratica, tutto verte sull’automazione chiamata automation.update_duckdns_ip la quale si innesca all’avvio di Home Assistant oppure quando il sensore sensor.public_ip (che contiene nel suo stato l’IP WAN a noi assegnato) varia. Al suo variare, l’automazione evoca il servizio rest_command.update_duckdns_ip, il quale non fa altro che evocare DuckDNS “passandogli” il nostro nome dominio, il nostro token di identificazione e, implicitamente, il nuovo IP.

Così facendo, automaticamente l’associazione verrà automaticamente aggiornata ad ogni variazione di IP.

⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Se ti sei perso, a tua disposizione c'è la mappa.
Telegram News Channel