Definisci un sensore chiamato produzione:
Codice: Seleziona tutto
- platform: file
file_path: /dev/shm/123s_LIVEMEMORY.json
name: Produzione
value_template: '{{ value_json["G1P1"] | round(0) }}'
unit_of_measurement: 'W'
scan_interval: 5
Verifica prima che nel file 123s_LIVEMEMORY.json ci sia G1P1 che dovrebbe essere la produzione in W instantanea di quanto sta producendo il tuo unico inverter.
Presumo che tu abbia già creato il sensore "consumi" utilizzando il file mN_LIVEMEMORY.json.
A questo punto visto che sono scansafatiche e non mi piace fare i conti ho creato dei sensori, chiamiamoli "virtuali" che semplicemente fanno loro i conti per me.
Voglio un sensore che mi faccia il conto: "quanto produco - quanto consumo" così se il numero risultante è positivo significa che sto vendendo all'enel per intenderci, viceversa se è negativo non sono autosufficiente e sto acquistando energia elettrica dall'enel.
Quindi nel tuo caso ipotizzando (i sensori li abbia chiamati "produzione" e "consumi") dovrebbe essere:
Codice: Seleziona tutto
- platform: template
sensors:
immissionioprelievi:
value_template: '{{ states.sensor.produzione.state | float | round(0) - states.sensor.consumi.state | float | round(0) }}'
unit_of_measurement: 'W'
Tanto per tua info "round(0)" serve per arrotondare e non avere numeri dopo la virgola. "float" non ricordo se è per dirgli che è un numero con virgola o qualcosa del genere...
Per altre esigenze ho creato altri due sensori "virtuali" dividendo quello scritto sopra. Cioè un sensore che mi dice quanta energia sto immettendo quindi vendendo all'enel e un sensore che mi dice quanta energia sto prelevando quindi acquistando dall'enel. Capisci subito che è tutto molto banale... Per il sensore di immissione ho semplicemente copiato il sensore sopra mettendo un "if" [se valore maggiore di zero visualizza valore altrimenti visualliza zero.]
Per il sensore di prelievo "if" [se valore minore di zero visualizza consumi meno produzione, altrimenti visualliza zero.]
Nel tuo caso ipotizzando i sensori prima li abbia chiamati "produzione" e "consumi":
Codice: Seleziona tutto
sensors:
immissioni:
value_template: '{% if states.sensor.consumi.state | float | round(0) - states.sensor.produzione.state | float | round(0) > 0 %} {{0}} {% else %} {{ states.sensor.produzione.state | float | round(0) - states.sensor.consumi.state | float | round(0)}} {% endif %}'
unit_of_measurement: 'W'
- platform: template
sensors:
prelievi:
value_template: '{% if states.sensor.consumi.state | float | round(0) - states.sensor.produzione.state | float | round(0) < 0 %} {{0}} {% else %} {{ states.sensor.consumi.state | float | round(0) - states.sensor.produzione.state | float | round(0) }} {% endif %}'
So che avrei potuto non fare i conti ogni volta in ogni sensore.... volendo puoi sostituire negli if direttamente il sensore che io ho chiamato "immissionioprelievi" e fare direttamente le verifiche se maggiore di zero o no..