MeterN e HomeHassistant

Discussioni relative al software di monitoraggio energetico METERN
nicolbe
Messaggi: 5
Iscritto il: 22/01/2016, 9:15

Re: MeterN e HomeHassistant

Messaggioda nicolbe » 15/04/2020, 12:31

Ho seguito la guida ed ora ho i miei meter con i dati presi direttamente da 123solar e meterN su HomeAssistant.
Io ho tutto su un solo raspberry e HomeAssistant è installato in docker (con la parte di Hass.io per gestire sia gli upgrade che i plugins ufficiali).

Ecco quello che ho configurato.

Prima di tutto ho abilitato il container di HomeAssistant a vedere la cartella /dev/shm del mio raspberry.
Questo serve per poter poi accedere ai files di 123solar e meterN da dentro HomeAssistant. Io ho impostato la cartella /dev/shm del mio Raspi come volume in Docker e quindi l'ho mappata su /dev/shm all'interno del container.

Quindi ho apportato queste modifiche alla configurazione di HA:

configuration.yaml

Codice: Seleziona tutto

 
  whitelist_external_dirs:
    - /dev/shm


Fatta questa modifica ho riavviato HomeAssistant per fargli prendere la configurazione.
Quindi ho continuato la configurazione con le indicazioni del primo post ma attualizzandole al mio impianto (monofase casalingo, un solo inverter):

configuration.yaml

Codice: Seleziona tutto

 
  - platform: file
    file_path: /dev/shm/mN_LIVEMEMORY.json
    name: consumitotali
    value_template: '{{ value_json["Consumi2"] }}'
    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) }}'
    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'


Secondo riavvio di HomeAssistant per poter iniziare a "giocare" con la UI Lovelace.
Questo è il codice delle tiles sulla UI Lovelace:

Codice: Seleziona tutto

cards:
  - entity: sensor.produzionetotale
    max: 4500
    min: 0
    name: Produzione istantanea
    severity:
      green: 2500
      red: 0
      yellow: 1500
    type: gauge
    unit: Wh
  - entity: sensor.consumitotali
    max: 3300
    min: 0
    name: Consumo istantaneo
    severity:
      green: 0
      red: 3000
      yellow: 2000
    type: gauge
    unit: Wh
  - type: gauge
    entity: sensor.immissionioprelievi
    max: 4000
    min: -4000
    severity:
      green: 0
      yellow: -1000
      red: -4000
    unit: Wh
    name: Immissioni o Prelievi
  - type: gauge
    entity: sensor.immissioni
    min: 0
    max: 4000
    name: Immissione istanea
    unit: Wh
  - type: gauge
    entity: sensor.prelievi
    min: 0
    max: 4000
    name: Prelievi da Rete
    unit: Wh
    severity:
      green: 300
      yellow: 1000
      red: 1500
type: vertical-stack


Il risultato per ora è minimale, ma avere i dati su HA è tanta roba!!!
Grazie mille per i suggerimenti soprattutto all'inizio del thread, davvero molto molto molto utili!


wifi75
Messaggi: 213
Iscritto il: 29/07/2019, 10:24

Re: MeterN e HomeHassistant

Messaggioda wifi75 » 21/04/2020, 18:44

date un'occhiata qui a quest'altro metodo...:

viewtopic.php?f=4&t=2601

metus
Messaggi: 120
Iscritto il: 10/05/2019, 1:04

Re: MeterN e HomeHassistant

Messaggioda metus » 22/04/2020, 11:30

Cristiano ha scritto:Ciao a tutti
anche io avevo iniziato a provare a sharare la dir con samba ma ho provato in molti modi e non sono riuscito.
vi suggerisco di usare il programma MONITOR messo a disposizione dal bravissimo Garluk e visibile al post con la guida viewtopic.php?f=4&t=2039
con un po di fatica sono riuscito a configurarlo ma era solo un mio problema avendo un sono sdm120c e con indirizzi diversi.
Comunque scoperto la giusta configurazione si riesce ad utilizzare l'mqtt alla grande e da qui possibile inserirlo con facilità in Home Assistant.
Ciao
Cristiano

Cristiano, per caso hai trovato un modo elegante per passare ad home assistant i valori interi senza virgola?
Spiegandomi meglio usando in home assistant il codice:

Codice: Seleziona tutto

  - platform: mqtt
    state_topic: 'casa/energia/consumi/TP'
    name: 'ConsumiTotali'
   

Mi restituisce per esempio 1568.36 W, vorrei ottenere 1568W.
Ora col altri metodi impostando sensori di tipo template bastava che aggiungessi " | round(0) " per far si che il numero venisse approssimato a intero, esempio:

Codice: Seleziona tutto

  - 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


Ho visto che anche per i sensori mqtt c'è l'opzione value_template ma non capisco e non riesco a farla funzionare. Tu ci sei riuscito?
So che volendo potrei crearmi un altro sensore template che mi prende il sensore originale e lo apporssima ma mi sembra un abominio raddoppiare i sensori solo per arrotondarne il valore.

Utilità nulla ma esteticamente preferisco non avere i decimali. Se non lo sai tranquillo

Cristiano
Messaggi: 38
Iscritto il: 12/11/2016, 16:02

Re: MeterN e HomeHassistant

Messaggioda Cristiano » 22/04/2020, 11:36

Ciao Metus
Io ho lasciato cs' con 2 decimali.
Devo dire che non mi ci sono messo e anche io avrei usato la funzione value_template ma se ho un attimo gli do un occhiata....in realtà se non funziona si potrebbe pensare a "manipolare" la stringa '{{ value_json["G1P1"] }}'

wifi75
Messaggi: 213
Iscritto il: 29/07/2019, 10:24

Re: MeterN e HomeHassistant

Messaggioda wifi75 » 22/04/2020, 11:41

si rivvia tranquillamente.

megamarco83
Messaggi: 246
Iscritto il: 22/08/2016, 14:13

Re: MeterN e HomeHassistant

Messaggioda megamarco83 » 17/05/2020, 11:41

metus ha scritto: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:

Codice: Seleziona tutto

homeassistant:
  whitelist_external_dirs:
    - /dev/shm


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.
Immagine
Immagino sappiate che con home assistant potete creare automazioni niente male...
Spero di esservi stato utile

ciao, ma come hai fatto con sdm630 a misurare i consumi e la produzione con 123solar?
hai unsato il programma monitor di garluk?
io sono riuscito per quanto riguarda i consumi, ma nel post di garluk c'è scritto che per 123solar serve il monitor_protocol da mettere in /var/www/123solar/scripts/protocols
ma non è allegato...
grazie

metus
Messaggi: 120
Iscritto il: 10/05/2019, 1:04

Re: MeterN e HomeHassistant

Messaggioda metus » 17/05/2020, 15:36

Non ho capito bene la domanda megamarco83.
Ho comprato sdm630 e usato lo script di Garluk su questo forum viewtopic.php?f=4&t=2039&hilit=monitor.conf
Ho configurato come da guida. Il risultato di questo script è che crea un file in /dev/shm chiamato metern2.txt che riporta in tempo reale i valori letti dal contatore fisico sdm630. Una volta che si ha questo file .txt basta andare in metern e settarlo in modo tale che vada a leggere questo file per i consumi. (credo che fino a qui tu abbia fatto tutto e ti funzioni). La produzione io invece la ho tramite 123solar.... seguendo la wiki standard di flanesi ho collegato i miei tre inverter al raspberry e ho ottenuto sul programma 123solar le letture di tutti e tre i miei inverter. Una volta che ho 123solar funzionante ho passato i valori al programma metern configurando usando il file pool123s.php come da immagine
Immagine
(in realtà avendo tre inverter ho duplicato il file pool123s.php chiamandoli in modi diversi e cambiando il corrispettivo numero indirizzo inverter ma credo a te non interessi).
In ultimo avendo i consumi da sdm630 e la produzione dagli inverter che comunuicano con 123solar che a sua volta passa i dati di produzione a metern, ho tutto in metern e posso fare i conti di autoconsumo, prelievo ed immissione creando metern virtuali in metern.

Fammi sapere se ho risposto alla tua domanda.

megamarco83
Messaggi: 246
Iscritto il: 22/08/2016, 14:13

Re: MeterN e HomeHassistant

Messaggioda megamarco83 » 17/05/2020, 17:07

ciao Metus, scusami mi sono espresso male.
allora premesso che io ho 123solar e metern entrambi funzionanti da diversi anni, con pooler485 e sdm120c di gianfrdp, ora volevo provare monitor invece che sdm120c poichè monitor ha mqtt integrato e mi sembrava interessante..
quindi vorrei provare a cambiare il metodo delle letture.
nel primo post della giuda monitor però ho letto:
che per 123solar serve il monitor_protocol da mettere in /var/www/123solar/scripts/protocols
ma il file monitor_protocl non è allegato...

quindi io per quanto riguarda i consumi ho configurato monitor.conf e sono riuscito
io ho su meter1 = consumi
meter2 = produzione

quindi per metern mi funziona il lato consumi
non ho però capito per 123solar cosa bisogna usare:
ora ho:
Immagine

ed il mio monitor.conf è:

Codice: Seleziona tutto

[General]
Port1Dev = /dev/ttyUSB1  ;usb1=consumi
Port1Speed = 9600
Port1NBit = 8
Port1Stop = 2
Port1Par = N
Port2Dev = /dev/ttyUSB0  ;usb0=produzione
Port2Speed = 9600
Port2NBit = 8
Port2Stop = 2
Port2Par = N
Delay = 1               ; Delay time between reading the sensors (sec)
Retry = 5               ; Number of retry on modbus
useMQTT = yes           ; Indicate if MQTT is used (valid value are yes/no)
MQTThost = 192.168.0.105    ; IP Address o FQDN of MQTT broker
MQTTport = 1883         ; TCP/IP port of MQTT broker
MQTTkeepalive = 60      ; keepalive
MQTTusername =          ; username for auth. Leave black for no auth
MQTTpassword =          ; password for auth. Leave black for no auth

[Sensor1]
Name = Consumi     ; Description
Type = 1                ; Sensor type --> SDM220/SDM230
Port = 1                ; Number of communication port
Address = 1             ; Sensor's modbus address
Delay = 1               ; Delay time (sec)
NumOp = 0               ; Number of correction to do (0 = no correction)
Par1 = 1                ; Number of sensor's value to correct
C1 = 0                  ; Correction value
Op1 = +                 ; Operation (+, -, *, /)
ID = 1                  ; MeterID
OutputType = 2          ; Output format (1=123solar, 2=meterN, 3=detailed)
OutFile = /dev/shm/metern1.txt         ; Full path of output file
MQTTtopic = casa/energia/consumi       ; topic where data are published

[Sensor2]
Name = Produzione          ; Description
Type = 1                ; Sensor type --> SDM220/SDM230
Port = 2                ; Number of communication port
Address = 1             ; Sensor's modbus address
Delay = 1               ; Delay time (sec)
NumOp = 0               ; Number of correction to do (0 = no correction)
Par1 = 1                ; Number of sensor's value to correct
C1 = 0                  ; Correction value
Op1 = +                 ; Operation (+, -, *, /)
ID = 2                  ; MeterID
OutputType = 2          ; Output format (1=123solar, 2=meterN, 3=detailed)
OutFile = /dev/shm/metern2.txt         ; Full path of output file
MQTTtopic = casa/energia/produzione           ; topic where data are published



con ./monitor da shell mi genera correttamente i due txt in /run/shm

in /var/www/metern/config ho cambiato il config_daemon.php in:

Codice: Seleziona tutto

<?php
if(!defined('checkaccess')){die('Direct access not permitted');}

// modifica per monitor
if (is_null($PID)) { // Stop Daemon
exec("php /var/www/comapps/com_daemon_loop.php stop");
} else { //Start
exec("php /var/www/comapps/com_daemon_loop.php start");
}

?>

ed anche questo funziona, anche se durante la fase di spostamento da ON a OFF o viceversa nella pagina di adim di metern impiega un po' a fare il refresh, ma ad ogni modo metern funziona bene

non ho capito invece come si fa con 123solar ad usare monitor invece che sdm120c come protocollo.


grazie mille

metus
Messaggi: 120
Iscritto il: 10/05/2019, 1:04

Re: MeterN e HomeHassistant

Messaggioda metus » 17/05/2020, 17:35

Purtroppo credo di non poterti aiutare.
Se ho capito bene tu hai fisicamente due modbus uno che controlla i consumi e uno che controlla la produzione.

Io invece ho solo un sdm630 che uso per i consumi. Quindi a me interessa solo passare i consumi a metern. Per la produzione avendo inverter aurora li ho collegati direttamente a 123solar. Poi per avere tutto in metern faccio passare i dati di solar a metern con lo script pool123s.php. (se ti serve aiuto sul passaggio dati da 123solar a metern con lo script pool123s.php fammi sapere)

La mia configurazione quindi mi permette di usare mqtt di monitor solo per i consumi. per la produzione non posso usare mqtt ma per passare le info di produzione a homeassistant uso la lettura di file .json scritti sopra.

Se possono essere utili:
Immagine



Immagine

Prova a chiedere nella discussione di Garluk qui sul forum come si usa con 123solar e se può passarti eventuali file mancanti.

Se ho frainteso qualcosa fammi sapere (non sono sicuro di aver capito tutto anche perchè sono principiante)

megamarco83
Messaggi: 246
Iscritto il: 22/08/2016, 14:13

Re: MeterN e HomeHassistant

Messaggioda megamarco83 » 17/05/2020, 18:40

ciao Metus, no hai inteso tutto benissimo!
io ho due sdm120 dedicati rispettivamente a consumi e produzione
il mio sistema è funzionante in tutto, sia lato 123solar che metern
anche io uso il pool123s.php per passare i dati a metern da 123solar e tutto va che è una meraviglia da anni
volevo cambiare il protocollo di lettura dati passando dal programma sdm120c di gianfrdp a monitor SOLO per poter provare mqtt che monitor supporta.
lato metern ho già fatto tutto con monitor e funziona, il mio problema è che sono comunque vincolato per via di 123solar al protocollo di lettura di sdm120c (non ho inverter compatibile con modbus, quindi posso solo fare così)
altrimenti dovrei fare la prova a mantenere due protocolli, sdm120c per 123solar e monitor per i consumi di metern e poi tramite pool123s.php passare i dati a metern e vedere se con monitor riesco ad esportarli in mqtt

sul post di garluk ho già chiesto il protocollo monitor è stato cancellato per errore e pare nessuno lo abbia, quindi nulla :(


Torna a “MeterN”

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti