Home » Pompa di calore » Daikin HPSU Compact » Hack » Daikin HPSU Compact hack con Raspberry Pi e PiCAN2: terza parte

Daikin HPSU Compact hack con Raspberry Pi e PiCAN2: terza parte

Rotex HPSU Compact hack con Raspberry Pi e PiCAN2: terza parte

Se avete letto (e realizzato) le due puntate precedenti che spiegano, grazie ad un Raspberry Pi ed alla scheda PiCAN2, come hackerare la vostra pompa di calore Daikin HPSU Compact:

Daikin HPSU Compact hack: prima parte

Daikin HPSU Compact hack: seconda parte

siete pronti per completare un sistema di monitoraggio avanzato della vostra pompa di calore.

L’obiettivo e’ quello di poter pubblicare su un servizio in cloud i dati rilevati dai contatori interni della pompa di calore Daikin onde farne analisi in tempo reale e su base storica.

Successivamente, ma vi rimando al prossimo inverno, saremo anche in grado di controllare in modo automatico la pompa di calore.

Se pensi di aver trovato un approccio troppo complesso, ti invito a leggere in alternativa fin dove mi sono spinto in termini di ottimizzazione del riscaldamento sulla mia pompa di calore Daikin HPSU Compact con un approccio tradizionale in Pompa di calore Daikin HPSU Compact: curva climatica inversa a 4 scorrimenti.

Raspberry Pi + PiCAN2: raccolta e pubblicazione dati

Questo e’ il fulcro software del sistema e ringrazio ancora una volta zanac per la sua realizzazione ho solamente supportato in minima parte.

Ricordo che le componenti hardware sono un Raspberry Pi ed una scheda PiCAN2:

Un prerequisito è l’installazione del package pyserial su Python:

pip3 install pyserial

Al momento non c’e’ ancora un procedura di installazione consolidata, per cui occorre andare sul progetto in GitHub e scaricare ed installare il tutto:

https://github.com/zanac/pyHPSU

Non dimenticate anche di creare la directory /etc/pyHPSU/ ed installarci i i vari file di configurazione presenti:

commands_hpsu.csv
commands_hpsu_EN.csv
commands_hpsu_IT.csv
EMONCMS.ini

Nella versione corrente la sintassi di utilizzo è la seguente:

pyHPSU.py -d DRIVER -c COMMAND
 -d – driver driver name: [ELM327, PYCAN, EMU, HPSUD]
 -p – port port (eg COM or /dev/tty*, only for ELM327 driver)
 -o – output_type output type: [JSON, CSV, CLOUD] default JSON
 -c – cmd command: [see commands domain]
 -v – verbose verbosity: [1, 2] default 1
 -u – upload upload on cloud: [_PLUGIN_]
 -l – language set the language to use [EN IT DE]
 -g – log set the log to file [_filename]

Con un esempio di utilizzo pratico si vede che e’ alquanto semplice:

python3 /home/pi/pyHPSU-master/pyHPSU.py -d PYCAN -c t_hc_set -c t_dhw_set -c t_ext -c t_outdoor_ot1 -c ta2 -o CLOUD -u EMONCMS -g /home/pi/hpsu.medium.log -v 1

[Notate la sintassi estesa che ho utilizzato includendolo in uno script]

  • -d PYCAN: specifica il driver per la librieria Python CAN (quella utilizzata con la scheda PiCAN2)
  • -c t_hc_set -c t_dhw_set -c t_ext -c t_outdoor_ot1 -c ta2: e’ l’elenco di variabili prelevate dalla HPSU con l’invocazione del comando (utilizzando i nomi definiti nel vocabolario applicativo)
  • -o CLOUD -u EMONCMS: specifica di pubblicare contestualmente in cloud spendendo verso emoncms.org
  • -g /home/pi/hpsu.medium.log -v 1: specifica un file di log con verbosità alta

Il tutto e’ basato su un file di configurazione di sintassi alquanto chiara ed auto-esplicativa:

[config]
 apikey=YOUR-API-KEY-HERE
 [node]
node_30=t_hs,t_hc,flow_rate,t_return,mode,t_ext,t_hc_set,bpv,posmix,t_dhw,t_dhw_set,t_v1,t_dhw1,t_vbh,t_r1,tliq2,tdhw2,ehs,qboh,qchhp,qch,qwp,qdhw,pump,ta2,t_outdoor_ot1,t_dhw_setpoint1,hyst_hp

Ricordate anche di inserire la vostra chiave in lettura e scrittura per le API di emoncms.org nel file di configurazione EMONCMS.ini.

Al fine di non perturbare troppo il sistema e dati i limiti di frequenza di pubblicazione su emoncms, ho creato tre timer + servizio + shell script da installare in systemctl che catturano e pubblicano i dati con frequenza differenti:

Metriche Daikin HPSU Compact

Direi che questa parte, superate le complessità tecniche di installazione e configurazione software di Raspberry Pi e PiCAN2, e’ stata quella più lunga in termini di tempo soprattutto perché la documentazione Daikin non e’ spesso chiara/completa.

L’esito e’ stata la selezione di un set di parametri che si sono rivelati affidabili ed associabili facilmente allo schema di funzionamento della pompa di calore Daikin HPSU Compact:

Pompa di calore Rotex HPSU Compact hack: terza parte
Pompa di calore Rotex HPSU Compact hack: terza parte
DISPLAYVOCABOLARIOSCHEMADESCRIZIONEUnità
Flusso Volumetricoflow_rateV1Portata flusso circolazione acqual/h
Pos Mixposmix3UV DHWPosizione valvola 3 vie 3UV DHW%
BPVbpv3UBV1Posizione valvola 3 vie 3UV B1%
T-GDCt_v1tV1Temperatura di mandata scambiatore a piastre°C
T-ACSt_dhw1tDHW1Temperatura bollitore acqua calda°C
T.Circ.Risc.t_vbhtV,BHTemperatura mandata pavimento o uscita bollitore°C
T-ritornot_r1tR1Temperatura di ritorno°C
PumppumppumpVelocità pompa di circolazione acqua%
EHSehsehsPotenza backup-heaterkW

Oppure la visualizzazione della modalità di funzionamento / set-point impostati correntemente sul sistema:

DISPLAYVOCABOLARIODESCRIZIONEUnità
ModemodeModalità attuale pompa di caloreRiscaldamento, Raffrescamento,
Produzione ACS, Sbrinamento
T.Circ.Risc.Nom.t_hc_setTemperatura nominale mandata riscaldamento°C
T-ACS Nom.t_dhw_setTemperatura nominale bollitore acqua calda°C

Calibrazione sensori di temperatura

Al fine di garantire misure il più possibile affidabili, in particolare quelle di potenza ed energia, e’ necessario effettuare una taratura delle misure dei sensori “fisici” di temperatura. Questo serve a garantire che calcolando delle differenze di temperatura si siano rimossi/minimizzati gli errori di misura dei sensori veri e propri.

Per quanto sia le componenti hardware Raspberry Pi e PiCAN2 che quelle software garantiscano di collezionare i dati digitali presenti sul CAN-Bus della pompa di calore Daikin HPSU Compact, l’esperienza pratica di tutti i possessori di questa pompa di calore ci dice che le misure di temperatura presenti non si “parlano” mai (in particolare i famigerati T-GDCT.Circ.Risc.).

La procedura di calibrazione che ho seguito e’ alquanto semplice:

  • ho messo la pompa di calore in condizioni di riscaldamento ma con una temperatura di mandata nominale estremamente bassa: il risultato e’ che la pompa di circolazione gira (al massimo valore possibile) mentre il compressore esterno rimane spento
  • in questa condizione, osservando lo schema interno di funzionamento, dopo un certo numero di ore in cui il sistema stabilizza qualsiasi transitorio deve essere necessariamente tV1 = tV,BH = tR1 (o in altri termini T-GDC = T.Circ.Risc. = T-Ritorno)
  • Scegliendo come valore corretto quello mediano, otteniamo gli off-set da applicare alle singole misure per “normalizzare” il valore a quello più corretto (statisticamente parlando)
  • Questo ci assicura che nel calcolo delle potenze abbiamo rimosso totalmente l’errore dovuto alla tolleranza dei sensori di temperatura
  • Non siamo ovviamente “protetti” dagli errori associati a non linearità dei sensori (differenze che variano al variare della temperatura) e dalla risoluzione della misura stessa

Nella pratica del mio esemplare di pompa di calore Daikin HPSU Compact posso dire che:

  • la calibrazione e’ perfettamente affidabile per le temperatura tipiche del riscaldamento (intorno ai 30 °C)
  • si evidenziano delle non linearità (quindi differenze) per le temperature tipiche della produzione di ACS (intorno ai 50 °C)
  • ho preferito la perfetta calibrazione in riscaldamento poiché e’ di gran lunga la condizione di funzionamento in cui viene prodotta più energia termica nel corso dell’anno

Calcolo di potenza/energia termica e COP

Oltre ad apprezzare il funzionamento in tempo reale, siamo ora in grado di calcolare le metriche più interessanti per verificare l’efficienza del funzionamento della nostra pompa di calore Daikin HPSU Compact.

La formula di base per poter calcolare la potenza termica scambiata da un circuito qualsiasi in cui circola acqua e’ la seguente:

P termica ( W) = 1,163 * Portata (l/h) * ΔT ( °C)

Questa formula può essere applicata ai vari elementi del nostro impianto, ma occorre porre attenzione alla presenza delle valvole a 3 vie che cambiano la configurazione idraulica, in particolare durante le fasi transitorie. In questo senso lo sbrinamento e’ la fase più complessa in termini di “attribuzione” dei vari flussi termici.

La misura della potenza/ energia termica netta che transita sullo scambiatore a piastre e’ quella più precisa in assoluto perché non soffre dei vari stati delle valvole a tre vie:

Exchanger Power = 1.163 * V1 * (tV1 – tR1)

L’unico difetto che ha e’ che non consente di distingue i contributi termici dovuti a fasi tra di loro molto diverse come riscaldamento, sbrinamento ed ACS. Questo diventa particolare importante col comportamento della pompa di calore Daikin HPSU Compact che, per basse temperatura di mandata, preleva tutto il calore necessario agli sbrinamenti dall’accumulo.

Per questo motivo, data la limitatezza di emoncms.org per fare calcoli avanzati sui valori di input, ho adottato le formule seguenti per valutare la potenza termica netta inviata al pavimento ed all’accumulo:

Floor Power = 1.163 * V1 * (tV,BH – tR1) ; Heating Mode only

Tank Power = 1.163 * V1 * (tV1 – tV,BH) + EHS ; DHW Mode or Defrost Mode only

Queste 2 formule sono affette da un errore marginale durante le fasi transitorie (valvole a 3 vie in movimento da uno stato stabile all’altro).

Con queste definizioni la perdita per gli sbrinamenti si sposta sulla potenza termica inviata all’accumulo che viene decurtata dell’energia sottratta a causa degli sbrinamenti. Nella pratica si vede bene che con sbrinamenti frequenti il Tank COP si riduce drasticamente, per quanto una frazione di calore vada anche verso il pavimento.

Vediamo l’andamento delle tre misure di potenza termica in fase di riscaldamento ed ACS:

Pompa di calore Rotex HPSU Compact hack: terza parte
tank

Si vede benissimo:

  • la perfetta aderenza di Floor Power e Exchanger Power
  • la sovra-stima di Tank Power rispetto ad Exchanger Power (dovuta alla differenza non lineare dei sensori di temperatura al crescere della temperatura stessa)

I COP in tempo reale vengono calcolati dividendo la potenze/energia termica per la corrispondente potenza/energia elettrica.

L’energia viene calcolata dalla potenza utilizzando il processor Power to kWh di emoncms.

Utilizzando le dashboard di emoncms e’ possibile creare viste davvero gradevoli e potenti che potenti che potete apprezzare qui’ in Funzionamento in tempo reale pompa di calore aria acqua.

Il sistema cosi’ realizzato e’ in grado di misurare il COP effettivo della pompa di calore avulso da qualsiasi influenza dell’impianto idraulico:

  • la potenza termica e’ misurata ai morsetti (scambiatore di calore a piastre)
  • la potenza elettrica e’ misurata ai morsetti (alimentazione di unita’ esterna RRLQ006CAV3 + unita’ interna Daikin HPSU Compact 508 (H/C) DB + backup-heater BUH1)

Queste misure sono quindi perfettamente confrontabili con i dati nominali presenti sulla documentazione di prodotto.

Daikin HPSU Compact + Raspberry Pi + PiCAN2: next steps

Quando ho creato il sistema, oltre alla sorpresa iniziale, ho scatenato un po’ di mal di pancia e critiche sulla sua attendibilità. Mi duole dirlo ma la maggior parte non in buona fede.

Il punto di partenza e’ che la precisione del sistema e’ quella assicurata dalla pompa di calore Daikin HPSU Compact stessa: non abbiamo aggiunto errori a quelli eventualmente esistenti. Detto in altre parole abbiamo realizzato delle viste facilitate e storicizzate ai dati interni Daikin (DaikinHPSU Compact hack).

Aggiungerei che grazie alla calibrazione delle misure di temperatura la precisione della misura della potenza/energia termica del sistema e’ di gran lunga maggiore della pompa di calore Daikin HPSU Compact grezza.

Dopo abbondanti osservazioni dei dati fornitori dal mio Raspberry Pi e dalla scheda PiCAN2, ci sono comunque una serie di considerazioni da fare che vanno indirizzate:

  1. qualche singola estrazione dati dalla Daikin HPSU Compact fallisce (campione mancante) – statisticamente irrilevante e sostanzialmente invisibile sui dashboard
  2. qualche singola estrazione dati dalla Daikin HPSU Compact fornisce dati palesemente errati (sicuramente errore interno alla Daikin HPSU Compact, ad esempio una temperatura che crolla da 30 °C ad 1 °C per risalire immediatamente dopo a 30 °C) – statisticamente irrilevante ma visibile sui dashboard
  3. la frequenza di campionamento delle grandezze termiche (estratte dalla Daikin HPSU Compact) e’ differente da quelle elettriche (misurate direttamente da OEM)
  4. per le grandezze calcolate (in particolare ΔT e potenze termiche) tutti i punti precedenti determinano valori “rumorosi” e/o con singoli campioni visibilmente spuri – statisticamente irrilevante ma visivamente molto fastidioso
  5. alcuni sensori sembrano lievemente rumorosi (ad esempio la temperatura di ritorno)

La mia idea di soluzione è che nel layer intermedio tra quello fisico (CAN-Bus) e quello applicativo, la libreria di acquisizione e pubblicazione dei dati, ci dovrebbero stare delle logiche (opzionali) di:

  • data filtering (per attenuare/rimuovere il rumore)
  • data cleansing (per rimuovere dati palesemente fuori scala)
  • calcolo on the fly (calcolare al volo una grandezza derivata da grandezze elementari ma tra campioni tra di loro sincroni)

Questo potrebbe essere del tutto trasparente al layer applicativo che non farebbe altro che invocare normalmente la lettura di una grandezza (nativa o derivata) ottenendo dati estremamente puliti.

Ovviamente le grandezze derivate sarebbero scolpite in un vocabolario per il loro uso con il codice implementativo.

Anche la pubblicazione in cloud dovrebbe fare uso di questo servizio intermedio per poter visualizzare/storicizzare dati puliti.

Esempi di calcoli on-the-fly di grandezze derivate:

  • applicazione di off-set (costanti) di correzione (vedi calibrazione sensori di temperatura)
  • calcolo di differenze (come i ΔT acqua)
  • calcolo potenze termiche
  • derivazione di grandezze binarie (esempio Modo Defrost) da grandezze multivalore (Modo corrente)

Direi che zanac ha ancora un sacco di lavoro da fare !

Nel caso vi capiti con frequenza di bruciare la SD Card del vostro Raspberry Pi leggere la mia soluzione in Raspberry Pi | Collegare hard disk esterno.

Tutti i miei articoli su Daikin HPSU Compact:

Ultimo aggiornamento Amazon Affiliate 2021-12-05 at 05:40

22 commenti su “Daikin HPSU Compact hack con Raspberry Pi e PiCAN2: terza parte”

  1. Ciao, complimenti per il progetto,
    Vorrei realizzarlo ma mi manca il tempo e sicuramente un po’di conoscenze.
    Esiste una soluzione simile già pronta in commercio? Ho una Daikin altherma 3 h HT,
    Oppure ne realizzi tu per la vendita?
    Lo scheda ufficiale Daikin da quel che ho capito mi sembra inutile…

  2. Ciao ,
    Ho una compact r32 del 2018 , ho acquistato il modulo can per partire con il progetto ma poi mi sono fatto un po’ di problemi ( paure ) e ho acquistato il rocon g1 ( 500€) buttati per carità qualcosa mi fa cambiare ma nulla di più della t ambiente e modalità !

    Arrivando al sodo , questo fantastico progetto d applicabile alla mia versione secondo te ?
    Grazie

    1. Ciao Stefano,

      premesso che non ho potuto provare materialmente, secondo me la risposta è quasi certamente sì.

      Ho verificato sul manuale della unità interna della Daikin Altherma 3 R ECH2O ed anche della ancora più recente Daikin Altherma 3 H HT ECH2O ed in entrambi i casi è ancora assolutamente presente il connettore J13 per il collegamento di dispositivi RoCon opzionali che utilizzano il CAN Bus.
      L’unico margine minimo di sfrido potrebbe essere su qualche dato che transita sul bus.

      La mia esperienza professionale mi fa però ritenete che sia stato applicato fino in fondo il principio della retro compatibilità (detto anche “del maiale non si butta via niente”).

      Sei hai parecchio tempo libero, con un investimento limitato, potresti serenamente buttartici.
      Ovviamente dovrai mangiare pane, Raspberry e Python. Ma potrebbe pure essere divertente.

      Ho colto l’occasione per aggiornare il primo articolo della serie in questo senso aggiungendo i dettagli.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.