Crypto Portfolio Tracker con Node-Red in Home Assistant

Crypto Portfolio Tracker con Node-Red in Home Assistant

Argomento: Criptovalute

Livello: Pro (Novizio,Esperto, Pro)

Difficoltà: Alta (Bassa, Media, Alta)

Eccoci qua con un nuovo articolo, non particolarmente inerente alla domotica della nostra casa, ma grazie ad un automazione, vi sarà utile per monitorare l’andamento del vostro portfolio di criptovalute comodamente dalla vostra interfaccia! Con Node-Red monitoriamo i nostri Bitcoin, Ethereum o qualsiasi altra coin che preferite! Se utilizzate Home Assistant potrete visualizzarlo comodamente in panoramica come un comune sensore/Attributi e collegarci poi tutte le automazioni che vorrete.

Se non sei ancora entrato nel mondo delle Criptovalute ti consiglio degli utenti youtube che seguo e mi hanno aiutato ad iniziare. Tiziano Tridico, Mauro Caimi, The Crypto gateway.

Se vuoi registrarti agli exchange, mi farai un grande piacere se ti iscriverai con i miei referral link 🙂 Riceveremo entrambi degli sconti. 

Link referral iscrizione Binance per ricevere il 10% di sconto sulle commissioni. Tantissime coin e possibilità di trade avanzato.

FTX (exBlockfolio) app. Download diretto. Semplice e per principianti. Ti fa guadagnare l’8% annuo (pagato giornalmente) delle monete fiat e crypto che hai sul portfolio. Scarica l’app e inserisci in un secondo momento il mio codice referral 37865142 per ricevere coin gratis con 10 dollari di trade.

Chiusa parentesi e torniamo a noi…

Strumenti, dettagli e conoscenze necessarie

  • Questa automazione esegue dei calcoli in base a dei dati che inseriremo manualmente nei fogli google sheet. Perciò non richiede accessi API agli exchange. Detto ciò non é adatta ai trader che comprano e vendono continuamente anche con bot automatici, in quanto sarebbe insostenibile andar a segnare sempre nuovi dati. L’automazione é più adatta agli holder e soprattutto per chi acquista a PAC, dato che calcola anche il prezzo medio di carico (PMC).
  • E’ richiesto Node-Red. Può essere utilizzata da chi utilizza Node-Red con Home Assistant, ma anche da coloro che utilizzano solo Node-Red

Detto ciò ecco la guida per Installare Node-Red in Home Assistant. Oppure installa Node-Red nella piattaforma che preferisci seguendo il sito dedicato

  • Questa Automazione richiede conoscenze avanzate di Node-Red.

Seguire guide Node-Red senza capirne il flusso d’automazione, non é utile a nessuno. Node-Red ha un metodo tutto suo e dovrai in ogni caso mettere mano al flow per adattarlo alle tue esigenze. Se non possiedi tali conoscenze, in particolar modo per questa automazione, ti consiglio di seguire il Corso Completo Node-Red Italia. Il primo corso gratuito puoi richiederlo compilando questo modulo.

  • Se utilizzi Node-Red con Home Assistant dovrai configurare il nodo “Entity” che fa parte dei nodi Home Assistant.

Il nodo “Entity” si configura semplicemente con una custom_component di hacs. Vedi Qui. Per gli utenti del Corso Node-Red Italia, la configurazione e spiegazione dettagliata, si trova nel flow del Corso 6.

  • E’ richiesta la configurazione dei nodi google sheet. Segui la guida youtube.
  • E’ richiesto il download dalle palette del nodo “String”. Lo trovi in questa guida

Se rispetti questi 5 requisiti… Sei pronto per iniziare!!

Per qualsiasi domanda non esitate a contattarmi.
Telegram Manuel Del Gada

Iscrivetevi ai canali “Node-Red italia” : Gruppo Facebook – Canale Youtube – Gruppo Telegraml

Foglio Google Sheet

  • Questa automazione non fa altro che acquisire ciò che registriamo nel foglio google sheet, eseguirne dei calcoli ed estrapolarne dati utili.

Nello sheet abbiamo 4 colonne per ogni coin. Nella foto di esempio abbiamo Bitcoin (BTC) ed  Ethereum (ETH). Dobbiamo segnare quando acquistiamo e quando vendiamo in controvalore euro/tot asset.

Colonna A: Quanti euro ho speso per acquistare tot asset di BTC (colonna B). In altre parole in quel periodo ho speso 30 euro per acquistare 0.000974 BTC

Colonna C: Quanti BTC ho venduto in euro che corrispondono a tot asset BTC (Colonna D). In pratica, una volta, ho venduto 49.13 euro di BTC che corrispondevano a 0.001276 BTC

Stessa cosa per ETH

Precisazioni: 

  • Anche se non avete venduto o acquistato nulla, inserite sempre lo zero nella riga 2 e 3. Se sono vuote si crea un errore nell’automazione perché essa ha bisogno sempre di due numeri utili. Che sia 0 o 0.00 non cambia.
  • Non usate le virgole ma sempre i punti
  • Il foglio google sheet deve avere un formato adatto per scrivere numeri con punti. Se all’inserimento del dato, dopo l’invio notate che cambia in automatico il formato, selezionate le colonne, andate su “formato”, su “numero” e selezionate “testo normale”

Dati che vengono estrapolati

Da questi dati inseriti nel google sheet, con una serie di operazioni, estrapoliamo tante informazioni che creano 3 sensori.

  • Il “Portfolio”.  Raggruppa i dati e riassume il tutto
  • “Bitcoin”. Che raggruppa tutti i dati di bitcoin che abbiamo in portfolio
  • “Ethereum”. Che raggruppa tutti i dati di Ethereum che abbiamo in portfolio

Ecco la visualizzazione su Home Assistant (Se utilizzate solo node-red, tutti questi dati saranno dei msg.payload da gestire a vostra preferenza)

 

Ogni sensore può essere visualizzato nel dettaglio (nella foto “Bitcoin”, stessa cosa sarà per Ethereum):

  1. Come stato del sensore il guadagno o perdita in percentuale del bitcoin nel mio portfolio (30% in guadagno)
  2. Guadagno o perdita in percentuale del bitcoin in euro (+68.35 euro)
  3. Denaro investito per Bitcoin (229.49 euro)
  4. Valore attuale asset bitcoin in mio possesso in euro  (297.84 euro)
  5. Valore attuale (aggiornato ogni 20 minuti) di 1 BTC in euro
  6. PMC Prezzo medio di carico in euro
  7. Valore attuale (aggiornato ogni 20 minuti) di 1 BTC in dollari
  8. PMC Prezzo medio di carico in dollari

Dati di riepilogo sensore “Portfolio”:

  1. Come stato del sensore il guadagno o perdita in percentuale dell’intero portfolio (38% in guadagno)
  2. Guadagno o perdita in percentuale del portfolio in euro (+134.29euro)
  3. Denaro investito in totale (355.42 euro)
  4. Valore attuale degli asset in mio possesso in euro  (489.71 euro)
  5. Quota in percentuale di BTC nel mio portfolio (60.8%)
  6. Quota in percentuale di ETH nel mio portfolio (39.2%)
  7. Asset BTC in mio possesso
  8. Asset ETH in mio possesso

Operazioni Eseguite

Per chiarezza vi spiego anche le operazioni eseguite dall’automazione tenendo come esempio i risultati precedenti:

  • Importo investito / numero quote in possesso = PMC

Nell’esempio Bitcoin 229.49 investito / 0.00710955 quote = 32.279 PMC in euro

 

  • Quote in possesso X prezzo attuale BTC = Valore Attuale

Nell’esempio 0.0071095 X 41.893 = 297.84

 

  • (Valore attuale Asset / Valore attuale portfolio)  X100 = Percentuale quota asset in portfolio

Nell’esempio 297.84 guadagno BTC / 489.71 Valore attuale portfolio = 0.608 X100 = 60.8%

 

  • (Valore attuale – Investito)  / Investito = X100 = Percentuale guadagno

Esempio Bitcoin: La differenza fra valore attuale e investito é 68.35 di guadagno / 229.49 investiti = 0.29X100 = 29.78% guadagno (arrotondato al 30%)

 

Note: Nell’automazione ci sono anche chiamate esterne per acquisire i valori attuali degli asset da Coingecko e il cambio euro dollaro da Banca d’italia

Operazioni su Node-Red

D’ora in poi spiegherò la parte Node-Red nel modo più dettagliato possibile. Ma se sei alle prime armi, e sopratutto senza nessuna base, risulterà ostico.

Detto ciò, per non demoralizzarti,  consiglio sempre di seguire nel dettaglio le guide Node-Red e il Corso Completo Node-Red Italia compilando questo modulo. Ti ricordo che Node-Red non richiede conoscenze di linguaggi di programmazione. Un esempio é questo flusso d’automazione. Per quanto può sembrare complesso non ha richiesto una sola riga di codice. Per questo non devi perderti Node-Red! Superata la prima fase sarà un divertimento costruire automazioni.

Proseguiamo allora…

Prima di importare il flusso, vediamo come le operazioni vengono eseguite su Node-Red. Nella foto qui in basso vediamo come calcolare il valore attuale BTC che abbiamo visto poco fa.

  1. Da sinistra arriva il flusso (frecce rosse). Arrivano 2 msg.payload ( 40000 e 0.007567) che sono sicuramente il risultato di altre operazioni.
  2. Il nodo Join (rettangolo blu) é impostato per attendere 2 messaggi e costruire un array mettendo prima i messaggi che arrivano prima. Arriverà prima 0.007567 dato che al 40000 ho messo un delay di attesa di 1 secondo. Vediamo la costruzione array che fa il join, nel debug sulla destra nel rettangolo blu.
  3. Il nodo Calculator esegue l’operazione impostata (moltiplicazione) ai messaggi che trova all’interno di un array che gli arriva in input. Esegue l’operazione nell’ordine, come nel rettangolo nero (questo il motivo per il quale volevo che 40000 arrivasse dopo… altrimenti avrebbe fatto la moltiplicazione al contrario)
  4. Il risultato dell’operazione arriva nel debug rinominato con il nome dell’operazione (rettangolo verde), in modo da poter vedere i risultati in maniera ordinata. Allo stesso tempo quel risultato viene registrato nella variabile global.btc.euro

Flow Node-Red

Potete importare il Flow da questo link.

L’automazione contiene dei nodi comment per ordinare il tutto, inoltre ogni singolo nodo Debug é rinominato con la descrizione del risultato dell’operazione che deve arrivargli. 

In ogni caso cercherò di spiegarne il flusso anche da qui.

Il flow ha un ceck con una cadenza a vostra scelta (qui impostata a 20 minuti) dove ricalcola sempre il tutto. L’importante é che il calcolo rispetti le 4 fasi in successione. Prima devono eseguirsi i calcoli della Fase 1, poi la 2 e così via… Per fare questo ci sono dei delay. Chiaramente se aggiungete altre coin dovrete allungare i delay 

Ricordate di configurare i nodi sheet con il vostro account e con lo spreadsheetid del vostro foglio di calcolo. Stessa cosa nei nodi entity dove dovrete selezionare il vostro account Home Assistant.

FASE 1: Calcola le Coin singole. (Sempre con un delay di 2 secondi l’una dall’altra per non rischiare un blocco delle chiamate API verso gli sheet)

FASE 2: Portfolio

FASE 3: Portfolio

FASE 4: Scrittura sensori in Home Assistant (Se utilizzi solo Node-Red questa parte non ti interessa)

Nella foto ci sono le varie Coin nel rettangolo nero. In alto BTC e in basso ETH.

Nel rettangolo blu il ceck ogni 20 minuti che potrete modificarlo al suo interno

Nel rettangolo giallo troviamo la chiamata API verso banca d’italia per avere sempre il valore di cambio euro dollaro aggiornato. ATTENZIONE: Il valore di cambio viene registrato in una variabile solo se disponibile, altrimenti viene utilizzato il precedente. Controllate che sia disponibile alla partenza dell’automazione, se non lo é,  entrate nel nodo “date/time formatter” e su “adjustement” inserite – 2 o 3 giorni in modo da reperire almeno un numero disponibile per la prima volta. Dopodiché rimettete – 1 giorno (il valore con giorno attuale non é mai disponibile)

Le fasi di calcolo sono numerate nel rettangolo Rosso. Prima quella a sinistra delle Coin (FASE 1) poi le altre a destra dall’alto verso il basso (Sono scritte nei nodi comment che non si leggono in foto)

I loro calcoli distanziati sono rispettati dai delay che vi dicevo prima con colore Arancione. Perciò se aggiungete altre Coin dovrete modificare i delay in modo che i calcoli vengano eseguiti distanziati e nella giusta successione.

Con i rettangoli  e frecce verdi vedete quello che dovrete modificare o duplicare per aggiungere altre coin. Più la modifica di ogni variabile globale e delay per rispettarne le fasi. Ma per questo ho dedicato una sezione apposita

 

Come aggiungere un'altra Criptovaluta

FASE 1: Se volete aggiungere un’altra Coin dovrete copiare ETH, modificare il filtro all’interno del nodo String (marrone) in modo da prendere il valore della coin dal json che trovate su Coingecko con la chiamata http. Il nodo “String” é impostato per prendere il valore che si trova fra “stringaA” e “stringaB” del json. Quel valore dovrà essere la quotazione attuale della coin. Molto semplice.

Nell’automazione ogni risultato di operazione viene registrato in una variabile global. Perciò dovrete modificare ogni singola variabile global. Ad esempio abbiamo la variabile global.ethvaloreattualeeuro … se aggiungiamo la coin DOT inseriremo global.dotvaloreattualeeuro per differenziarle

FASE 2: Dovrete duplicare il nodo change nell’operazione (freccia in alto verde) , collegate allo stesso modo di eth ma al posto di global.cifraspesa.eth sarà global.cifraspesa.dot e modificare il join con msg.part “3” perché poi dovrà aspettare 3 messaggi prima di fare la somma.

Poi vi recate più in baso. Duplicate il flow di ETH (freccia in basso verde), collegate allo stesso modo e modificate sempre le variabili global e il join che dovrà ricevere sempre 3 messaggi

FASE 3: Invariata

FASE 4: Duplicate il nodo Entity di ETH e delay (in verde), collegatelo, allungate il delay di 1 secondo e all’interno del nodo Entity modificate il nome e tutte le variabili global con quelle della nuova coin.

Per finire ricordate di modificare i delay (rettangoli arancioni) in modo da rispettare i tempi di calcolo delle fasi. Anche le Coin calcolano con 2 secondi di ritardo l’una dall’altra per non sovraccaricare la chiamata API allo sheet.

A questo punto azionate il timestamp e ogni valore dovrà uscire nel debug correttamente. Se vi uscirà qualche errore significa che non ci sono almeno 2 valori per un operazione, oppure che i delay non sono rispettati.

Ecco un esempio nel mio caso con 4 coin qui sotto in foto. Nella Fase 1 manca una coin per questioni di spazio! (vi ricordo che essendo valori global potrete utilizzare più flow)

A questo punto vi auguro Buone automazioni!! ….e sperando che non porti iella…. TO THE MOON!! 🚀🚀😄

Alla prossima!

 

Una risposta.

  1. Antonello Ponziani ha detto:

    questo progetto è fantastico l’ho messo subito in atto funziona benissimo solo una cosa chiedevo per caso si puo inserire i soldi spesi in dollari perchè quando compro cryptovalute parto sempre da usdt 🙂 comunque grazie per il progetto

Lascia un commento

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

Advertisment ad adsense adlogger