Monitoraggio impianto fotovoltaico con InfluxDB, Grafana, SDM Modbus e MBMD (opzionale il Raspberry) - EnergeticAmbiente.it

annuncio

Comprimi
Ancora nessun annuncio.

Monitoraggio impianto fotovoltaico con InfluxDB, Grafana, SDM Modbus e MBMD (opzionale il Raspberry)

Comprimi
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • Monitoraggio impianto fotovoltaico con InfluxDB, Grafana, SDM Modbus e MBMD (opzionale il Raspberry)

    Ciao a tutti,

    dopo il fallimento nell'uso di uno Shelly EM come base del mio sistema di monitoraggio dell'impianto fotovoltaico (qui

    Monitoraggio impianto fotovoltaico con Shelly EM

    la relativa discussione), ho deciso di cambiare strada utilizzando degli Eastron SDM230 e un Raspberry.

    Il setup di base è stato raccontato in lungo e in largo in questo thread

    Raspberry + MeterN - Monitoraggio energetico valido ed economico - GUIDA

    Fin da subito però ho pensato di cambiare il software di gestione (al posto quindi di MeterN), affidandomi ad un tool che ho sempre "sfiorato" dal punto di vista lavorativo, con un grande potenziale su questo specifico caso d'uso, ma col quale non ho mai avuto occasione di lavorarci.

    Parlo di

    InfluxDB e Grafana.

    InfluxDB è un raccoglitore di dati, un database, nello specifico di time-series, ed è ottimizzato per fare query sui dati alla velocità della luce.
    Grafana è un software specializzato nel fare grafici di ogni tipo (axis, bar, guage, progess...) accoppiato quasi in modo nativo con InfluxDb.

    Questa coppia mi darà la libertà di "graficare" i dati che voglio, ma soprattutto la garanzia di una persistenza "solida" dei dati.
    E soprattutto una architettura software moderna e visualizzazione dei dati "responsive", quindi perfetta sia su computer, table, smartphone.

    Nei prossimi giorni dettaglierò meglio come sto gestendo il sistema e le loro interazioni.

    Manca però ancora un componente: quello che legge dalla seriale e quindi dagli SDM (ne ho 2, uno per il consumo e uno per la produzione).

    Gironzolando per la rete ho trovato questo software

    mbmd/mbmd_run.md at master * volkszaehler/mbmd * GitHub

    un sofware scritto in linguaggio GO che ha molte caratteristiche interessanti:

    1) nativo per raspberry
    2) legge da SDM senza bisogno di librerie aggiuntive
    3) gira come demone e:
    3a) espone una applicazione web di monitoraggio
    3b) invia i dati su un server InfluxDB
    3c) invia i dati via MQTT
    3d) espone una API specifica per ogni dispositivo che legge
    3e) volendo si interfaccia a inverter SolarEdge (SE3000, SE9000) and SMA (Sunny Boy and Sunny Tripower)

    E che dire. Funziona perfettamente!

    La sua interfaccia web si aggancia via websocket e riceve i dati in tempo reale (fino ad 1s di ciclo), degli altri canali per ora ho provato solo l'InfluxDB e funziona perfettamente.

    Legge e trasmette i seguenti dati (qui visualizzati come Serie su Influx):

    codice:
    data,device=SDM1.1,type=ApparentPower
    data,device=SDM1.1,type=Cosphi
    data,device=SDM1.1,type=CosphiL1
    data,device=SDM1.1,type=CosphiL2
    data,device=SDM1.1,type=CosphiL3
    data,device=SDM1.1,type=CurrentL1
    data,device=SDM1.1,type=CurrentL2
    data,device=SDM1.1,type=CurrentL3
    data,device=SDM1.1,type=Export
    data,device=SDM1.1,type=ExportL1
    data,device=SDM1.1,type=ExportL2
    data,device=SDM1.1,type=ExportL3
    data,device=SDM1.1,type=Frequency
    data,device=SDM1.1,type=Import
    data,device=SDM1.1,type=ImportL1
    data,device=SDM1.1,type=ImportL2
    data,device=SDM1.1,type=ImportL3
    data,device=SDM1.1,type=ImportPower
    data,device=SDM1.1,type=Power
    data,device=SDM1.1,type=PowerL1
    data,device=SDM1.1,type=PowerL2
    data,device=SDM1.1,type=PowerL3
    data,device=SDM1.1,type=ReactivePower
    data,device=SDM1.1,type=Sum
    data,device=SDM1.1,type=SumL1
    data,device=SDM1.1,type=SumL2
    data,device=SDM1.1,type=SumL3
    data,device=SDM1.1,type=THD
    data,device=SDM1.1,type=THDL1
    data,device=SDM1.1,type=THDL2
    data,device=SDM1.1,type=THDL3
    data,device=SDM1.1,type=VoltageL1
    data,device=SDM1.1,type=VoltageL2
    data,device=SDM1.1,type=VoltageL3
    Il risultato su Influx + Grafana è il seguente:

    Clicca sull'immagine per ingrandirla. 

Nome:   grafana2.JPG 
Visite: 1 
Dimensione: 93.8 KB 
ID: 1986453


    Ho creato 2 grafici, uno per dispositivo (per ora il secondo, non avendo ancora il fotovoltaico allacciato è posizionato su una linea secondaria della casa).
    I due gauge mostrano l'ultimo valore rilevato (ogni 5s).
    Il campionamento avviene ogni 5s.

    Che dire ... sono molto soddisfatto, anche se la parte grafica è TUTTA da fare , i grafici di sopra sono giusto una prova ... non sono un mago dei dati (lavoro più sulla parte software) e quindi al momento devo ancora capire come gestire tutta la mole di dati (un campionamento ogni 5 secondi !) e come visualizzare correttamente:

    1) produzione
    2) autoconsumo
    3) immissione
    4) prelievo

    Inoltre devo ottimizzare l'uso del raspberry ...al momento la configurazione è simile a questa

    Clicca sull'immagine per ingrandirla. 

Nome:   IMG_20200215_144211.jpg 
Visite: 1 
Dimensione: 333.4 KB 
ID: 1986454

    ma messa nel quadro del contatore devo gestire i salti di corrente (con un powerbank) e usare un harddisk per il salvataggio dei dati per non sollecitare la SD.
    Maggiori dettagli in un prossimo post.

    Se qualcuno volesse partecipare per aiutarmi e migliorare i grafici di Grafana ... non aspetto altro :-)

    Grazie a tutti !
    Ultima modifica di glfp; 16-02-2020, 20:37.
    20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
    Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

  • #2
    glfp
    intanto complimenti, ma non ne dubitavo
    qui trovi un software di lettura degli SDM120 ma va bene per il 120, 220, 230, e credo anche il 630
    gianfrdp * GitHub

    Al termine del lavoro ti chiedo di rendere disponibile un sd preconfigurata per il pi4 vorrei testare il tuo lavoro su altre mie configurazioni, a suo tempo flanesi mi ascoltò e ne nacque un nuovo forum, mi piacerebbe che questa volta riportassimo tutto qui , su EA, dove tutto nacque per monitorare i nostri impianti FV, in fondo i creatori del forum lo meritano per l'ospitalità che sempre ci concedono, perciò se tu rendessi disponibile una versione della tua scheda potremmo essere sperimentatori della versione beta.
    grazie
    5.76 kW 24 IBC SOLAR Tilt 19°, Azimut+54° S-SO, Power-One 6 kW , 2 boiler 0-1200W in serie, controllo domotico , SDM220Modbus x monitoraggio consumi con MeterN, 7 split a PDC, http://pvoutput.org/list.jsp?userid=8660 Aderite al Team di monitoraggio denominato EnergeticAmbiente su Pvoutput.org , così sapremo ogni giorno quanta energia pulita hanno prodotto gli amici del forum. Questo il link del Team ?https://pvoutput.org/listteam.jsp?tid=1115

    Commenta


    • #3
      Per me tutto arabo ma sono disponile ai test.... :-)

      Inviato dal mio Redmi 4X utilizzando Tapatalk

      Commenta


      • #4
        glfp intanto , se vuoi ,puoi considerare questo tipo di esposizione dati, la prima schermata ha tre gauge, prod, cons, energia disponibile,
        la seconda ha consumo e produzione e i pulsanti per gestire accensione/spegnimento di otto utenze in funzione dell'energia disponibile,
        con priorità da consumo più basso a quello più alto, in tal modo si massimizza l'autoconsumo fin dalle prime ore di produzione.
        Il campionamento è a 5 minuti, l'interazione automatica dei pulsanti con isteresi di 1minuto.
        Clicca sull'immagine per ingrandirla. 

Nome:   Schermata 2020-02-17 alle 07.03.38.png 
Visite: 1 
Dimensione: 106.0 KB 
ID: 1973721 Clicca sull'immagine per ingrandirla. 

Nome:   Schermata 2020-02-17 alle 07.04.09.png 
Visite: 1 
Dimensione: 127.1 KB 
ID: 1973722
        5.76 kW 24 IBC SOLAR Tilt 19°, Azimut+54° S-SO, Power-One 6 kW , 2 boiler 0-1200W in serie, controllo domotico , SDM220Modbus x monitoraggio consumi con MeterN, 7 split a PDC, http://pvoutput.org/list.jsp?userid=8660 Aderite al Team di monitoraggio denominato EnergeticAmbiente su Pvoutput.org , così sapremo ogni giorno quanta energia pulita hanno prodotto gli amici del forum. Questo il link del Team ?https://pvoutput.org/listteam.jsp?tid=1115

        Commenta


        • #5
          Originariamente inviato da dolam Visualizza il messaggio
          glfp intanto , se vuoi ,puoi considerare questo tipo di esposizione dati, la prima schermata ha tre gauge, prod, cons, energia disponibile,
          la seconda ha consumo e produzione e i pulsanti per gestire accensione/spegnimento di otto utenze in funzione dell'energia disponibile,
          Si, appena avrò capito come fare le "somme" fra grafici, provo ad imbastire anche dei dati calcolati.
          Per quanto riguarda il comando di apparati, per me questo è out-of-scope. Mi interessa solo il monitoraggio ... almeno per ora ! Vedremo strada facendo, ma per ora non è di mio interesse oltre ad essere ampiamente gestito, credo anche meglio rispetto ad una soluzione basata su Grafana, da strumenti come HASS o EmonCMS o altri.

          L'unica cosa che so, più o meno, al momento, è che Grafana può richiamare delle URL (webhook) a fronte della programmazioni di Alert.
          Ultima modifica di glfp; 17-02-2020, 17:51.
          20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
          Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

          Commenta


          • #6
            Ho elaborato uno schema dei collegamenti, fisici e logici, del mio sistema.

            Eccolo:

            Clicca sull'immagine per ingrandirla. 

Nome:   schema.png 
Visite: 1 
Dimensione: 125.8 KB 
ID: 1973733

            E' formalizzato in linguaggio grafico chiamato UML, ma facilmente intuibile da chiunque.

            Mentre la parte di sinistra è quella solita di chiunque ha un impianto fotovoltaico, la parte di destra che rappresenta il Raspberry PI 4 B+ che ho usato, mostra le componenti interne. Al momento mbmd è configurato come demone che parte all'avvio con systemd, mentre le due componenti Influx e Grafana vivono in un ambiente Docker.

            Al momento c'è da ottimizzare ancora qualcosa: ad esempio se il Rasp si dovesse riavviare è importante la sequenza con cui partono i vari servizi:

            1) prima InfluxDB
            2) poi Grafana e MBMD (anche in parallelo)

            La porta 3000 si può poi esporre su Internet tramite Reverse Proxy o Port-Forwarding sui propri router, e avere accesso a Grafana da ovunque. Il sistema è già ottimizzato per mostrare i grafici in modalità responsive (ovvero si adatta agli schermi dei vari dispositivi) e poi mantiene una connessione in polling verso il server.

            Ovviamente, ancora da testare la robustezza di tutto questo sistema essendo un sistema in vita da 1 giorno !

            E' tutto.
            Se avete domande fatevi avanti, se avete osservazioni e notate degli errori non esitate a segnalarmeli !

            Grazie a tutti.
            20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
            Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

            Commenta


            • #7
              quindi per l'accesso da remoto sul raspberry non usi la porta 80-80 ma la 3000 ?
              quella andrebbe impostata su Port-Forwarding per la chiamata dall'esterno?
              5.76 kW 24 IBC SOLAR Tilt 19°, Azimut+54° S-SO, Power-One 6 kW , 2 boiler 0-1200W in serie, controllo domotico , SDM220Modbus x monitoraggio consumi con MeterN, 7 split a PDC, http://pvoutput.org/list.jsp?userid=8660 Aderite al Team di monitoraggio denominato EnergeticAmbiente su Pvoutput.org , così sapremo ogni giorno quanta energia pulita hanno prodotto gli amici del forum. Questo il link del Team ?https://pvoutput.org/listteam.jsp?tid=1115

              Commenta


              • #8
                Messaggio riscritto più sotto causa errato caricamento immagini.
                Ultima modifica di glfp; 17-02-2020, 23:04.
                20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                Commenta


                • #9
                  Originariamente inviato da dolam Visualizza il messaggio
                  quindi per l'accesso da remoto sul raspberry non usi la porta 80-80 ma la 3000 ?
                  quella andrebbe impostata su Port-Forwarding per la chiamata dall'esterno?
                  Si, perchè Grafana risponde "di default" su quella porta.
                  Ma in realtà col port-forward puoi mappare che dall'esterno di veda come 80 mentre poi internamente "forwarda" sulla 3000 in maniera trasparente.

                  In ogni caso le porte sono configurabili ... puoi anche fare in modo che Grafana risponda sulla 80.
                  Si può fare come uno preferisce :-)
                  20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                  Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                  Commenta


                  • #10
                    glfp non si vedono gli allegati

                    si anch'io uso mettere un numero sulla chiamata del port forwording che poi traduce sulla porta reale , è un espediente infantile che ci protegge dagli acherini piccoli, piccoli,
                    ma non c'è difesa che tenga su internet
                    ( il figlio di un mio amico, 14 anni, fa cose che fanno rabbrividire, verrebbe da togliere anche i cavi del telefono).
                    5.76 kW 24 IBC SOLAR Tilt 19°, Azimut+54° S-SO, Power-One 6 kW , 2 boiler 0-1200W in serie, controllo domotico , SDM220Modbus x monitoraggio consumi con MeterN, 7 split a PDC, http://pvoutput.org/list.jsp?userid=8660 Aderite al Team di monitoraggio denominato EnergeticAmbiente su Pvoutput.org , così sapremo ogni giorno quanta energia pulita hanno prodotto gli amici del forum. Questo il link del Team ?https://pvoutput.org/listteam.jsp?tid=1115

                    Commenta


                    • #11
                      Intanto la prima domanda me la faccio da solo:

                      Secondo voi quali dei due schema è più corretto ?

                      Clicca sull'immagine per ingrandirla. 

Nome:   soluzione1.PNG 
Visite: 1 
Dimensione: 102.4 KB 
ID: 1973737
                      Clicca sull'immagine per ingrandirla. 

Nome:   soluzione2.PNG 
Visite: 1 
Dimensione: 100.7 KB 
ID: 1973738




                      Quello di sinistra è quello che ho inserito nel post precedente, mentre quello a destra è una variante con i collegamenti da OUT dell'SDM fotovoltaico verso e direttamente nel salvavita.

                      Cambia qualcosa ?
                      Nel primo caso (sinistra) il contatore SDM di sinistra conteggia "produzione + prelievo" mentre quella di destra solo il "prelievo" ?

                      Oppure entrambe si comportano allo stesso modo ?

                      Così a occhio la soluzione di sinistra, con la produzione collegata a valle del contatore di prelievo, credo possa permettere una separazione dei due valori. Valori che mi daranno un numero negativo quando avrò immissione ovvero un consumo minore della produzione.

                      Qualche suggerimento ?
                      20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                      Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                      Commenta


                      • #12
                        Originariamente inviato da dolam Visualizza il messaggio
                        si anch'io uso mettere un numero sulla chiamata del port forwording che poi traduce sulla porta reale , è un espediente infantile che ci protegge dagli acherini piccoli, piccoli,
                        ma non c'è difesa che tenga su internet
                        La difesa non la fa un port-forwarding o un proxy, ma la qualità del software che risponde a quella porta :-)

                        Un aiuto può venire da un buon router che monitora la porta esposta e con strumenti come IDS e IPS, threat management e altre parole e sigle simili, che monitorano costantemente il traffico alla ricerca di minacce.
                        20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                        Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                        Commenta


                        • #13
                          @glfp
                          Prima di tutto complimenti !! Bellissima implementazione..
                          Io ho installato ShellyEM ( a me per fortuna non ha impallato la Lan!) e mi riprometto di accoppiarlo a Raspberry.. quindi avremo modo di condividere esperienze.

                          Venendo alle tue configurazioni, decisamente la seconda è più immediata e preferibile.
                          Da entrambe si possono ottenere le stesse info, ma sono differenti le elaborazioni matematiche a valle delle letture.

                          Dalla 1^ config:
                          -diagramma diretto letture SDM n° 1 : consumo globale della casa sempre >0
                          - diagramma derivato matematicamente: differenza fra letture SDM n° 1 e SDM n° 2 (FV) = diagramma prelievi/immissioni

                          Dalla 2^ config:
                          - diagramma diretto: prelievi/immissioni (SDM n° 1)
                          - diagramma derivato matematicamente: somma algebrica delle letture SDM N° 1 + SDM N° 2 = Consumo globale

                          Siccome quello che interessa maggiormente è il monitoraggio immissioni/autoconsumo con la seconda config hai direttamente quello che ti serve.
                          Ciao..

                          Commenta


                          • #14
                            Originariamente inviato da solarbyte Visualizza il messaggio
                            @glfp
                            Prima di tutto complimenti !! Bellissima implementazione..
                            Io ho installato ShellyEM ( a me per fortuna non ha impallato la Lan!) e mi riprometto di accoppiarlo a Raspberry.. quindi avremo modo di condividere esperienze.
                            Grazie mille !
                            Mi sto divertendo moltissimo finora ... speriamo non mi faccia impazzire e passare la voglia strada facendo ... anche se nel mio mestiere sono abituato a questo tipo di intoppi :-)))

                            E sicuramente la parte Grafana/Influx è assolutamente condivisibile ... volevo usare questo setup proprio con lo Shelly EM inizialmente ... Influx mi pare abbia un plugin per importare da MQTT ... forse dovrai solo mettergli un Mosquitto di mezzo ... o ancora meglio usare direttamente le API, ma non so se Influx possa autonomamente accedere a endpoint esterno per caricare il proprio db ...

                            Anch'io credo la seconda configurazione sia la migliore (quella di destra) .
                            Avevo solo un dubbio che essendo il solare collegato direttamente al salvavita avesse poi problemi a tornare indietro verso il contatore di scambio ... però in effetti così è proprio il sistema che farebbe andare in negativo il contatore SDM1 (quello collegato al contatore di scambio) in caso di immissione. In quel caso saprei senza ombra di dubbio che:

                            SDM1 > 0 prelevo
                            SDM1 < 0 immetto
                            SDM2 è sempre >= 0

                            e quindi:

                            a) if SDM1 <= 0 AND SDM2 > 0 then autoconsumo = SDM2 and immissione = SMD1 and consumo = SDM2 - SDM1
                            b) if SDM1 > 0 AND SDM2 > 0 then consumo = SDM1 + SDM2 and autoconsumo = SMD2 - SDM1 and immissione = 0
                            c) if SMD1 > 0 AND SDM2 = 0 then consumo = SDM1 and autoconsumo = 0 and immissione = 0

                            la condizione

                            e) if SDM1 < 0 ADN SDM2 = 0 è impossibile, come ovviamente quella
                            f) if SDM = 0 AND SMD2 = 0 (nel senso che la casa consuma sempre qualcosa)

                            Cosa ne dite ?
                            Ultima modifica di glfp; 18-02-2020, 10:05.
                            20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                            Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                            Commenta


                            • #15
                              Ciao..
                              Riguardo Software API etc, anche se un pò bazzico con informatica (generazione FORTRAN !! non so se mi spiego..) ho tutto da imparare da te.. ma abbiamo tempo
                              Riguardo le IF, avevo già analizzato il problema della grafica Autoconsumo. Ridotto all'osso le condizioni sono:
                              Posto: SMD1= Prel/Immiss (<0 immiss; >0 prel) SMD2= Prod (sempre >=0)
                              le condizioni di calcolo sono:
                              IF(SMD1>0) THEN Autoconsumo=SMD2
                              IF(SMD1<0) THEN Autoconsumo=SMD2+SMD1
                              La prima condizione va bene sia di notte (Autoconsumo=0=produzione nulla) sia di giorno in fase di prelievo superiore alla produzione: se sono in prelievo vuol dire che sto già succhiando al 100% la produzione e che non mi basta
                              La seconda condizione mi dice che essendo in immissione devo sommare algebricamente i due valori (positiva la prod. e negativa l'immissione).
                              A presto.
                              Ciao

                              Commenta


                              • #16
                                Ottimo lavoro, suggerirei di creare una repo github da dove clonare il codice, modificare, fare test ed eventualmente inviare pull request.
                                Ciao
                                Monti prenestini (RM) - 1885gg
                                LG Therma V Split R32 9kW + ECO COMBI1 500lt (impianto a termosifoni)
                                Fotovoltaico 4.76 kWp

                                Commenta


                                • #17
                                  Originariamente inviato da solarbyte Visualizza il messaggio
                                  Ciao..
                                  Riguardo Software API etc, anche se un pò bazzico con informatica (generazione FORTRAN !! non so se mi spiego..) ho tutto da imparare da te.. ma abbiamo tempo
                                  Riguardo le IF, avevo già analizzato il problema della grafica Autoconsumo. Ridotto all'osso le condizioni sono:
                                  Posto: SMD1= Prel/Immiss (<0 immiss; >0 prel) SMD2= Prod (sempre >=0)
                                  le condizioni di calcolo sono:
                                  IF(SMD1>0) THEN Autoconsumo=SMD2
                                  IF(SMD1<0) THEN Autoconsumo=SMD2+SMD1
                                  La prima condizione va bene sia di notte (Autoconsumo=0=produzione nulla) sia di giorno in fase di prelievo superiore alla produzione: se sono in prelievo vuol dire che sto già succhiando al 100% la produzione e che non mi basta
                                  La seconda condizione mi dice che essendo in immissione devo sommare algebricamente i due valori (positiva la prod. e negativa l'immissione).
                                  A presto.
                                  Ciao
                                  Proverò a buttare giù uno pseudo codice per formalizzare questi ragionamenti ;-)

                                  Nel frattempo dopodomani mi allacceranno l'impianto, così potrò iniziare a testare anche i valori negativi dell'immissione.
                                  20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                                  Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                                  Commenta


                                  • #18
                                    Originariamente inviato da raffaelem Visualizza il messaggio
                                    Ottimo lavoro, suggerirei di creare una repo github da dove clonare il codice, modificare, fare test ed eventualmente inviare pull request.
                                    Al momento non c'è del "nuovo" software da testare ... si tratta solo di file di configurazione e istruzioni per l'installazione dei vari moduli ... però l'idea di mettere su github non è male ... nei prossimi giorni proverò a buttare giù almeno un README.md

                                    I file su cui ci sarà più da lavorare saranno i json per la creazione dei grafici e le query su Influx
                                    Ultima modifica di glfp; 18-02-2020, 16:33.
                                    20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                                    Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                                    Commenta


                                    • #19
                                      Allora, fedele al motto "La potenza è nulla senza controllo", ho buttato giù uno schemino con le logiche di calcolo in pseudo-codice e il relativo flowchart.

                                      Mi ha aiutato il sito

                                      code2flow - interactive code to flowchart converter

                                      che fornisce un editor con relativo flowchart che si aggiorna in tempo reale.

                                      Obbiettivo: calcolare in qualunque istante le seguenti variabili

                                      - consumo
                                      - autoconsumo
                                      - immissione
                                      - prelievo
                                      - produzione

                                      che si tradurranno poi in 5 grafici distinti da sommare/comparare/visualizzare in modo ancora da capire ... ma l'importante è determinare in maniera precisa come si generano questi numeri.

                                      La logica di calcolo è questa:

                                      Premessa:

                                      • Ho chiamato SDM-FV il contatore che arriva da FotoVoltaico
                                      • Ho chiamato SDM-CS quello che arriva dal Contatore di Scambio
                                      • LA funzione ABS() rende un numero negativo in positivo ... serve giusto per avere "fisicamente" l'idea che i due valori si detraggono (ma in effetti essendo un numero negativo vale la somma, come giustamente scritto da SolarByte nel suo ultimo post).
                                      • Tutto si basa unicamente da questi due valori che, nel caso di SDM-CS può essere maggiore o minore-uguale di 0.


                                      Clicca sull'immagine per ingrandirla. 

Nome:   FlowChart.v1.0.png 
Visite: 1 
Dimensione: 63.5 KB 
ID: 1973752


                                      che in pseudo codice si traduce in:

                                      codice:
                                      Calcolo Variabili:
                                      
                                      
                                      - consumo
                                      - autoconsumo
                                      - immissione
                                      - prelievo
                                      - produzione;
                                      // Produco
                                      if(SDM-FV > 0) {
                                        if (SDM-CS > 0) {
                                          //SDM-CS > 0
                                          //Prelevo
                                          consumo = SDM-FV + SDM-CS
                                          autoconsumo = SDM-FV - SDM-CS
                                          immissione = 0
                                          prelievo = SDM-CS
                                          produzione = SDM-FV
                                        } else {
                                          // SDM-CS <= 0
                                          // Immetto
                                          consumo = SDM-FV - ABS(SDM-CS)
                                          autoconsumo = SDM-FV - ABS(SDM-CS)
                                          immissione = SDM-CS
                                          prelievo = 0
                                          produzione = SDM-FV
                                        } 
                                       } else {
                                         // SDM-FV = 0
                                         // Non Produco 
                                         consumo = SDM-CS
                                         autoconsumo = 0
                                         immissione = 0
                                         prelievo = SDM-CS
                                         produzione = 0 
                                       }
                                       Fine Elaborazione;
                                      Potete copiare e incollare questo codice nel sito in alto e modificarlo a piacimento.

                                      Cosa ne pensate ? E' corretto o sto prendendo qualche cantonata ?
                                      Un saluto.
                                      20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                                      Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                                      Commenta


                                      • #20
                                        Ciao,
                                        mi diverto.. mi sembra di essere ritornato a programmare..

                                        Ho cercato di semplificare..
                                        Guarda un pò:
                                        Clicca sull'immagine per ingrandirla. 

Nome:   FLOW_CHART_001.jpg 
Visite: 1 
Dimensione: 62.3 KB 
ID: 1973758Clicca sull'immagine per ingrandirla. 

Nome:   CODICE_001.jpg 
Visite: 1 
Dimensione: 56.3 KB 
ID: 1973759
                                        Scusa la grafica a penna..
                                        Ciao

                                        Commenta


                                        • #21
                                          il bello dell'informatica, c'è sempre una seconda via!!
                                          siete molto bravi, complimenti.
                                          5.76 kW 24 IBC SOLAR Tilt 19°, Azimut+54° S-SO, Power-One 6 kW , 2 boiler 0-1200W in serie, controllo domotico , SDM220Modbus x monitoraggio consumi con MeterN, 7 split a PDC, http://pvoutput.org/list.jsp?userid=8660 Aderite al Team di monitoraggio denominato EnergeticAmbiente su Pvoutput.org , così sapremo ogni giorno quanta energia pulita hanno prodotto gli amici del forum. Questo il link del Team ?https://pvoutput.org/listteam.jsp?tid=1115

                                          Commenta


                                          • #22
                                            Originariamente inviato da solarbyte Visualizza il messaggio
                                            Ciao,
                                            mi diverto.. mi sembra di essere ritornato a programmare..

                                            Ho cercato di semplificare..
                                            Ad una prima occhiata mi sembra che abbia senso ... ma il mirto post cena al mio fianco non mi aiuta ad essere troppo lucido ... domani lo guardo bene e lo metto in bella ;-)

                                            Grazie ! Ciao
                                            20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                                            Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                                            Commenta


                                            • #23
                                              Originariamente inviato da glfp Visualizza il messaggio
                                              Al momento non c'è del "nuovo" software da testare ... si tratta solo di file di configurazione e istruzioni per l'installazione dei vari moduli ... però l'idea di mettere su github non è male ... nei prossimi giorni proverò a buttare giù almeno un README.md

                                              I file su cui ci sarà più da lavorare saranno i json per la creazione dei grafici e le query su Influx
                                              Io attualmente ho messo su un sistema di monitoraggio spartano per la PDC con due sonde di temperatura su mandata e ritorno-

                                              Leggo i dati e li invio con curl su un db influx (4 righe di shell in tutto), per i grafici utilizzo R (deformazione professionale) che con una manciata di righe produce grafici interattivi con plotly

                                              Butto giù il codice R nel caso qualche smanettone fosse interessato, lo script produce un grafico (interattivo) a linee con tutte le variabili della misura pdc

                                              codice:
                                              library(influxdbr)
                                              library(xts)
                                              library(dplyr)
                                              library(plotly)
                                              
                                              
                                              con <- influx_connection(scheme = c("http"), host = "192.168.1.104",
                                                                port = 8086, user = "admin", pass = "admin", path = "/", group = NULL,
                                                                verbose = FALSE, config_file = "~/.influxdb.cnf", curl_options = NULL)
                                              
                                               # ottengo già un dataset nella forma time/variable/value
                                              serie <- influx_query(con, db = "mydb", query = "SELECT * FROM pdc", return_xts = FALSE)
                                              
                                              
                                              df <- as.data.frame(serie)
                                              
                                              
                                              g <- ggplot(df, aes(x = time, y = value, color = variable )) +
                                                geom_hline(yintercept = 35, color = "green", linetype = "dashed") + 
                                                geom_hline(yintercept = 30, color = "green", linetype = "twodash") +
                                                geom_line(aes(x = time, y = value, colour = variable), linetype = "solid", size = rel(0.5)) + 
                                                stat_smooth(data = subset(df, between(value, 30, 40)),  aes(x = time, y = value, colour = variable), size = rel(1), se = TRUE, linetype = "dashed") +
                                                scale_x_datetime(name = "", labels = date_format("%R", tz = "Europe/Rome"), date_breaks = "40 min")
                                              
                                              
                                              p <- ggplotly(g)
                                              print(p)
                                              Clicca sull'immagine per ingrandirla. 

Nome:   newplot.png 
Visite: 1 
Dimensione: 196.3 KB 
ID: 1973770
                                              Ultima modifica di raffaelem; 19-02-2020, 07:37.
                                              Monti prenestini (RM) - 1885gg
                                              LG Therma V Split R32 9kW + ECO COMBI1 500lt (impianto a termosifoni)
                                              Fotovoltaico 4.76 kWp

                                              Commenta


                                              • #24
                                                @glfp

                                                Mi è venuta in mente una diavoleria che usavo spesso per evitare le IF.

                                                Ecco le formule senza nemmeno una IF:

                                                PRODUZIONE = SDM_FV
                                                CONSUMO = SDM_CS + SDM_FV
                                                PRELIEVI = (ABS(SDM_CS) + SDM_CS)/2
                                                IMMISSIONI = (ABS(SDM_CS) - SDM_CS)/2 (si ottengono valori positivi ovviamente)
                                                AUTOCONSUMO = PRODUZIONE-IMMISSIONI (formula da mettere obbligaoriamente dopo le precedenti)
                                                o anche se non si vuole essere vincolati all'ordine delle elaborazioni :
                                                AUTOCONSUMO = SDM_FV- (ABS(SDM_CS) - SDM_CS)/2

                                                Ciaoo..

                                                Commenta


                                                • #25
                                                  Scusate se mi intrometto , i due dati fondamentali da vedere in un impianto con FV sono produzione e consumo , quindi un SDM su inverter e un SDM su utilizzi cioè a valle del generale di casa , tutti dati positivi e su questi si fà il grafico (come fanno un pò tutti a partire da pvout vedi una curva di produzione e una curva di consumo o utilizzo sovramesse , già ad occhio dal grafico vedi se sei in autoconsumo o no )... non mi sembra fondamentale mettersi a vedere sei hai 1watt in autoconsumo o no o se immetti , si vede già con quell 2 variabili l', tanto poi quello che conta in soldoni è tenersi un foglio con sopra produzione, immesso e prelevato leggendo i contatori ogni mese e avere i dati uguali a GSE e bolletta.....
                                                  se poi uno se lo vuole fare l'altra variabile con produzione-consumo o viceversa
                                                  AUTO BANNATO

                                                  Commenta


                                                  • #26
                                                    Originariamente inviato da solarbyte Visualizza il messaggio
                                                    @glfp

                                                    Mi è venuta in mente una diavoleria che usavo spesso per evitare le IF.
                                                    ..
                                                    Wow, così mi viene il malditesta
                                                    Da ieri non ho avuto molto tempo di ragionare ma se questi tuoi calcoli sono corretti (e non ne dubito) direi che siamo a cavallo .... fare i grafici dovrebbe essere molto più semplice .... c’è solo l’incognita dell’ultimo valore dipendente dagli altri ... vediamo !
                                                    Grazie !
                                                    20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                                                    Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                                                    Commenta


                                                    • #27
                                                      Originariamente inviato da spider61 Visualizza il messaggio
                                                      Scusate se mi intrometto , i due dati fondamentali da vedere in un impianto con FV sono produzione e consumo , quindi un SDM su inverter e un SDM su utilizzi cioè a valle del generale di casa , tutti dati positivi e su questi si fà il grafico (come fanno un pò tutti a partire da pvout vedi una curva di produzione e una curva di consumo o utilizzo sovramesse , già ad occhio dal grafico vedi se sei in autoconsumo o no )... non mi sembra fondamentale mettersi a vedere sei hai 1watt in autoconsumo o no o se immetti , si vede già con quell 2 variabili l', tanto poi quello che conta in soldoni è tenersi un foglio con sopra produzione, immesso e prelevato leggendo i contatori ogni mese e avere i dati uguali a GSE e bolletta.....
                                                      se poi uno se lo vuole fare l'altra variabile con produzione-consumo o viceversa
                                                      Ciao Spider, da uno storico del forum come te ogni commento è valido !
                                                      Quindi tu metteresti l’SDM-CS DOPO il salvavita ?

                                                      Così però ci perdiamo qualche informazione ... non ho ancora capito bene quale, ma a prescindere: secondo te nella configurazione che abbiamo pensato io e solarbyte, c’è qualche controindicazione ?
                                                      Nel senso che se non perdiamo niente, meglio avere informazioni piú dettagliate e precise che meno .. .tanto poi i dati li si elabora come vuoi.

                                                      Grazie.
                                                      20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                                                      Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                                                      Commenta


                                                      • #28
                                                        Non perdi nessun dato , mi sembra , hai la prodotta e la consumata , e ci fai il grafico, poi se vuoi comandare qualcosa da attivare per eccesso FV , fai prod-cons , con la stessa formula se positivo hai immissione , se negativo hai prelievo e ci puoi calcolare autoconsumo (ma tanto quello rale è ciò che segna il contatore) , il resto è superfluo secondo me ,
                                                        tanto il grafico importante è quanto consumi a prescndere dal FV e quanto produci, altrimenti nel tuo modo di connessione , il totale di consumo lo devi fare attraverso la solita formula prod e scambio , l'ora tarda non mi fà connettere bene ma se faccio prod + scambio dovrei avere il consumo totale lo stesso , se scambio è negativo vuol dire che consumo è minore di prod , se postivo che consumo è maggiore di prod ? si forse va bene così....
                                                        AUTO BANNATO

                                                        Commenta


                                                        • #29
                                                          @glfp
                                                          Originariamente inviato da glfp Visualizza il messaggio
                                                          Wow, così mi viene il malditesta
                                                          .... c’è solo l’incognita dell’ultimo valore dipendente dagli altri ... vediamo !
                                                          Grazie !
                                                          Se usi l'ultima formula:
                                                          AUTOCONSUMO = SDM_FV- (ABS(SDM_CS) - SDM_CS)/2
                                                          non hai nessuna incognita, essa è legata solo alle letture quindi i grafici possono essere elaborati a prescindere dall'ordine di esecuzione.

                                                          Al riguardo delle considerazioni di Spider (a proposito: Ciao a te che sei pietra miliare del Forum!!!) ritengo che sia una questione di preferenze personali. E' chiaro ed evidente che le info che si hanno in entrambe le configurazioni sono esattamente equivalenti e non si hanno perdite di dati scegliendo una o l'altra.
                                                          Io preferisco quella con la configurazione SDM sullo scambio perchè dal grafico diretto delle letture hai immediatamente la percezione dei regimi prelievo/immissione (>0 o <0) senza dover graficare altre grandezze. Ma ripeto è solo una questione di scelta personale.
                                                          Poi con il raspberry a disposizione si possono graficare tutte le grandezze in tutte le combinazioni possibili e immaginabili.
                                                          Ciao a tutti.

                                                          Commenta


                                                          • #30
                                                            Ragazzi, fra un’oretta vengono a montarmi i contatori e ad allacciare l’impianto ... sono contento come un bambino ...

                                                            Iniziamo poi a graficare ...
                                                            20*305W (ovest) + 11*460W (est) + 3*385W (sud)- Totale: 12.3Kw + Solaredge 6kw.
                                                            Monitoraggio con InfluxDB, Grafana, Docker, Raspberry | Discussione: https://bit.ly/2XAol57 | Guida completa su Github: https://bit.ly/2XTm8Sh

                                                            Commenta

                                                            Attendi un attimo...
                                                            X