Io ho "integrato" sia 123solar che metern con home assistant. Ho usato la parola "integrato" tra virgolette molto grandi perchè ho solo creato dei sensori in home assistant che vanno a leggere i file di 123solar e metern in cui vengono riportate le cose che mi interessano.
Premetto che io ho sia home assistant che 123 solar che metern su un raspberry pi. Avendo rete trifase ho un modbus SDM630 collegato direttamente al raspberry, ma andando a leggere i file di metern e 123solar come raccogliete i dati è indifferente.
In primo luogo vi consiglio di studiare la struttura dei file con relativa formattazione e nomenclatura:
/dev/shm/123s_LIVEMEMORY.json
/dev/shm/mN_ILIVEMEMORY.json
Vi riporto il pezzo del file configuration.yaml di home assistant in cui definisco i sensori (considerate che ho 3 inverter e una rete elettrica con 3 fasi e per non appesantire il tutto ho fatto un aggiornamento dei dati ogni 5 secondi = scan_interval ):
Codice: Seleziona tutto
sensor:
- platform: file
file_path: /dev/shm/mN_LIVEMEMORY.json
name: ConsumiTotali
value_template: '{{ value_json["Consumi totali2"] }}'
unit_of_measurement: 'W'
scan_interval: 5
- platform: file
file_path: /dev/shm/mN_ILIVEMEMORY.json
name: Consumi1fase
value_template: '{{ value_json["Cons.Fase14"] }}'
unit_of_measurement: 'W'
scan_interval: 5
- platform: file
file_path: /dev/shm/mN_ILIVEMEMORY.json
name: Consumi2fase
value_template: '{{ value_json["Cons.Fase25"] }}'
unit_of_measurement: 'W'
scan_interval: 5
- platform: file
file_path: /dev/shm/mN_ILIVEMEMORY.json
name: Consumi3fase
value_template: '{{ value_json["Cons.Fase36"] }}'
unit_of_measurement: 'W'
scan_interval: 5
- platform: file
file_path: /dev/shm/123s_LIVEMEMORY.json
name: ProduzioneTotale
value_template: '{{ value_json["G1P1"] | round(0) + value_json["G1P2"] | round(0) + value_json["G1P3"] | round(0) }}'
unit_of_measurement: 'W'
scan_interval: 5
- platform: file
file_path: /dev/shm/123s_LIVEMEMORY.json
name: Inverter1
value_template: '{{ value_json["G1P1"] | round(0) }}'
unit_of_measurement: 'W'
scan_interval: 5
- platform: file
file_path: /dev/shm/123s_LIVEMEMORY.json
name: Inverter2
value_template: '{{ value_json["G1P2"] | round(0) }}'
unit_of_measurement: 'W'
scan_interval: 5
- platform: file
file_path: /dev/shm/123s_LIVEMEMORY.json
name: Inverter3
value_template: '{{ value_json["G1P3"] | round(0) }}'
unit_of_measurement: 'W'
scan_interval: 5
- platform: template
sensors:
immissionioprelievi:
value_template: '{{ states.sensor.produzionetotale.state | float | round(0) - states.sensor.consumitotali.state | float | round(0) }}'
unit_of_measurement: 'W'
- platform: template
sensors:
immissioni:
value_template: '{% if states.sensor.consumitotali.state | float | round(0) - states.sensor.produzionetotale.state | float | round(0) > 0 %} {{0}} {% else %} {{ states.sensor.produzionetotale.state | float | round(0) - states.sensor.consumitotali.state | float | round(0)}} {% endif %}'
unit_of_measurement: 'W'
- platform: template
sensors:
prelievi:
value_template: '{% if states.sensor.consumitotali.state | float | round(0) - states.sensor.produzionetotale.state | float | round(0) < 0 %} {{0}} {% else %} {{ states.sensor.consumitotali.state | float | round(0) - states.sensor.produzionetotale.state | float | round(0) }} {% endif %}'
unit_of_measurement: 'W'
LOGICAMENTE: il codice va modificato con i nomi che avete dato voi, per questo vi dicevo di studiarvi la struttura dei file
/dev/shm/123s_LIVEMEMORY.json
/dev/shm/mN_ILIVEMEMORY.json
INOLTRE con home assistant potete far fare i calcoli sottrazioni ecc ecc...
FONDAMENTALE sempre in home assistant permettere l'accesso di quest'ultimo al percorso in cui risiedono i file, quindi ho aggiunto sempre nel file configuration.yaml di home assistant:
Calcolate che sono un dilettante... però l'accrocchio funziona... (sicuramente NON è efficente ma perlomeno è efficacie)
Tralasciando l'impaginazione sotto trovate quello che per ora ho.

Immagino sappiate che con home assistant potete creare automazioni niente male...
Spero di esservi stato utile