Misuratore di consumi con seriale RS485 - SDM120 - EnergeticAmbiente.it

annuncio

Comprimi
Ancora nessun annuncio.

Misuratore di consumi con seriale RS485 - SDM120

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

  • Misuratore di consumi con seriale RS485 - SDM120

    Ciao a tutti,
    volevo mettere in evidenza questo interessante misuratore di consumi, che oltre ad avere l'uscita ad impulsi è anche dotato di interfaccia seriale RS485.

    Misuratore di consumi RS485 da barra DIN

    Analizzatore di rete su LAN con il sollae CSE-H55

    eventualmente anche acquistabile nel mercato asiatico alla modica cifra di 12-16$
    SDM120C Single Phase Energy Meter, Modbus RS485 Meter,LCD Display, Mono Phase Meter,MID Pending

    Visto la completezza dei dati ricavabili (tensione, corrente, fattore di potenza, energia, frequenza, ecc...) e l'estrema precisione di cui è dotato, credo che potrebbe essere utilizzato per il monitoraggio energetico.

    Visto poi anche il prezzo di 45 euro (in italia) .......

    Se qualche buonanima un pò più competente di me in materia fosse in grado di scrivere uno script php da poter utilizzare con un raspberry o altro ...........
    Ultima modifica di flane; 18-08-2014, 13:36.
    Monitoraggio energetico con Raspberry – 123Solar e MeterN
    Monitoraggio energetico con Raspberry – Guida all’installazione e configurazione - IMPULSI
    Monitoraggio energetico con Raspberry e contatori EASTRON SDM120modbus e/o SDM220modbus

  • #2
    Aggiungo alcune interessanti informazioni:

    Ho trovato uno script che esegue la lettura della potenza su un misuratore EM24DIN Carlo Gavazzi (simile a quello riportato sopra) tramite RS485 :
    MODBUS facile con PHP che usa questo Protocollo di comunicazione

    Credo che può essere un’ottima base di partenza e con poche modifiche possa essere adattato per leggere i vari parametri energetici che può fornire l’SDM120C.

    Questo è il Protocollo di comunicazione per l'SDM120C

    Chi mastica un po’ di linguaggio php più di me penso possa farlo facilmente, si tratta di fare qualche piccolo aggiustamento e poi magari come possibile evoluzione estrarre non solo la potenza totale, ma tutte le grandezze energetiche che questo misuratore può fornire:
    Clicca sull'immagine per ingrandirla. 

Nome:   ScreenShot001.jpg 
Visite: 1 
Dimensione: 86.3 KB 
ID: 1945870

    Dai forza, chi mi può dare una mano ?
    Grazie a tutti in anticipo.
    Monitoraggio energetico con Raspberry – 123Solar e MeterN
    Monitoraggio energetico con Raspberry – Guida all’installazione e configurazione - IMPULSI
    Monitoraggio energetico con Raspberry e contatori EASTRON SDM120modbus e/o SDM220modbus

    Commenta


    • #3
      Ciao,
      ho implementato il programma per leggere i parametri.
      codice:
      pi@raspberrypi ~/modbus $ ./smd120c
      Usage: ./smd120c [-a address] [[-s new_address] | [-p] [-v] [-c] [-e] [-i] [-t] [-b baud_rate]] device
      
      where
              -a address      Meter number (between 1 and 247). Default: 1
              -s new_address  Set new meter number (between 1 and 247)
              -p              Get power (W)
              -v              Get voltage (V)
              -c              Get current (A)
              -e              Get exported energy (kWh)
              -i              Get imported energy (kWh)
              -t              Get total energy (kWh)
              -b baud_rate    Use baud_rate serial port speed (1200, 2400, 4800, 9600). Default: 2400
              device          Serial device, i.e. /dev/ttyUSB0
      
      Serial device is required. When no parameter is passed, retrives all values
      pi@raspberrypi ~/modbus $ ./smd120c -a 3 -p /dev/ttyUSB0
      
      Power: 49.20 W
      
      pi@raspberrypi ~/modbus $ ./smd120c -a 3 -i /dev/ttyUSB0
      
      Import Active Energy: 0.81 KWh
      
      pi@raspberrypi ~/modbus $ ./smd120c -a 3 /dev/ttyUSB0
      
      Voltage: 228.80 V
      
      
      Current: 0.24 A
      
      
      Power: 51.50 W
      
      
      Import Active Energy: 0.82 KWh
      
      
      Export Active Energy: 0.00 KWh
      
      
      Total Active Energy: 0.82 KWh


      Devo testare 2 contatori collegati in serie.
      La documentazione dei comandi non è completamente corretta, ne ho trovata un'altra con i comandi giusti.
      Prossimamente posto i dettagli
      Ultima modifica di gianfrdp; 19-01-2015, 06:30.
      Impianto FV 5,88 kWp: 24 Canadian Solar CS6P-M 245W, 2 Power One PVI-3.0-OUTD-S-IT, Azimut 0°, Tilt 18°, My PVOutput, SDM120C
      PDC: Panasonic Aquarea 9kW T-CAP + HybridCube HYC343/19/0, radiante a pavimento 120 mq, 2 VMC decentralizzate Mitsubishi VL-100U-E

      Commenta


      • #4
        Ottimo gianfrdp,
        ho fatto anch'io qualche prova con il programmino in C di questo sito:

        Raspberry Pi ModBus Energy Meter 2

        Vedo che tu hai personalizzato il tutto per benino in modo da dare i parametri da linea di comando.
        Attendo con ansia i tuoi dettagli.

        Scusa ti chiedevo una cosa.
        Io uso già l'RS485 per le lettura dei dati dall'inverter, ma in quel caso la velocità è impostata a 19200 baud (Inverter Power-One).
        Avendo velocità diverse è d'obbligo l'uso di due adattatori USB-RS485 diversi per leggere inverter e consumi vero ?

        Grazie

        PS: più contatori non vanno collegati in serie, ma tutti in parallelo con indirizzi diversi. Ma ovviamente lo sapevi già, la mia era solo una puntualizzazione.
        Ultima modifica di flane; 19-01-2015, 08:32.
        Monitoraggio energetico con Raspberry – 123Solar e MeterN
        Monitoraggio energetico con Raspberry – Guida all’installazione e configurazione - IMPULSI
        Monitoraggio energetico con Raspberry e contatori EASTRON SDM120modbus e/o SDM220modbus

        Commenta


        • #5
          ... mi era sfuggito questo post!

          Direi che ci siamo! Per le varie schede rs485 penso basti un solo adattatore rs485 to lan.

          Tutti gli apparati rs485 hanno un indirizzo e possono essere collegati in serie (almeno una 30ina!). Chiaramente si deve impostare se possibile la stessa velocità, bit di stop e parità etc.

          Inoltre sul sito postato da flane ci sono anche delle schede relè controllabili via seriale..... per la gestione futura dei carichi!

          Per tutti gli apparati serve la tabella di riferimento con le posizioni dove ogni tipologia di misuratore memorizzai i dati, per il resto tutti i programmi-listati potrebbero essere standard....

          Sono bravi sti ragassi!!!!

          Commenta


          • #6
            GRANDE Gianfrdp
            AUTO BANNATO

            Commenta


            • #7
              codice:
              pi@pi-alarm ~ $ sudo apt-get install libmodbus-dev
              pi@pi-alarm ~ $ unzip sdm120c-1.0.zip
              pi@pi-alarm ~ $ cd sdm120c-1.0
              pi@pi-alarm ~/sdm120c-1.0 $ make clean
              pi@pi-alarm ~/sdm120c-1.0 $ make
              pi@pi-alarm ~/sdm120c-1.0 $ sudo cp sdm120c /usr/local/bin/
              codice:
              pi@pi-alarm ~/sdm120c-1.0 $ sdm120c
              sdm120c 1.0: ModBus RTU client to read EASTRON SDM120C smart mini power meter registers
              
              Usage: sdm120c [-a address] [[-s new_address] | [-p] [-v] [-c] [-e] [-i] [-t] [-b baud_rate]] device
              
              where
                      -a address      Meter number (between 1 and 247). Default: 1
                      -s new_address  Set new meter number (between 1 and 247)
                      -p              Get power (W)
                      -v              Get voltage (V)
                      -c              Get current (A)
                      -e              Get exported energy (kWh)
                      -i              Get imported energy (kWh)
                      -t              Get total energy (kWh)
                      -b baud_rate    Use baud_rate serial port speed (1200, 2400, 4800, 9600). Default: 2400
                      device          Serial device, i.e. /dev/ttyUSB0
              
              Serial device is required. When no parameter is passed, retrives all values
              Il programma l'ho scritto da zero usando la libreria libmodbus, all'inizio come esempio stavo vedendo anche io quello sul sito bulgaro.
              Implementa i comandi di lettura dei valori di potenza (-p), voltaggio (-v), corrente (-c), energia in entrata (-i), in uscita (-e) e totale (-t).
              Inoltre è possibile scegliere l'indirizzo RS485 del contatore (-a), di default è 1, e cambiare l'indirizzo di un contatore (-s).
              Prevede il device del convertitore USB-RS485, tipicamente /dev/ttyUSB0, ma potrebbe essere anche /dev/ttyUSB1, ecc.

              Per cambiare l'indirizzo del dispositivo da 1 a 2, premere il pulsante sul contatore per 3 secondi, comapre la scritta - SET -, quindi
              codice:
               sdm120c -a 1 -s 2 /dev/ttyUSB0
              Riavviare il contatore staccando e riattaccando la fase in ingresso.

              Quindi, per leggere la potenza istantanea del contatore con indirizzo 2
              codice:
               sdm120c -a 2 -p /dev/ttyUSB0
              In allegato il programma compilato su Raspbian con il sorgente e il protocollo corretto del contatore.

              Ora manca da fare un pooler per meterN: poiché meterN ogni 5 min legge l'energia consumata in quell'intervallo, ma il contatore restituisce solo l'energia totale e non parziale, ad ogni lettura dell'energia bisogna salvare il valore letto e alla lettura successiva fare la differenza

              PS: si intendevo in parallelo (A-A, B-B),
              PPS: non sono sicuro che sullo stesso connettore RS485 possa funzionare aurora e sdm120c, potrebbero andare in lock tra di loro visto che bisognerebbe fare un doppio poll... è da provare.
              File allegati
              Impianto FV 5,88 kWp: 24 Canadian Solar CS6P-M 245W, 2 Power One PVI-3.0-OUTD-S-IT, Azimut 0°, Tilt 18°, My PVOutput, SDM120C
              PDC: Panasonic Aquarea 9kW T-CAP + HybridCube HYC343/19/0, radiante a pavimento 120 mq, 2 VMC decentralizzate Mitsubishi VL-100U-E

              Commenta


              • #8
                Grande Gianfrdp

                Io ho provato a metter il contatore sullo stesso bus con l'aurora, ma non riuscivo più a leggere l'inverter (pur avendo indirizzi diversi)
                ma forse ho sbagliato qualcosa io ... non sono bravo in queste cose ....
                ho risolto usando due adattatori usb-rs485 diversi, uno per l'inverter ed uno per i contatori.

                Ho visto che il mio contatore è impostato a 2400 baud, sai anche il comando per impostare la velocità ?
                Forse potresti implementare anche questa modifica ?

                Grazie
                Ultima modifica di flane; 19-01-2015, 09:49.
                Monitoraggio energetico con Raspberry – 123Solar e MeterN
                Monitoraggio energetico con Raspberry – Guida all’installazione e configurazione - IMPULSI
                Monitoraggio energetico con Raspberry e contatori EASTRON SDM120modbus e/o SDM220modbus

                Commenta


                • #9
                  Per ora non ho implementato tutti i comandi riconosciuti dal contatore.
                  Potrei implementarlo, ma la velocità selezionabile è una tra 1200, 2400, 4800, 9600
                  Impianto FV 5,88 kWp: 24 Canadian Solar CS6P-M 245W, 2 Power One PVI-3.0-OUTD-S-IT, Azimut 0°, Tilt 18°, My PVOutput, SDM120C
                  PDC: Panasonic Aquarea 9kW T-CAP + HybridCube HYC343/19/0, radiante a pavimento 120 mq, 2 VMC decentralizzate Mitsubishi VL-100U-E

                  Commenta


                  • #10
                    Certo ho visto che la massima velocità è 9600 baud e non 19200, ma il mio interesse non era per avere la stessa velocità con l'inverter, ma semplicemente per velocizzare l'operazione di lettura perchè ho notato che comunque impiega un certo tempo e credo che poter avere una lettura live più veloce su metern migliori le cose.

                    Pensando poi che si possono inserire anche diversi sensori per monitorare anche tensione, cos fi ........

                    Comunque rinnovo i complimenti per il lavoro fatto.

                    Appena definito il tutto per l'uso con metern provvederò sicuramente ad integrare la guida.
                    Monitoraggio energetico con Raspberry – 123Solar e MeterN
                    Monitoraggio energetico con Raspberry – Guida all’installazione e configurazione - IMPULSI
                    Monitoraggio energetico con Raspberry e contatori EASTRON SDM120modbus e/o SDM220modbus

                    Commenta


                    • #11
                      Gianfrdp complimenti per il lavoro svolto, appena abbiamo i contatori iniziamo il test, volevo fare solo una puntualizzazione riguardo al consumo su metern, metern non ha bisogno della differenza dell'energia consumata, ha solo bisogno del totale progressivo ogni 5', la differenza la calcola lui, del resto fa lo stesso con la produzione, quindi ricapitolando, i valori necessari a metern sono: potenza istantanea per il live e totale kWh per il consumo.
                      14,805 KWp - 63 moduli Rew Solar RC235 MP60/1 235W - Tilt 13° - Azimut -15° SUD
                      Inverter PowerOne Aurora PVI-10.0-OUTD-IT e TRIO-7.5-TL-OUTD
                      Eflow Live rev. 3.2
                      (funziona anche con multi inverter e multi contatori consumo)

                      Commenta


                      • #12
                        SE non e' settabile 19200 , mi sa' che non si possa usare la stessa rete 485 a cui e' connesso Aurora (forse se si puo' abbassare auroara a 9600) , sarebbe un casino ad ogni lettura cambiare la velocita con stty ....da un punto di vista hardware invece sarebbe perfetto con un unico doppino telefonico ho cablato casa e ci connetto quello che volgio , esistono anche rele 485 quindi per accendere/spegnere carichi......

                        Cosi ad occhio , fa' un po' come il protocollo per leggere i Danfoss TLX che e' (o deve essere simile al) modbus http://www.danfoss.com/NR/rdonlyres/...HE20110513.pdf , manda una stringa per leggere un dato aspetta la ricezione e alla fine per leggere i 13-14 dati che mi interessano ci mette 5-6" per inverter.....

                        concordo con scresan , va bene (anzi meglio) il totale progressivo della energia , e l'istantanea....
                        AUTO BANNATO

                        Commenta


                        • #13
                          Originariamente inviato da ninodifranco Visualizza il messaggio
                          .... metern non ha bisogno della differenza dell'energia consumata, ha solo bisogno del totale progressivo ogni 5', la differenza la calcola lui, del resto fa lo stesso con la produzione, quindi ricapitolando, i valori necessari a metern sono: potenza istantanea per il live e totale kWh per il consumo.
                          Scusa Nino,
                          ma tu intendi che usando direttamente il pooler.php di metern, opportunamente modificato inserendo ovviamente il comando per la lettura del contatore totale di energia attiva via RS485 dovrebbe funzionare?

                          Qui:

                          http://metern.org/

                          in "Pulse meters Guide", nella sezione "Main pooling", non mi sembra dica così, ma dice di dargli il valore negli ultimi 5 minuti e lui lo somma al precedente valore registrato nei csv ....


                          Lo script java della mia guida, dà a metern le differenza di energia consumata nei 5' e non il conteggio totale .... e così metern funziona.
                          Secondo me a ragione gianfrdp ......
                          Ultima modifica di flane; 19-01-2015, 10:59.
                          Monitoraggio energetico con Raspberry – 123Solar e MeterN
                          Monitoraggio energetico con Raspberry – Guida all’installazione e configurazione - IMPULSI
                          Monitoraggio energetico con Raspberry e contatori EASTRON SDM120modbus e/o SDM220modbus

                          Commenta


                          • #14
                            no, flane il tuo script java fa il contrario, in pratica usa un totalizzatore virtuale, che implementa ogni 5 minuti,
                            visto che il contatore ad impulsi non ha un contatore totale ma riesce a leggere solo il parziale tramite impulsi,
                            a metern invece serve il totale in questo formato (0.0*Wh)
                            lo script di gianfranco non so in quale formato restituisce i valori, se li restituisce in altro formato e sicuramente in kWh,
                            bisogna fare un piccolo pooler che trasformi il dato letto nel formato giusto.
                            il lavoro di implementare il contatore ogni 5 minuti lo fa il file pooler.php dato che il progetto di Jean Mark utilizza arduino e misuratori senza totalizzatore, ma a noi non serve il pooler.php, visto che gia abbiamo il totale del contatore.
                            Ultima modifica di ninodifranco; 19-01-2015, 11:11.
                            14,805 KWp - 63 moduli Rew Solar RC235 MP60/1 235W - Tilt 13° - Azimut -15° SUD
                            Inverter PowerOne Aurora PVI-10.0-OUTD-IT e TRIO-7.5-TL-OUTD
                            Eflow Live rev. 3.2
                            (funziona anche con multi inverter e multi contatori consumo)

                            Commenta


                            • #15
                              Sono sicuro che meterN con Arduino legge i consumi parziali dei 5 min e poi resetta il valore, perché lo sto usando.

                              Lo script pooler.php riporta
                              codice:
                                  if ($argv[1] == 'elect') {
                                      $metnum = 1;
                                      $cmd    = "$pathtomn/comapps/poolmeters.py relect"; // Request counters values during a 5 min period
                              Il programma poolmeters.py se usato con il parametro relect:
                              codice:
                               if sys.argv[1] == 'relect': # Elect & reset counter
                                      ...
                                      ser.write("relect\n".encode("utf-8"))
                              Che su arduino corrispondere ad azzerare il contatore di kWh e restituire il valore accumulato nell'intervallo.
                              Infatti in poolermeter.ino
                              codice:
                                 else if (inputString == "relect") { // Retrieve values during a 5min period and put counter to zero. pooler.php will then increment the total counter.
                                      String str_out = String(countE);
                                      countE = 0;
                                      Serial.println("1(" + str_out + "*Wh)"); // ID(VALUE*UNIT)
                                    }

                              Sempre nel file nel file pooler.php
                              codice:
                              $lastval += $prevval;
                              quindi somma al valore dei 5 min (parziale) letto l'ultimo valore nel CSV

                              Infatti nel sito di meterN riporta
                              The Main pooling :
                              Since the counter should always increase until it pass-over and can't return to zero (after a surge or if the arduino is reseted), the solution is to read the last recorded value in the daily csv and increment this record with the counting during the 5 min pooling period. Then, put to zero the arduino counter and so on..
                              It mean that even if meterN or the logger is stopped, the counter will always be increased and metered as long as the arduino is powered !
                              This is what the 'pooler.php' example script does.
                              Per funzionare con il contatore ModBus bisogna adattare il pooler.php (oltre ad invocare sdm120c o un wrapper o aggiungo l'output nel formato meterN) eliminando quella riga della somma perché il valore in kWh è gia il totale. Oppure salvarsi l'ultimo valore letto e poi al giro successivo calcolare la differenza.
                              sdm120c restituisce l'unico valore che riporta il contatore: kWh totali
                              Ultima modifica di gianfrdp; 19-01-2015, 11:22.
                              Impianto FV 5,88 kWp: 24 Canadian Solar CS6P-M 245W, 2 Power One PVI-3.0-OUTD-S-IT, Azimut 0°, Tilt 18°, My PVOutput, SDM120C
                              PDC: Panasonic Aquarea 9kW T-CAP + HybridCube HYC343/19/0, radiante a pavimento 120 mq, 2 VMC decentralizzate Mitsubishi VL-100U-E

                              Commenta


                              • #16
                                esatto gianfranco, noi abbiamo gia il totale che ci fa il nostro contatore, quindi non dobbiamo sommare niente, dobbiamo solo convertire i kWh in Wh
                                adattandoli al formato 0.0*Wh, e niente più
                                se questo lavoro lo faceva lo script di lettura si poteva gia dare il valore direttamente a metern.

                                questa è la traduzione di quello che fa pooler.php:
                                Dal momento che il contatore deve sempre aumentare fino a quando non passa-over e non può tornare a zero (dopo un aumento o se la Arduino è azzerato), la soluzione è quello di leggere l'ultimo valore registrato nel csv quotidiana e incrementare questo record con il conteggio durante il periodo di messa in comune 5 min. Poi, mettere a zero il contatore arduino e così via ..
                                E dire che, anche se viene arrestato Metern o il registratore, il contatore sarà sempre aumentato e dosato finché il arduino è alimentato!
                                Questo è ciò che il 'pooler.php' script di esempio fa.
                                14,805 KWp - 63 moduli Rew Solar RC235 MP60/1 235W - Tilt 13° - Azimut -15° SUD
                                Inverter PowerOne Aurora PVI-10.0-OUTD-IT e TRIO-7.5-TL-OUTD
                                Eflow Live rev. 3.2
                                (funziona anche con multi inverter e multi contatori consumo)

                                Commenta


                                • #17
                                  Concordi con me che pooler.php così come è non va bene per questo contatore?
                                  Cmq stasera provo a lavorarci e fare la modifica
                                  Impianto FV 5,88 kWp: 24 Canadian Solar CS6P-M 245W, 2 Power One PVI-3.0-OUTD-S-IT, Azimut 0°, Tilt 18°, My PVOutput, SDM120C
                                  PDC: Panasonic Aquarea 9kW T-CAP + HybridCube HYC343/19/0, radiante a pavimento 120 mq, 2 VMC decentralizzate Mitsubishi VL-100U-E

                                  Commenta


                                  • #18
                                    Certo che non va bene il pooler così per com'è, a noi serve un pooler che adatti solo il formato dei dati e basta
                                    a questo punto penso che si dovrebbe adattare anche il valore della potenza istantanea nel formato 12345.0*W

                                    questo è quello che vuole metern per il totale: "the correct format is 1(1234.5*Wh)"
                                    e questo è quello che vuole per la potenza: "the correct format is 1(1234.5*W)"
                                    Ultima modifica di ninodifranco; 19-01-2015, 11:36.
                                    14,805 KWp - 63 moduli Rew Solar RC235 MP60/1 235W - Tilt 13° - Azimut -15° SUD
                                    Inverter PowerOne Aurora PVI-10.0-OUTD-IT e TRIO-7.5-TL-OUTD
                                    Eflow Live rev. 3.2
                                    (funziona anche con multi inverter e multi contatori consumo)

                                    Commenta


                                    • #19
                                      Concordo con quanto riportato da gianfrpd ed anche chi ha sviluppato lo script Java che utilizzo io per gli impulsi, mi ha risposto quanto segue:

                                      codice:
                                      Per l'energia restituisco la mera somma degli impulsi ricevuti nei 5' considerando la costante di correzione  cioè dall'ultima lettura ho letto 200 impulsi e ho 2000 imp/kWh? 200/2000 = 0,1 kWh
                                      
                                      Quindi se metern è arrivato a 234500 tu gli passi la lettura attuale di 100 Wh e lui si salva 234600. Tu gli devi passare il valore. il demone di metern poi lo somma al suo totale
                                      Monitoraggio energetico con Raspberry – 123Solar e MeterN
                                      Monitoraggio energetico con Raspberry – Guida all’installazione e configurazione - IMPULSI
                                      Monitoraggio energetico con Raspberry e contatori EASTRON SDM120modbus e/o SDM220modbus

                                      Commenta


                                      • #20
                                        *** Citazione integrale rimossa. Violazione art.3 del regolamento del forum. nll ***

                                        allora siete duri a capire,
                                        la somma la fa il file pooler.php che viene utilizzato anche con il tuo script, a noi non serve che pooler faccia la somma, noi la somma c'è l'abbiamo gia.
                                        Ultima modifica di nll; 22-01-2015, 18:16.
                                        14,805 KWp - 63 moduli Rew Solar RC235 MP60/1 235W - Tilt 13° - Azimut -15° SUD
                                        Inverter PowerOne Aurora PVI-10.0-OUTD-IT e TRIO-7.5-TL-OUTD
                                        Eflow Live rev. 3.2
                                        (funziona anche con multi inverter e multi contatori consumo)

                                        Commenta


                                        • #21
                                          Non è questione di essere duri, il fatto è che, per chi ha già il sistema di monitoraggio in funzione, non puoi mandargli direttamente il valore dell'energia (opportunamente convertito in Wh) del contatore da salvare nel csv, ma se si vuole mantenere una continuità anche tutti i dati già loggati, deve rimanere il sistema della lettura (per differenza) sui 5 minuti ed andare avanti allo stesso modo ....... almeno credo
                                          Monitoraggio energetico con Raspberry – 123Solar e MeterN
                                          Monitoraggio energetico con Raspberry – Guida all’installazione e configurazione - IMPULSI
                                          Monitoraggio energetico con Raspberry e contatori EASTRON SDM120modbus e/o SDM220modbus

                                          Commenta


                                          • #22
                                            Il problema è nel mix di sistemi di lettura, se hai arduino con poolmeters.ino (per esempio per leggere il contatore dell'acqua) e insieme vuoi usare il contatore ModBus.
                                            Se usi solo il ModBus... allora nessun problema a modificare pooler.php

                                            Cmq stasera ci provo
                                            Impianto FV 5,88 kWp: 24 Canadian Solar CS6P-M 245W, 2 Power One PVI-3.0-OUTD-S-IT, Azimut 0°, Tilt 18°, My PVOutput, SDM120C
                                            PDC: Panasonic Aquarea 9kW T-CAP + HybridCube HYC343/19/0, radiante a pavimento 120 mq, 2 VMC decentralizzate Mitsubishi VL-100U-E

                                            Commenta


                                            • #23
                                              Infatti, secondo me è meglio mantenere lo stesso sistema per differenza, così poi chiunque può impostare il suo sistema come vuole, e leggersi anche il contatore del gas o dell'acqua con il sistema ad impulsi.
                                              Monitoraggio energetico con Raspberry – 123Solar e MeterN
                                              Monitoraggio energetico con Raspberry – Guida all’installazione e configurazione - IMPULSI
                                              Monitoraggio energetico con Raspberry e contatori EASTRON SDM120modbus e/o SDM220modbus

                                              Commenta


                                              • #24
                                                Gianfranco basta lasciare pooler.php come sta e farne uno nuovo chiamato pooler485. Flane la continuità é un altra cosa, in quel caso si può risolvere mettendo un campo dove mettere i wh prodotti fino ad oggi e che si sommeranno al nuovo totale, io l'ho già fatto per la produzione visto che avevo cambiato un inverter e quindi il totale del nuovo inverter ripartiva da zero.
                                                14,805 KWp - 63 moduli Rew Solar RC235 MP60/1 235W - Tilt 13° - Azimut -15° SUD
                                                Inverter PowerOne Aurora PVI-10.0-OUTD-IT e TRIO-7.5-TL-OUTD
                                                Eflow Live rev. 3.2
                                                (funziona anche con multi inverter e multi contatori consumo)

                                                Commenta


                                                • #25
                                                  Ragazzi ...cerchiamo di lavorare tutti su un sistema "standard" che permetta con piccole modifiche di adattare i ns contatori (normalmente vengono forniti gli indirizzi dove il contatore deposita la sua lettura delle potenze, voltaggi, cosfi..... forse è anche standard!) in modo che il lavoro di uno valga anche per gli altri.

                                                  Si potrebbe utilizzare

                                                  1- raspberry
                                                  2- un adattatore rs485 to lan ( compatibile con il protocollo modbus rtu)
                                                  3- o meglio una chiavetta usb to rs485 compatibile con il raspberry
                                                  4- contatori con uscita rs485.

                                                  Poi nei listati ognuno di noi aggiunge i valori che gli interessano riferiti alla tabella del suo contatore.

                                                  interessante approfondire per ora se:

                                                  1- le velocità di comunicazione sulla rs485 sono impostabili per ottenere un valore comune fra inverter (per chi c'è l' ha) contatore e futuri relè
                                                  2- implementare un sistema in modo da gestire piu' client sulla linea rs485 modificando l' indirizzo di ogni client al bisogno

                                                  La possibilità di lavorare un un hw pressoché standard, massimizzerebbe il lavoro e le conoscenze di tutti!

                                                  Commenta


                                                  • #26
                                                    È difficile far funzionare inverter e contatori sulla stessa linea, la linea può essere condivisa fra diversi client ma il master deve essere uno solo che a giro interroga i client, e siccome 123solar legge di continuo gli inverter, metern si sovrapporrebbe con le sue richieste mandando in lock il sistema, infatti per la produzione metern non interroga gli inverter ma va a pescare nelle variabili e csv di 123solar.
                                                    14,805 KWp - 63 moduli Rew Solar RC235 MP60/1 235W - Tilt 13° - Azimut -15° SUD
                                                    Inverter PowerOne Aurora PVI-10.0-OUTD-IT e TRIO-7.5-TL-OUTD
                                                    Eflow Live rev. 3.2
                                                    (funziona anche con multi inverter e multi contatori consumo)

                                                    Commenta


                                                    • #27
                                                      Basterebbe lanciare il meterN da dentro 123solar.php , quindi la lettura sovrapposta non ci sarebbe .... tnato meterN si puo' anche lanciare ogni 10" no c'e' bisogno di avere l'istantanea al secondo....
                                                      AUTO BANNATO

                                                      Commenta


                                                      • #28
                                                        E si ogni 10 secondi 123solar si dovrebbe fermare e attendere che metern finisca di interrogare tutti i contatori, finché il contatore è uno forse potrebbe andare ma se i contatori sono di più la cosa comincia a non andare più
                                                        14,805 KWp - 63 moduli Rew Solar RC235 MP60/1 235W - Tilt 13° - Azimut -15° SUD
                                                        Inverter PowerOne Aurora PVI-10.0-OUTD-IT e TRIO-7.5-TL-OUTD
                                                        Eflow Live rev. 3.2
                                                        (funziona anche con multi inverter e multi contatori consumo)

                                                        Commenta


                                                        • #29
                                                          E certo che intendo se si misura produzione e consumo di casa..... poi ai ns. scopi basterebbe leggere solo la potenza totale e istantanea , e quindi lettura di 1" al massimo , il resto come la tensione etc , la misura gia' l'inverter.....
                                                          pero' scusate , il ns contatore misura sia la prelevata che la prodotta non e' che la potenza istantanea abbia un verso e quindi si sappia gia' (se montato a monte di tutto e non a monte degli utilizzi)se e' in prelievo o in immissione ?!
                                                          AUTO BANNATO

                                                          Commenta


                                                          • #30
                                                            @flane questo è il pool123solar.php con l'aggiunta della variabile $KWHTC dove andare a mettere i Wh prodotti dal vecchio inverter
                                                            Codice PHP:
                                                             if ($_SERVER['SERVER_ADDR'] != '127.0.0.1') {
                                                                die(
                                                            'Direct access not permitted');
                                                            }
                                                            // This script will output a 123solar counter into a meterN compatible format
                                                            // You'll need to setup the path to 123, your inverter number and your meter id
                                                            // Request live command with "curl http://localhost/metern/comapps/pool123solar.php?cmd=1"
                                                            // Main command with "curl http://localhost/metern/comapps/pool123solar.php?cmd=2"

                                                            $pathto123s '/var/www/123solar';
                                                            $invtnum    1;
                                                            $meterid    5;
                                                            $KWHTC      0// Contatore iniziale in caso di azzeramento o sostituzione inverter

                                                            // No edit is needed below
                                                            if (!empty($_GET['cmd']) && is_numeric($_GET['cmd'])) {
                                                                
                                                            $cmd $_GET['cmd'];
                                                            } else {
                                                                die(
                                                            'Wong command');
                                                            }

                                                            define('checkaccess'TRUE);
                                                            include(
                                                            "$pathto123s/config/config_main.php");
                                                            include(
                                                            "$pathto123s/config/config_invt$invtnum.php");
                                                            include(
                                                            "$pathto123s/scripts/memory.php");

                                                            date_default_timezone_set($DTZ);

                                                            $KWHT  0;
                                                            $KWHT1 0;
                                                            @
                                                            $shmid shmop_open($LIVEMEMORY'a'00);
                                                            if (!empty(
                                                            $shmid)) {
                                                                
                                                            $size shmop_size($shmid);
                                                                
                                                            shmop_close($shmid);
                                                                
                                                                @
                                                            $shmid shmop_open($LIVEMEMORY'c'0644$size);
                                                                if (!empty(
                                                            $shmid)) {
                                                                    
                                                            $data shmop_read($shmid0$size);
                                                                    
                                                            shmop_close($shmid);
                                                                    
                                                            $memarray json_decode($datatrue);
                                                                    
                                                                    if (
                                                            $cmd == 1) {
                                                                        
                                                            $nowUTC strtotime(date("Ymd H:i:s"));
                                                                        if (
                                                            $nowUTC $memarray["SDTE$invtnum"] < 30) {
                                                                            
                                                            $GP $memarray["G1P$invtnum"] + $memarray["G2P$invtnum"] + $memarray["G3P$invtnum"];
                                                                            if (
                                                            $GP 1000) {
                                                                                
                                                            $GP round($GP0);
                                                                            } else {
                                                                                
                                                            $GP round($GP1);
                                                                            }
                                                                        } else { 
                                                            // Too old
                                                                            
                                                            $GP 0;
                                                                        }
                                                                    } elseif (
                                                            $cmd == 2) {
                                                                        
                                                            $KWHT1 round(($memarray["KWHT$invtnum"] * ${'CORRECTFACTOR' $invtnum} * 1000), 0); //in Wh    
                                                                    
                                                            }
                                                                }
                                                            }

                                                            if (
                                                            $cmd == && (empty($shmid) || $KWHT1 == 0)) { // 123s ain't running at night retrieve the value in csv
                                                                
                                                            $dir    $pathto123s '/data/invt' $invtnum '/csv';
                                                                
                                                            $output glob($dir "/*.csv");
                                                                
                                                            sort($output);
                                                                
                                                            $xdays count($output);
                                                                if (
                                                            $xdays 1) {
                                                                    
                                                            $lastlog    $output[$xdays 1];
                                                                    
                                                            $lines      file($lastlog);
                                                                    
                                                            $contalines count($lines);
                                                                    
                                                            $array_last preg_split('/,/'$lines[$contalines 1]);
                                                                    
                                                            $KWHT1      round(($array_last[27] * ${'CORRECTFACTOR' $invtnum} * 1000), 0); //in Wh
                                                                
                                                            } else {
                                                                    
                                                            $KWHT1 0;
                                                                }
                                                            }
                                                            $KWHT $KWHT1 $KWHTC;

                                                            if (
                                                            $cmd == && empty($shmid)) { // 123s ain't running
                                                                
                                                            $GP 0;
                                                            }

                                                            if (
                                                            $cmd == 1) {
                                                                echo 
                                                            "$meterid($GP*W)\n";
                                                            } elseif (
                                                            $cmd == 2) {
                                                                echo 
                                                            "$meterid($KWHT*Wh)\n";
                                                            }
                                                            ?> 
                                                            lo stesso si può fare per il pooler di consumo

                                                            in quel caso andrai a mettere i Wh consumati e registrati in precedenza.
                                                            Ultima modifica di ninodifranco; 21-01-2015, 13:35.
                                                            14,805 KWp - 63 moduli Rew Solar RC235 MP60/1 235W - Tilt 13° - Azimut -15° SUD
                                                            Inverter PowerOne Aurora PVI-10.0-OUTD-IT e TRIO-7.5-TL-OUTD
                                                            Eflow Live rev. 3.2
                                                            (funziona anche con multi inverter e multi contatori consumo)

                                                            Commenta

                                                            Attendi un attimo...
                                                            X