Script correzione temperatura valvole: funziona!

12467

Commenti

  • FilTax
    FilTax ✭✭
    modificato aprile 2020

    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.

  • 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.

  • ziki
    ziki ✭✭
    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 :)
  • Jacopo2
    Jacopo2 ✭✭✭

    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

  • Ciao @Jacopo2 , non è che potresti aiutarci con una guida per implementare la tua soluzione? Una cosa per neofiti tipo cosa acquistare e dove e i passi per configurare il tutto. Faresti una grande opera di bene :)

  • Jacopo2
    Jacopo2 ✭✭✭

    @Nowarx

    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

  • @Jacopo2 , grazie!

    Ci provo, nel caso avessi difficoltà posso disturbarti?

  • @Jacopo2 , ma se ti pagassi il disturbo e tutti i costi necessari non è che mi aiuteresti a procurarmi i sonoff con il sensore ed il firmware tasmota? sono scarsissimo e mi sento piuttosto spaesato :(

  • Nowarx
    Nowarx
    modificato maggio 2020

    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.

  • Jacopo2
    Jacopo2 ✭✭✭
    L’integrazione per Tado non serve per il nostro scopo
    Adesso devi comprare e configurare un sensore di temperatura
  • 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 :)

  • Update: il sensore Xiaomi Aqara viene letto correttamente :)

    Aggiungo che l'ho collegato tramite un Gateway Xiaomi.

  • Jacopo2
    Jacopo2 ✭✭✭

    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)

  • @Jacopo2 , grazie! la riga per le API è senza argomento? (quella da aggiungere nel configuration.yaml)

  • Jacopo2
    Jacopo2 ✭✭✭
    Si esatto solo
    api:
  • Nowarx
    Nowarx
    modificato maggio 2020

    edit: FIXED usando lo yaml validtor :)

  • Jacopo2
    Jacopo2 ✭✭✭

    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


  • @Jacopo2 ,

    giusto due chiarimenti:


    1) name: TadoOffset_blablabla questo nome va impostato da qualche altra parte?

    2) Come faccio ad associare ad ogni singola TADO un sensore dedicato? Devo creare tanti script quante sono le associazioni?


    Grazie mille!

  • Jacopo2
    Jacopo2 ✭✭✭

    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)

  • Jacopo2
    Jacopo2 ✭✭✭
    modificato maggio 2020

    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!

    https://community.tado.com/en-gb/discussion/4325/disable-trv-calibration-when-offset-is-changed-required-for-using-external-sensor#latest

  • 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

  • Jacopo2
    Jacopo2 ✭✭✭

    @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)

  • 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

  • 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?

  • Jacopo2
    Jacopo2 ✭✭✭
    Puoi postare le ultime 10-20 righe dello script Tado_Script_Sala.py?
  • 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)

  • Jacopo2
    Jacopo2 ✭✭✭

    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?

  • Ok, ma lo sono


  • Scusa, e come entità vedo questo


    L'entità però è nella lista di quelle disponibili

  • Jacopo2
    Jacopo2 ✭✭✭

    prima di "- platform: command line"

    hai "sensor:" ?