Script correzione temperatura valvole: funziona!
Commenti
-
Quello che non va qua è che dopo aver speso centinaia e centinaia di euro uno si debba comprare un raspberry, un sensore di terze parti e scriversi uno script per avere delle valvole "intelligenti" che funzionino come si deve....
@ziki Su questo sono d'accordo con te. Però al momento non ho trovato nessun concorrente di Tado che abbia dei sensori esterni alla valvola in catalogo. E quindi ho pensato di seguire l'idea di Jacopo e di fare da me, anche se in maniera leggermente diversa da lui. Il vantaggio aggiuntivo che si può ottenere è di centralizzare tutte le funzioni domotiche di casa dentro al Raspberry (con Home Assistant, per esempio), con il contributo del sistema Tado e di altri che controllano altri dispositivi in casa.
Ovviamente se esistesse un produttore che mette a catalogo anche sensori separati dalle valvole, farei un pensierino di passare al nuovo prodotto. Se li producesse Tado, sarei ancora più contento, perché risparmierei dei soldi.
0 -
Oltre al fatto che questo trucco, che implica l'utilizzo di un sensore esterno sicuramente wifi, ti vincola ad avere la rete wifi sempre aperta, cosa che grazie al Bridge eth con il solo Tado non servirebbe.
Non so cosa intendi con "aperta", la mia rete WiFi è protetta da password (abito in condominio), ma ovviamente è visibile perché oltre a computer, tablet e cellulari, sono collegate la Playstation, le televisioni e quant'altro, e persino il frigorifero (cosa abbastanza inutile, d'accordo). Il problema del WiFi è il minimo, se mi posso permettere. Se volessi potrei nasconderla, perché comunque il nome della rete è cablato nel firmware dei sensori.
0 -
Intendo accesa...almeno a casa se posso non mi dispiacerebbe starmene wifi free (visto dove abito, in casa vedrei praticamente solo la mia rete wifi), dato che ormai gli smartphone hanno tutti i giga che gli servono in 4G, l'accenderei alla bisogna (tipo uso del PC o firestick nel mio caso).
Il problema cybersecurity dove sto io non si propone proprio :)0 -
Visto che in molti me lo hanno chiesto, eccovi qua lo script
Dovete mettere username e password Tado in alto, il numero della zona che volete modificare e il nome del sensore che avete installato in Home Assistant (per il quale serve il suo ip e il suo token)
Sicuramente con qualche modifica potete farlo funzionare senza home assistant
1 -
La mia configurazione è :
Raspberry PI 3 B+ con Hass.io (Home Assistant), ma può essere installato anche su Windows se non sbaglio
Sonoff switch (6 €) con firmware Tasmota e sensore di temperatura DHT22 (4€)
Credo che puoi installare Home assistant sul pc senza dover comprare una raspberry, quindi basterebbe solo comprare il sensore (che può essere quello che ho detto io oppure altri)
Una volta che hai fatto funzionare queste cose insieme, far girare il mio script è un gioco da ragazzi
1 -
Ok, sono arrivato ad aver fatto questi passaggi:
1) Home Assistant su PC (poi migrerò su Raspy): OK
2) Integrazione con TADO (super easy): OK
Ora sto brancolando per capire come si faccia ad integrare il tuo script, @Jacopo2.
Ok, oltre al brancolare per l'integrazione sono davvero in difficoltà per i parametri. Sob, che pippa.
0 -
L’integrazione per Tado non serve per il nostro scopo
Adesso devi comprare e configurare un sensore di temperatura1 -
Grazie @Jacopo2 .
Spulciando ho trovato questo sensore di Xiaomi, che dovrebbe essere wireless:
Secondo te sarebbe fattibile usarlo per il tuo sistema?
Oggi ho installato HA su un PI3, ora vedo di avviarlo e configurarlo.
Grazie ancora, il tuo lavoro mi ha stimolato la curiosità per l'argomento e dato fiducia per l'impianto :)
0 -
Update: il sensore Xiaomi Aqara viene letto correttamente :)
Aggiungo che l'ho collegato tramite un Gateway Xiaomi.
0 -
Perfetto! Sei stato velocissimo, a questo punto devi solo copiare il mio script nella cartella /config
Configurare username, password, numero della stanza (guarda qua https://my.tado.com/webapp/#/home/zone/1) e il nome del sensore che Home Assistant ha assegnato al tuo Xiaomi Aqara
poi in configuration.yaml devi aggiungere questa linea per attivare le API
api:
e questo per avere far girare lo script
sensor:
- platform: command_line
name: TadoOffset
command: 'python3 /config/nome_dello_script.py'
value_template: "{{value_json.offset}}"
scan_interval: 180
fatto questo e riavviato HA, devi generare l'access token e copiarlo nello script (mi sono scordato come si fa ma sicuramente trovi la risposta su google)
1 -
Si esatto solo
api:0 -
edit: FIXED usando lo yaml validtor :)
0 -
Usa questo script per Home Assistant, quello che ho caricato ieri era fatto per funzionare su windows e stampava a schermo mano a mano quello che faceva
Questo script è fatto per funzionare con il command line sensor; in info message puoi avere 3 diversi messaggi:
- just updated = il valore è stato aggiornato nell'ultimo ciclo
- no change = il valore non è stato aggiornato nell'ultimo ciclo perché la differenza era meno di 0.5 gradi (o il valore che hai impostato)
- error = errore nello script
e modifica configuration.yaml così
- platform: command_line
name: TadoOffset_blablabla
command: 'python3 /config/Tado_script.py'
value_template: "{{value_json.offset}}"
json_attributes:
- info_message
unit_of_measurement: '°C'
scan_interval: 180
0 -
1) no, quello è il nome con cui comparirà nella panoramica quindi è ininfluente
2) per ogni Tado devi creare una copia dello script e duplicare le linee di codice in configuration.yaml (con un nome diverso)
1 -
Ecco una soluzione simile creata da un utente di questo forum
https://github.com/jon-riches/ESP32_TTGO-DISPLAY_TADO
L'ho provato e va alla grande, ideale per chi non ha voglia di controllare tutto centralmente con una Raspberry (e forse anche per tutti gli altri)
Tutto quello di cui si necessita sono i componenti in foto (tranne la monetina da 1€), nel senso che il TTGO ha il WiFi e si occupa da solo di connettersi ai server di Tado e aggiornare l'offset
Costo totale sui 10€ (escludendo cavo USB-C e trasformatore da muro)
Per rendere questi progetti ancora più utili c'è bisogno di una piccola correzione da parte di Tado:
disabilitare la inutile calibrazione della valvola ogni volta che si aggiorna l'offset (per questo il mio script fa l'update solo se l’offset richiesto è cambiato di più di 0.5 gradi); potete votarla qua sotto!
1 -
Buongiorno, sono nuovo sul forum, ma ho tado a casa da 3 anni.
Da diverso tempo cercavo il modo di regolare automaticamente l'offset di temperatura, perché a parte il fatto che la rileva diversamente a calorifero acceso o spento, anche la posizione del calorifero rispetto alla stanza genera delle differenze di lettura importanti.
Il meglio che avevo trovato fino ad ora era usare una valvola tado in più come termometro, messa in una posizione lontana dal calorifero, ma mi è sempre sembrata una soluzione orribile e mi sono rifiutato di comprare valvole in più a questo scopo.
Uso Home Assistant da circa un mese e sto integrando diverse cose che ho in casa.
Sono capitato su questa discussione per caso e sono davvero molto interessato a realizzare questa automazione.
Guada caso sto anche cercando un sensore di temperatura da implementare in tutte le stanza.
Ho visto Xiaomi Aquara:
che è la versione 2 con il gateway versione 2, che non trovo sul sito dei prodotti compatibili home assistant, ma è compatibile con Homekit e quindi dovrebbe esserlo anche con home assistant tramite l'apposita integrazione.
Qualcuno lo ha provato?
Il sensore versione 1 va con il gateway nuovo?
Lo chiedo perché ho trovato in vendita anche il sensore V1, ma il gateway no.
Poi una domanda sullo script, basta avere un sensore temperatura in home assitant per la calibrazione e basta? o il sensore deve avere qualche particolare specifica?
Grazie 1000
0 -
@paolo83 il mio script gira su Home Assistant e l'unico requisito è che tu abbia configurato il sensore su Home Assistant
Non ho provato lo Xiaomi, ma sono curioso di sapere come va
Ho provato lo Shelly H&T (che però ha il problema che essendo alimentato a batteria rileva solo variazioni di 1 grado, se si alimenta tramite usb si può scendere a 0.5 gradi)
I migliori risultati li ho ottenuti con sensori DHT22 collegati a un qualsiasi dispositivo flashabile tipo Sonoff o Arduino vari (e in questi casi vi si può addirittura far girare lo script di cui ho parlato più sopra, non il mio)
0 -
Grazie per la risposta, in realtà ho notato che il sensore Xiaomi Mi
https://it.gearbest.com/living-appliances/pp_344665.htmlù
Quindi non la serie Aquara, è supportato da deCONZ ufficialmente:
https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Supported-Devices
e può essere integrato tramite un bridge ZigBee tipo la chiavetta ConBee (molto più economica dell'HUB Xiaomi) come da questa guida che ho trovato sul web:
Provo questa soluzione e ti faccio sapere
0 -
Ciao, sto provando ad integrare lo script.
Ho recuperato i dati necessari e configurato il tutto, guardando dall'app tado mi sembra di notare che l'offset venga cambiato durante la giornata, quindi direi che sta funzionando, tuttavia quando provo a vedere lo storico su Home Assistant mi dice che non ci sono records.
Su Home Assistant ho implementato lo script come:
sensor:
- platform: command_line
name: TadoOffset_Sala
command: 'python3 /config/Tado_script_Sala.py'
value_template: "{{value_json.offset}}"
json_attributes:
- info_message
unit_of_measurement: '°C'
scan_interval: 180
E sul grafico hp implementato come da immagine
C'è qualche cosa che mi sono perso?
0 -
Puoi postare le ultime 10-20 righe dello script Tado_Script_Sala.py?0
-
Certo:
# GET THE CURRENT TEMPERATURE
##print('Getting current temperature...')
url_Temp = "https://my.tado.com/api/v2/homes/" + str(HOMEID) + "/zones/"+ str(ZONE[i]) +"/state"
response_TEMP = requests.get(url=url_Temp, headers=headers_TOKEN)
TEMPERATURE = response_TEMP.json().get("sensorDataPoints").get("insideTemperature").get("celsius")
##print(TEMPERATURE)
#GET CURRENT OFFSET
##print('Getting current offset...')
url_offset="https://my.tado.com/api/v2/devices/"+SERIAL+"/temperatureOffset"
response_OFFSET = requests.get(url=url_offset, headers=headers_TOKEN)
OFFSET=response_OFFSET.json().get("celsius")
##print(OFFSET)
#UPDATE OFFSET
##print('Updating Offset')
NEW_OFFSET=float(OFFSET)-float(TEMPERATURE)+float(REAL_TEMPERATURE)
if NEW_OFFSET>8: # +-8 is the maximum offset accepted by Tado
NEW_OFFSET=8
if NEW_OFFSET<-8:
NEW_OFFSET=-8
data = ("{\"celsius\":"+str(NEW_OFFSET)+"}")
##print('new required offset:', NEW_OFFSET)
##print('difference in offset:', NEW_OFFSET-OFFSET)
if abs(NEW_OFFSET-OFFSET)>OFFSET_ERROR:
response = requests.put(url=url_offset, headers=headers_TOKEN, data=data)
##print(response)
info='Just Updated'
else:
info='No Change'
except:
info='Error'
object = {
'offset': NEW_OFFSET,
'info_message': info,
}
json_dump = json.dumps(object)
print(json_dump)
0 -
Sembra tutto giusto, controlla gli spazi in configuration.yaml devono essere come nella foto
Se provi ad aggiungerlo alla panoramica come semplice sensore cosa vedi?
0 -
Ok, ma lo sono
0 -
Scusa, e come entità vedo questo
L'entità però è nella lista di quelle disponibili
0 -
prima di "- platform: command line"
hai "sensor:" ?
0