Io uso il server Cartelettronica WES ormai da diversi anni: si tratta di una piccola scatola integrata nel quadro elettrico, in grado di monitorare tutti i consumi energetici della casa, che si tratti di energia elettrica tramite teleinfo o pinze metriche, acqua, gas e tante altre cose. Un server estremamente completo, che da solo basta. Ma Home Assistant offre una tabella energetica molto ben progettata, volevo poter integrare il server WES in questo sistema domotico. Questa guida ti aiuterà a fare lo stesso.

Prerequisiti
Ovviamente dovrai avere un server WES funzionante connesso alla rete, nonché un'installazione funzionale di Home Assistant.
[modulo content-egg=modello AE__domadoofr=personalizzato/compatto]
Innanzitutto, per non sovraccaricare il file di configurazione di Home Assistant, l'ho suddiviso in più file, cosa prevista nativamente dagli sviluppatori. Qui avremo due file in particolare:
- sensors.yaml , che ospiterà la configurazione di tutti i sensori WES
- Customize.yaml, che ti permetterà di personalizzare questi sensori in modo che vengano riconosciuti correttamente dalla tabella Energia di Home Assistant
Per fare ciò, aggiungi semplicemente queste righe ai file Configuration.yaml se non le hai già:
sensore: !include sensori.yaml
Personalizzazione dell'#Assistente Domestico
assistente domiciliare:
personalizza: !include personalizza.yaml
Creazione di sensori del server WES in Home Assistant
Il server WES purtroppo non offre una connessione MQTT, anche se questa è stata annunciata già da diversi anni. Peccato, perché ci avrebbe reso la vita molto più semplice. Il WES, tuttavia, fornisce diversi file che consentono di leggere le informazioni raccolte. Il file più completo è senza dubbio data.cgx, disponibile su http://IP_DU_WES/data.cgx. Questo è quello che useremo per evitare di destreggiarci tra più file.
Raccoglie tutte le informazioni utili in questo modulo:

Dobbiamo semplicemente dichiarare le varie informazioni desiderate in Home Assistant.
Per fare ciò, nel file sensor.yaml (da creare nella vostra directory homeassistant se non lo avete già), dobbiamo dichiarare la connessione al server WES:
-piattaforma: riposo
nome: wesdata
#Sostituisci con l'IP del tuo WES
risorsa: http://IP_DU_WES/data.cgx
intervallo_scansione: 60
metodo: OTTIENI
autenticazione: base
#Sostituisci con nome utente e password del tuo sistema
nome utente: amministratore
password: wes
json_attributes_path: "$.data"
json_attributes:
- "segno di spunta1"
- "tic2"
- "tic3"
- "impulso"
- "MORSETTO"
- "temp"
- "relè"
- "Entrata"
- "analogico"
- "interruttore_virtuale"
- "variabili"
value_template: 'OK'
Sarà necessario sostituire i campi in rosso per indicare l'indirizzo IP del server WES, nonché il nome utente e la password se non si utilizzano quelle predefinite. Puoi anche modificare “scan_interval” per interrogare il file più o meno spesso. Qui è impostato per interrogarlo ogni minuto, il che funziona bene per la maggior parte degli scopi. Non è necessario sovraccaricare il server con chiamate ripetute.
Segue la dichiarazione dei diversi sensori. Per leggere le informazioni del contatore elettrico tramite teleinfo, se ad esempio hai un abbonamento alta/bassa:
Westic1hp:
friendly_name: "Indice delle ore di punta"
ID_unico: westic1hp
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes| galleggiante }}["H_PLEINE"]
westic1hc:
friendly_name: "Indice delle ore non di punta"
ID_unico: westic1hc
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes| galleggiante }}["H_CREUSE"]
Se lo desideri, puoi personalizzare i campi “friendly_name”: questi sono i nomi che appariranno in Home Assistant. Il resto non dovrebbe essere cambiato.
Se sei come me con un abbonamento Tempo, ci saranno alcuni sensori in più da creare:
#Se abbonamento Tempo
westic1bleuhp:
friendly_name: "Indice delle ore di punta blu"
ID_unico: westic1bleuhp
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes | galleggiante }}["BBRHPJB"]
westic1bleuhc:
friendly_name: "Indice blu delle ore non di punta"
ID_unico: westic1bleuhc
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes| galleggiante }}["BBRHCJB"]
westic1blanchp:
friendly_name: "Indice delle ore di punta bianche"
ID_unico: westic1blanchp
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes | galleggiante }}["BBRHPJW"]
westic1blanchc:
friendly_name: "Indice delle ore non di punta del bianco"
ID_unico: westic1blanchc
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes| galleggiante }}["BBRHCJW"]
westic1rougehp:
friendly_name: "Indice delle ore di punta rosse"
ID_unico: westic1rougehp
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes | galleggiante }}["BBRHPJR"]
westic1rougehc:
friendly_name: "Indice rosso delle ore non di punta"
ID_unico: westic1rougehc
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes| galleggiante }}["BBRHCJR"]
Possiamo anche recuperare informazioni relative all'immissione (se hai un contratto di produzione di energia), al consumo istantaneo o anche alla tensione:
westic1inj:
friendly_name: "Inserimento indice"
unique_id: westic1inj
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes| galleggiante }}["INJECTION"]
westic1pap:
friendly_name: "Consumo istantaneo"
ID_unico: westic1pap
classe_dispositivo: potenza_apparente
unità_di_misura: 'VA'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes| galleggiante }}["PAP"]
Westic1voltaggio:
friendly_name: "Tensione di consumo"
unique_id: westic1tensione
classe_dispositivo: potenza
unità_di_misura: 'V'
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes| galleggiante }} ["TENSION1"]
A casa ho un secondo contatore Linky, per la rivendita della mia produzione solare (contratto di rivendita al 100%). Anche il server WES è collegato a questo contatore, lì posso recuperare le informazioni sulla mia produzione:
#Secondo contatore ICT qui utilizzato per la produzione fotovoltaica
Westic2prod:
friendly_name: "Indice di produzione"
ID_unico: westic2prod
classe_dispositivo: energia
unità_di_misura: 'Wh'
modello_valore: >-
["tic2"] {{states.sensor.wesdata.attributes| galleggiante }}["PRODUCTEUR"]
westic2pap:
friendly_name: "Consumo istantaneo"
ID_unico: westic2pap
classe_dispositivo: potenza_apparente
unità_di_misura: 'VA'
modello_valore: >-
["tic2"] {{states.sensor.wesdata.attributes| galleggiante }} ["PAP"]
Westic2voltaggio:
friendly_name: "Tensione di produzione"
unique_id: westic2tension
classe_dispositivo: potenza
unità_di_misura: 'V'
modello_valore: >-
["tic2"] {{states.sensor.wesdata.attributes| galleggiante }} ["TENSION1"]
Ho aggiunto un altro sensore che mi permette di avere lo stato delle ore non di punta: se westic1tarif = 1, allora siamo in ore non di punta. Si tratta di dati molto utili in scenari, ad esempio, per attivare determinate macchine solo quando siamo al tasso economico :)
# Sensore per determinare se non sono ore di punta
prezzo westic1:
friendly_name: "Prezzo attuale"
unique_id: westic1price
modello_valore: >-
["tic1"] {{states.sensor.wesdata.attributes}}["PTEC"]
wesheurecreuse:
friendly_name: "Ore non di punta"
unique_id: wesheurecreuse
modello_valore: >-
["tic1"] {% if "scavare" in states.sensor.wesdata.attributes.lower() %}["PTEC"]
1
{% altro %}
0
{% endif %}
Oltre alla lettura del Tic (teleinfo), il WES è in grado di monitorare anche i consumi di 4 linee elettriche distinte, mediante pinze amperometriche metriche. Potrai, ad esempio, monitorare il consumo del tuo scaldabagno, della stazione di ricarica dei tuoi veicoli elettrici, del riscaldamento, ecc. Dovrai utilizzare questo codice:
Morsetti metrici #Ampere per seguire determinate posizioni specifiche
wespince1inst:
friendly_name: "Scaldabagno istantaneo"
unique_id: wespince1inst
classe_dispositivo: corrente
unità_di_misura: 'A'
modello_valore: >-
["pince"] {{states.sensor.wesdata.attributes| galleggiante }}["I1"]
wespince1totale:
friendly_name: "Scaldabagno totale"
ID_unico: wespince1totale
classe_dispositivo: energia
unità_di_misura: 'kWh'
modello_valore: >-
["pince"] {{states.sensor.wesdata.attributes| galleggiante }}["INDEX1"]
wespince1watt:
friendly_name: "Consumo scaldabagno"
ID_unico: wespince1watt
classe_dispositivo: potenza
unità_di_misura: 'W'
modello_valore: >-
Di default il WES riporta solo il consumo istantaneo in Ampere e l'indice di consumo. Poiché volevo avere anche il consumo istantaneo in watt, ho aggiunto un piccolo calcolo per ottenere “wespince1watt”. Puoi modificare il “friendly_name” per utilizzare un nome corrispondente al tuo utilizzo. Se utilizzi le 4 pinze possibili, duplica semplicemente questo codice (te lo fornisco integralmente nel file da scaricare successivamente).
Il server WES dispone anche di contatori di impulsi, che possono essere utilizzati per diverse cose, come ad esempio il monitoraggio del consumo di acqua o gas. A casa il primo sensore viene utilizzato per tracciare il mio contatore dell'acqua:
#Sensori di impulsi, utilizzati ad esempio per acqua o gas
wespulse1:
friendly_name: "Contatore dell'acqua"
unique_id: wespulse1
classe_dispositivo: acqua
unità_di_misura: 'L'
modello_valore: >-
["impulsion"] {{states.sensor.wesdata.attributes| galleggiante }} ["INDEX1"]
A seconda dell'utilizzo, dovrai personalizzare il nome, ma anche la “classe_dispositivo” e l'”unità_di_misura”. Troverai una definizione di diversi valori possibili qui.
Altre informazioni possono essere recuperate, a seconda di cosa è connesso al WES. In particolare c'è la lettura della temperatura (fino a 30 sonde!) tramite questo codice:
#Sonde di temperatura, possibili fino a 30
wessonde1:
friendly_name: "Soggiorno"
unique_id: wessonde1
classe_dispositivo: temperatura
unità_di_misura: '°C'
modello_valore: >-
["temp"] {{states.sensor.wesdata.attributes| galleggiante }} ["SONDE1"]
Oppure lo stato dei relè:
#Relè
werelay1:
friendly_name: "Relè 1"
unique_id: wesrelai1
modello_valore: >-
["relais"] {{states.sensor.wesdata.attributes| galleggiante }} ["RELAIS1"]
werelay2:
friendly_name: "Relè 2"
unique_id: wesrelai2
modello_valore: >-
["relais"] {{states.sensor.wesdata.attributes| galleggiante }} ["RELAIS2"]
Abbiamo anche ingressi analogici, interruttori virtuali e persino variabili.
Troverai il codice completo in questo file, con il rientro corretto e commenti per aiutarti a orientarti.
Da adattare in base alle vostre esigenze, ovviamente. Da parte mia utilizzo solo i due misuratori TIC, le pinze da 4 ampere metriche e un misuratore di impulsi.
Una volta salvata la configurazione, dovrai andare su “Strumenti di sviluppo”, quindi fare clic su “Verifica configurazione” per assicurarti che non ci siano problemi nella sintassi del file.

Se tutto va bene, tutto ciò che devi fare è fare clic su Riavvia.
Una volta riavviato Home Assistant, se vai su Impostazioni/Dispositivi e servizi/Entità, digitando “wes” nella barra di ricerca, dovresti trovare tutti i sensori creati per il WES:

Da lì puoi utilizzarli per attivare scenari, creare dashboard di monitoraggio dei consumi, ecc.
MA non utilizzarli ancora nella dashboard Home Assistant Energy.
Integra WES nella tabella Energia di Home Assistant
La dashboard di Home Assistant Energy è davvero molto ben fatta. Ma accetta solo indici o contatori di consumo totale. Potremmo dire che questo è un bene per il WES, visto che abbiamo creato dei sensori per gli indici. Solo che per comparire nell'elenco dei dispositivi compatibili sulla dashboard Energia, questi sensori devono avere un argomento di tipo “state_class: total”. Se questo argomento può essere messo direttamente nella configurazione dei sensori MQTT, questo non è il caso dei sensori qui creati per WES, poiché siamo nell'ambito di chiamate REST e non MQTT.
Fortunatamente possiamo modificare la dichiarazione del sensore in un file personalizza.yaml, aggiungendo questo tipo di codice per ogni sensore che rappresenta il consumo totale:
sensore.westic1bleuhp:
classe_stato: totale
dispositivo:
identificatori: "Server WES"
nome: "Server WES"
modello: "WES"
produttore: "Cartelectronic"
Vi lascio il mio file completo qui:
Basta inserirlo nella directory homeassistant, quindi riavviare nuovamente Home Assistant (dopo aver verificato che il codice sia ok).
Potremo quindi finalmente aggiungere i nostri diversi indici al dashboard Energia, siano essi teleinfo, consumi, produzione, consumo di acqua, ecc.

Dopo un po' abbiamo il monitoraggio dei consumi, con i dettagli qui delle ore non di punta e di punta (in blu più chiaro). Monitoro anche la mia produzione fotovoltaica in giallo:

Allo stesso modo trovo il monitoraggio dei consumi del mio scaldabagno, tra gli altri dispositivi individuali:

Ed ecco qua!
Conclusione
Migrando gradualmente il mio sistema domotico su Home Assistant, ho passato molto tempo a cercare come integrare il mio server WES, perché a differenza di Jeedom, non dispone di un plug-in Home Assistant pronto all'uso. Se ne occupano diversi argomenti, tra cui:
- UN post sul forum del produttore WES, Cartelettronica
- UN post sul forum HACF
La documentazione di Home Assistant consente inoltre di comprendere meglio il funzionamento dei dispositivi. Sensori RIPOSO.
La compatibilità nativa MQTT avrebbe reso le cose molto più semplici, ma alla fine siamo riusciti a recuperare tutti i dati dal WES, perfettamente utilizzabili in Home Assistant, questa è la cosa principale. L'integrazione funziona per me da poco più di un mese ormai e nessun problema da segnalare. Posso usare il mio WES, che mi evita di dover moltiplicare i sensori, visto che gestisce molte cose in modo nativo. Se questa guida può aiutare qualcuno come me stava cercando come farlo!
[modulo content-egg=modello AE__domadoofr=personalizzato/compatto]