Script correzione temperatura valvole: funziona!

jacoscar
jacoscar ✭✭✭
modificato dicembre 2019 in Domande e commenti
Ho scritto un piccolo script in python che usa un termometro esterno e le API di Tado per correggere la temperatura misurata dalle valvole

Quello che fa è quello che l’assistenza Tado suggerisce, cioè modificare l’offset, però lo fa in maniera intelligente e dinamicamente (ogni 5 minuti) in modo che la valvola abbia sempre il valore corretto; in questo modo la stanza raggiunge la temperatura desiderata

Quindi con il mio script non conta quanto la valvola sia vicina al radiatore; a meno che non abbia uno scarto maggiore di 9 gradi (-9 è il massimo offset negativo applicabile)

Ho fatto una prova e impostato la temperatura a 16° (la temperatura iniziale era 13°); normalmente il radiatore si sarebbe acceso per una decina di minuti e poi spento e la stanza non avrebbe mai raggiunto la temperatura
Invece usando il mio script la temperatura sale di circa 1 grado ogni ora fino a raggiungere la temperatura desiderata

Ho un bel grafico che dimostra il funzionamento però non so come allegare un’immagine LOL
«134567

Commenti

  • Jacopo
    Jacopo
    modificato dicembre 2019


    Temperatura iniziale 13 gradi (alle 8:45AM, non visibile nel grafico)

    Temperatura target 16 gradi

  • Ottimo @jacoscar !

    Per chi è un po' meno tecnico di te, potresti condividere lo script e soprattutto spiegare come lo fai girare?

    Anche io sto seguendo sia il forum inglese sia questo per capire come risolvere il problema della vicinanza del sensore al calorifero e questa potrebbe essere l'unica soluzione fino a quando Tado non metterà in vendita dei sensori di temperatura.

    Grazie!

  • jacoscar
    jacoscar ✭✭✭
    modificato dicembre 2019
    Al momento sta girando sul mio laptop, ma lo metterò presto su una raspberry (dove ho già home assistant)

    Devo ancora fare qualche miglioramento prima di poterlo condividere

    Comunque ti serve:
    - un server dove fare girare lo script (questo può essere un pc, una raspberry o qualsiasi altra periferica connessa a internet in qualsiasi parte del mondo)
    - un sensore di temperatura connesso a internet accessibile tramite API, posto nella stessa stanza della valvola Tado (ovviamente a debita distanza dal radiatore!)

    Io uso come sensore un Sonoff Switch con firmware Tasmota collegato ad un sensore DHT22 (costo circa 15€)
    La connessione tramite API è resa disponibile grazie al fatto che è connesso ad Home Assistant (io lo uso su una Raspberry)



    Potrei anche scrivere una versione dello script che non usa il sensore di temperatura ma semplicemente applica un offset fisso quando il radiatore è acceso per poi rimuoverlo progressivamente man mano che si raffredda; sarebbe meno preciso, ma sempre meglio di niente e in questo caso non servirebbe nessun hardware aggiuntivo, basta un pc
  • Grazie @jacoscar

    Direi che se si sta investendo per automatizzare tutta la casa con centrale Raspberry ha senso, ma altrimenti al solo scopo di migliorare la gestione della temperatura di Tado forse è un investimento di tempo e denaro eccessivo?

    Magari la versione che usa il solo offset e che richiede di avere un pc o raspberry sempre acceso è più conveniente, anche se meno efficace.

    Certo che se Tado si decidesse a mettere in vendita un suo sensore a un cifra ragionevole... Guadagnerebbero un po' meno (visto che ora i clienti comprano altre teste o altri termostati) ma non perderebbero tutti quei clienti che oggi abbandonano Tado e passano ad altro sistema a causa di questo problema.

  • Anche secondo me guadagnerebbero; scommetto che sono più quelli che rivendono le valvole Tado piuttosto che raddoppiare l’investimento comprando altri termostati solo per misurare la temperatura

    Appena ho tempo, modifico lo script per funzionare anche senza termometro esterno...
  • Ho installato anche io Python sul laptop e provato ad accedere al mio Tado. Funziona tutto al primo colpo.

    Mi mancano però delle librerie Python complete per accedere a tutte le API. Ad esempio non so come settare l'offset. @jacoscar ti posso chiedere quali librerie usi tu?

  • Io uso "requests" che serve per chiamare le API


    Per l'offset ti serve il Token (che scade ogni 10 minuti) e il seriale del dispositivo Tado (il mio inizia con VA...)

    SERIAL = ILSERIALDELTUOTADODEVICE
    NEW_OFFSET=-2 #o quello che vuoi
    data = ("{\"celsius\":"+str(NEW_OFFSET)+"}")
    headers = {
        'Authorization': 'Bearer ILTUOTOKEN,
        'Content-Type': 'application/json;charset=utf-8',
    }
    
    url="https://my.tado.com/api/v2/devices/"+SERIAL+"/temperatureOffset"
    response = requests.put(url=url, headers=headers, data=data)
    


  • Dove posso trovare documentazione per le API tado?

    anche io ho Home Assistant (hassio) sto però lavorando per sostituire auto-assist non solo per evitare l'abbonamento ma per avere un controllo dei preset migliore: per esempio accendi il riscaldamento prima della sveglia o abbassa il riscaldamento quando tutti sono a letto o tutti fuori casa, volendo anche: spegni il riscaldamento per punizione se non hai fatto 11.000 passi.

    per questi casi non dovrebbe servire smanettare con le API ma per cultura vorrei dare un occhiata, io conosco solo questo:

    https://shkspr.mobi/blog/2019/02/tado-api-guide-updated-for-2019/

    ma è incompleto.. credo si possano creare preset (Sleeping, homeworking, etc) oltre ai canonici Away e Home.

    MArco

  • per quanto ne so, non puoi cambiare la modalità home/away, nemmeno con le API

  • in realtà si, posso sicuramente cambiare la modalità:

    Programmato, Acceso (manuale), Spento...

    per Away si dovrebbe poter fare via API (se lo fa la loro webapp devo poterlo fare anche io) ma effettivamente ho qualche problema, non trovo documentazione.

  • Si ma su "programmato" si baserà sempre sulla tua posizione; il quadrato con la scritta "Home" o "Away" nella schermata principale dell'app non puoi cambiarla

    Se vuoi ignorarla devi andare nella impostazioni avanzate di ogni fascia oraria e disattivare la localizzazione, o non dare all'app il consenso per la localizzazione (su nessun dispositivo); poi con Home Assistant puoi fare quello che vuoi ma è la TUA logica Home/Away (non quella di Tado)

  • si infatti.. l’idea è quella di ignorare la localizzazione Tado e fare qualcosa di più furbo con home assistant.. ma siamo OT

  • @Jacopo2 se vuoi sono disponibile a collaborare per il debug e l'ottimizzazione del tuo script, anche io mi sono messo su un HA su Raspberry quasi solo per migliorare la gestione di tado...

    Buone feste 🎅

  • Ciao, onestamente mi sono preso una raspberry per fare un po’ Di log usando un Sonoff con sensore di temperatura e firmware tasmota. Vi chiederei se mi date qualche suggerimento per lhome assistant, così inizio a fare qualche prova e vedo di remotare le valovole. Stasera inizio a leggermi le Api di Tado, se volete possiamo condividere i progressi con gli script.

  • Jacopo2
    Jacopo2 ✭✭✭
    modificato gennaio 2020

    questo è lo script Python che sto usando

    https://www.dropbox.com/transfer/AAAAAHuGU5sggEYRrtbyXlVmjHURNWm8Rkxr2jL9NsydCY8gVFgikDs

    ho rimosso i miei dati personali (user, password, token hassio etc)

  • Posso chiedervi se avete "flashato" voi il firmware Tasmota oppure se avete trovato il Sonoff già pronto? Nel secondo caso, dove?

  • Jacopo2
    Jacopo2 ✭✭✭
    Io l’ho flashato da me ma sicuramente su ebay c’è chi lo vende già flashato
  • io ho preso un approccio diverso e sto facendo tutto da Home Assistant senza scrivere una riga di codice,

    uso l'integrazione nativa HA per Tado e il sensore Proximity con cui ho massimo controllo: distanza da casa, direzione (arrived, towards, away_from, etc) per tutti i componenti della famiglia senza dover installare a tutti l'app Tado.

    con Climate Group e Button Card ho configurato questa interfaccia:

    i pulsanti sopra sono preset che posso usare a mano a attraverso automatismi:

    Rimane un problema che devo ancora risolvere: per fare l'away abbasso tutte le temperature dei 3 termostati e delle due valvole non essendoci una API specifica, il sistema lo vede come un settaggio manuale. dato che i vari device tado sono configurati per uscire da manuale quando cambia la programmazione puo' succedere che in Away qualche termostato torna in Programmato anche se sono fuori casa. esiste una API per settare temperatura sovrascrivendo il comportamento programmato per la durata, potrei usare quella oppure lo script di Jacopo, appena ho un po di tempo sistemo.

    disponibile a condividere per chi ha Home assistant o per dare una mano a chi vuole implementarlo.

    MArco

  • Jacopo2
    Jacopo2 ✭✭✭
    Ma l’integrazione di Tado per HA non ha opzioni per settare l’offset, giusto?

    Se lo avesse sarebbe tutto più facile; potremmo usare semplici automazioni invece di complicati script
  • fra290
    fra290
    modificato gennaio 2020

    Hai ragione non ha possibilità di settare offset tantomeno nella modalità' che hai fatto tu e non gestisce sensori di temperatura esterni,

    io al momento non ne sento l'esigenza dei sensori esterni, ho radiatori in alluminio non coperti, stanze piuttosto piccole e le valvole montate sotto, forse in quella configurazione funzionano bene, riesco a cavarmela con l'offset di serie.

    comunque quando monterò sensori di temperatura in ogni stanza prevedo di usare il tuo script.

    sarebbe comunque molto interessante sviluppare un integrazione HA per Tado con tutte le funzionalità' che stiamo facendo:

    • Offset Smart con possibilità' di leggere sensori temperatura esterni
    • Modalità Away Smart con settaggio manuale
    • Possibilità di creare più preset
    • Possibilità di gestire "finestre aperte" con sensori fisici

    Magari partendo dal tuo ottimo script python che in realtà potrebbe funzionare anche fuori da HA... alla fine le funzioni che tutti chiedono sono poi quelle e non siamo lontano da realizzarle tutte.

  • Io ho appena acquistato un Raspberry PI 4 e un Sonoff con sensore di temperatura. Non appena mi arrivano, voglio provare a giocare con l'offset in maniera dinamica come suggerisce @jacoscarJacopo. Se riuscirò a farlo funzionare, acquisterò altri Sonoff per creare sensori di temperatura per ogni stanza. Purtroppo a casa mia il divario tra la temperatura misurato dalle teste termostatiche Tado e la temperatura reale è elevato.

  • fra290
    fra290
    modificato gennaio 2020

    se non hai gia' un sistema per la domotica penso sia un ottima soluzione.

  • Sì, l'idea è poi di collegare tutti gli apparati che man mano installerò.

    Mi permetterò di farvi qualche domanda qui se non riesco a capire come farlo funzionare.

  • @FilTax Potresti indicarmi che sensore Sonoff hai acquistato? Grazie
  • Io ho comprato un Sonoff TH16, con relativo sensore di temperatura incluso. E ho comprato il dongle USB per potere installare il firmware Tasmota.

    Ieri sera ho eseguito tutto il processo per l'aggiornamento del firmware e con mia sorpresa ha funzionato.

    Stasera se ho tempo provo ad attivarlo e interrogarlo da pc per ottenere la misurazione di temperatura.

  • @FilTax scusami ma non sono troppo esperto di questi dispositivi. Hai utilizzato una guida? Dove posso formarmi? Grazie

  • Figurati, nemmeno io sono esperto.

    Per l'aggiornamento del firmware del Sonoff ho seguito pedissequamente questa guida: https://indomus.it/guide/riprogrammare-un-itead-sonoff-th-16-th-10-usando-firmware-tasmota/

    Il Sonoff ora è configurato correttamente con il firmware Tasmota ed è comandabile dalla pagina web che espone.

    Ieri sera ho fatto i primi esperimenti per la lettura del valore di temperatura da codice Python (che sarà poi la mia scelta per il software che deve aggiornare l'offset sulle valvole Tado), ma ho avuto poco tempo e non sono ancora riuscito ad avere successo.

    Sarei molto contento di condividere gli sforzi in questo ambito, quindi ben venga se ci sono altri che vogliono intraprendere la stessa strada.

  • Jacopo2
    Jacopo2 ✭✭✭
    @FilTax sei riuscito a leggere il valore della temperatura del Sonoff da python o hai fatto come me che ho usato le API di Home Assistant?
  • Il mio obiettivo è leggere direttamente da Python. Ieri sera ho perso tempo nel tentativo di usare l'accesso MQTT, installando un broker e poi creando un client in Python. Poi ho scoperto che dovrei potere interrogare il Sonoff direttamente in http da Python e oggi provo a vedere se ci riesco.

    Meno "cose" devo installare e usare, meno problemi dovrò gestire... Quindi sto cercando di capire se riesco a fare tutto da Python.

  • Ok, ci sono riuscito: con un piccolo script Python riesco a leggere il valore di temperatura del Sonoff "tasmotizzato" tramite lettura http e uso il valore direttamente per modificare il valore di offset per la stanza in cui ho installato il Sonoff tramite le API di Tado, cui accedo grazie a una libreria Python che ho scaricato da Github e cui ho aggiunto due funzioni per leggere e scrivere rispettivamente l'offset.

    Dunque non ho bisogno di HassIO o altri sistemi, basta eseguire lo script in Python.