Adoperiamo il progetto della stazione meteo Wi-Fi con Pannello Solare per integrarlo in Home Assistant tramite ESPHome
Quasi 3 anni fa realizzammo un upgrade software ed energetico alla Stazione Meteo Wi-Fi che inviava notifiche tramite Telegram [LINK]. Ora è giunto il momento di riscrivere il codice per integrarla con ESPHome sulla piattaforma di Home Assistant, creando un’entità che mostri temperatura, pressione e umidità ed un’automazione che invii le rilevazioni al nostro smartphone su Telegram.
Componenti
Le componenti essenziali sono pressappoco le stesse del progetto precedente: una ESP8266 qualsiasi, ma per le dimensioni ridotte e per la antenna esterna abbiamo scelto una Wemos Pro, un sensore digitale BME280 (visto in questo articolo), una batteria da 3,7V (noi stiamo riciclando quella di un power bank tascabile), un pannello solare da 5V e 6W e il power manager Sunflower della DFRobot.
Ovviamente per i collegamenti ci serviranno alcuni cavi che salderemo ai pin, mentre per disporre esternamente la stazione meteo utilizzeremo una scatola di derivazione da 180 x 140 x 70 mm. Per assemblare il tutto abbiamo utilizzato una scheda forata su cui abbiamo saldato i pin header, su cui abbiamo poi saldato i cavi per i collegamenti. Per stabilizzare il tutto non sono mancate le fascette di plastica, le guaine termo restringenti e un tubo di plastica o in ferro con una leggera curvatura per fissare la stazione meteo e, infine, abbondante nastro biadesivo M3.
Lista componenti Amazon:
- Wemos Pro: https://amzn.to/3Tkch49
- BME280: https://amzn.to/42YZmbb
- Switch 3 PIN: https://amzn.to/3V5csBI
- Jumper: https://amzn.to/3uXNARW
- Pannello Solare 5V 6W: https://amzn.to/3Th9o49
- DFRoboto SunFlower: https://amzn.to/49S1HH4
- Batteria 3,7V: https://amzn.to/49GT9Dh
- Scatola di derivazione: https://amzn.to/3SZKsg9
Lista componenti Aliexpress:
- Wemos Pro: https://s.click.aliexpress.com/e/_DmfRRah
- BME280: https://s.click.aliexpress.com/e/_DmCEXmh
- Switch 3 PIN: https://s.click.aliexpress.com/e/_DElJg3P
- Jumper: https://s.click.aliexpress.com/e/_DCZH4y1
- Pannello Solare 5V 6W: https://s.click.aliexpress.com/e/_DmHayLr
- DFRoboto SunFlower: https://it.aliexpress.com/item/32868317593.html
- Batteria 3,7V: https://s.click.aliexpress.com/e/_DEjV3Nr
- Scatola di derivazione: https://s.click.aliexpress.com/e/_DdbZkxf
Collegamenti
Vediamo come effettuare i collegamenti per la nostra stazione meteo con Telegram. Ricordandovi che il BME280 utilizza l’interfaccia I2C, quindi i collegamenti sono estremamente semplici. Per collegare la ESP8266 al sensore BME280 abbiamo usato i pin D1 e D2 per connetterlo ai pin SCL e SDA del sensore.
Abbiamo poi connesso il pin digitale D0 al pin RST, collegamento necessario per permettere alla scheda di andare in Deep-Sleep e poi risvegliarsi. Tra questi due pin abbiamo saldato uno switch che chiude o apre il collegamento: sarà utile posizionarlo in aperto per caricare lo sketch, per poi posizionarlo in chiuso.
Adoperate la scheda forata per saldare ogni componente ai relativi cavi, isolandoli con delle guaine termorestringenti o con del nastro isolante. Per tenere formi i cavi arrivano al sensore abbiamo adoperato una guaina più grande.
I collegamenti elettrici sono anch’essi facili: il Sunflower richiede che la batteria sia collegata nell’apposito terminale a vite, rispettando la polarità, e stessa cosa per il pannello solare, che anch’esso va connesso ad un apposito terminale a vite. Nel lato destro del power manager troviamo il connettore USB OUT con uscita a 5V e 1A che adopereremo per alimentare il Wemos Pro; potete usare un cavo di alimentazione con connettore Micro-USB e collegare il power manager alla dev-board. Assicuratevi di montare il dissipatore passivo in dotazione nella parte posteriore del Sunflower.
Per assemblare tutto dovremmo levigare la base della scatola di derivazione, praticare un buco per inserire la scatola posta nel retro del pannello solare, poi fissare questo con del nastro biadesivo M3 o superiore al retro della scatola. Sigillate ogni fessura con del silicone, in modo da evitare infiltrazioni d’acqua quando piove.
Fissate ogni componenti con del biadesivo o della colla a caldo, cercando di disporre al meglio ogni parte. Praticate i fori con un avvitatore per l’antenna del Wemos Pro e per i fori con cui fissare la scatola di derivazione ad un supporto.
Predisposizione Telegram ed integrazione in Home Assistant
Procediamo ora creando un Bot di Telegram che ci comunicherà le informazioni rilevate dalla stazione meteo. Apriamo una chat con il BotFather, ossia un Bot che ci servirà per creare altri bot.
Per avviarlo scriviamo /start e poi premiamo Invio
Il BotFather ci risponderà che può aiutarci a creare un nuovo bot e per farlo digitiamo il comando /newbot.
Diamo un nome al nuovo Bot semplicemente digitandolo e dando poi Invio. Adesso toccherà dargli anche una username che lo renderà riconoscibile. Non sarà sempre facile perché molti nomi sono già utilizzati, quindi siate fantasiosi. L’importante è che finisca in Bot o _bot, come riportato nell’esempio.
Una volta che avremo trovato una username al nostro Bot, il BotFather ci comunicherà delle informazioni molto importanti che dovremmo tenere solo per noi e conservare gelosamente. La prima è il percorso per trovare il nostro Bot, l’altra è la API che ci servirà nel nostro codice.
Adesso che abbiamo l’API ci serve ricavare un’ultima informazione, ossia l’ID Utente o l’ID gruppo se vogliamo inserire il nostro Bot in un gruppo. Ricorreremo anche stavolta ad un altro Bot chiamato IDBot.
Avviamo una chat con IDBot e digitiamo il comando /getid e otterremo una serie di numeri che rappresentano il nostro ID, oppure inseriamolo nel gruppo con il bot della nostra stazione meteo e diamo il comando /getgroupid. L’ID che otterremo è anch’esso privato.
Andiamo su Home Assistant, apriamo il File editor e inseriamo nel file configuration.yaml le seguenti linee, ricordandoci di inserire la api_key, ovvero il token, ottenuto in precedenza e di indicare la chat_ids.
#Telegram Bot
telegram_bot:
- platform: polling
api_key: "xxxxxxxxxxxxxxxxxxxx"
allowed_chat_ids:
- xxxxxxxxxxx
Salviamo, andiamo su Strumenti per sviluppatori, verifichiamo la configurazione e, se tutto è andato bene, riavviamo Home Assistant.
ESPHome
Ora che il bot Telegram è configurato correttamente, andiamo a creare un nuovo device su ESPHome e chiamiamolo Stazione Meteo. Saltiamo per il momento la connessione e selezioniamo la scheda che dobbiamo programmare (ESP8622).
Una volta creato, clicchiamo su EDIT per modificare il codice. Dobbiamo inserire l’interfaccia con la quale la dev-board comunica con il sensore (i2c), il tipo di sensore adoperato e le variabili sulle quali caricare i dati ricavati. Indichiamo anche l’indirizzo del sensore. Abbiamo poi aggiunto un deep sleep, ossia mandiamo a dormire la scheda per circa un’ora dopo che è rimasta attiva per 30 secondi, leggendo i dati dal sensori e caricandoli su Home Assistant. La dev-board si riattiva dopo un’ora, ripete il ciclo di lettura e invio, poi ritorna in modalità di sonno profondo per risparmiare corrente. Infatti, adoperando un semplicissimo dispositivo per la lettura degli Ampere, passiamo da circa 75mA a 0A. In realtà, la scheda utilizza 0,179mA che non sono rilevabili dal dispositivo che stiamo utilizzando.
esphome:
name: stazione-meteo
friendly_name: Stazione Meteo
platform: ESP8266
board: d1_mini
logger:
api:
encryption:
key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
ota:
password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
i2c:
sda: GPIO4
scl: GPIO5
scan: True
sensor:
- platform: bme280_i2c
temperature:
name: "Temperatura"
oversampling: 16x
pressure:
name: "Pressione"
humidity:
name: "Umidità"
address: 0x76
deep_sleep:
run_duration: 30s
sleep_duration: 1h
Ricordatevi di lasciare il vostri dati relati all’OTA e all’API. Salvate e verificate con Validate se il codice è stato scritto correttamente. Potete ora installare il codice sulla vostra dev-board. Ci vorrà un po’ di tempo.
Conclusa l’installazione, integriamo il device su Home Assistant. Dovrebbe essere arrivata una notifica sulla plancia. In ogni caso, per integrarlo andate su Impostazioni -> Dispositivi e servizi e apparirà il dispositivo Stazione meteo da integrare. Autorizzate la configurazione ed otterrete quanto segue.
Automazione Telegram
Dobbiamo ora creare un’integrazione per inviare ogni ora un messaggio sulla chat che mostri temperatura, pressione e umidità rilevate dalla Stazione meteo. Muoviamoci su Home Assistant in Impostazioni -> Automazioni e scenari -> CREA AUTOMAZIONE. Scegli la voce crea una nuova automazione e, dal menu apribile in alto a destra dove ci sono i tre puntini, clicca su Modifica in YAML. Copia il codice che ripotiamo di seguito e salva.
alias: Stazione Meteo
description: ""
trigger:
- platform: time_pattern
minutes: "0"
condition: []
action:
- service: telegram_bot.send_message
data:
message: >-
Ciao, la Temperatura è di {{ states('sensor.stazione_meteo_temperatura')
}}°C, la Pressione è di {{ states('sensor.stazione_meteo_pressione') }}
hPa e l'Umidità è del {{ states('sensor.stazione_meteo_umidit') }}%
mode: single
Adesso, ogni volta che scatta un’ora, viene inviato un messaggio tramite Telegram sui vostri smartphone, aggiornandovi sulle condizioni meteo.