Raspberry + MeterN - Monitoraggio energetico valido ed economico - GUIDA - EnergeticAmbiente.it

annuncio

Comprimi
Ancora nessun annuncio.

Raspberry + MeterN - Monitoraggio energetico valido ed economico - GUIDA

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

  • Ciao spider61,
    singole interrogazioni mi sembra di capire che non le faccia.


    Ciao dolam,
    l'inverter invia già i dati a Pvoutput e sfrutta appunto queste Solar API, mi piaceva vedere se era possibile integrarle in 123solar.

    Commenta


    • Come sei messo come programmazione Lore e su cosa fai girare adesso il logger?
      Comunque và fatto uno scripts in PHP , che lanci il comando che hai riportato , la stringa di risulta va processata andando a prendere i dati e passarli come protocollo a 123solar , detto è semplice a farlo non tanto complicato , ultimamente l'ho fatto per l'Omnik , dove è stato difficile capire come far partire la comunicazione con la RS422 ma poi adesso stò loggando tranquillamene.... nel 2013 avevo estrapolato i dati dei Danfoss ......
      AUTO BANNATO

      Commenta


      • Ciao spider61,

        adesso per la produzione c'è il portale fronius e viene caricato anche Pvoutput in automatico, mentre per i consumi ho solo metern.
        A programmazione non sono messo troppo bene, a dicembre 2015 con la guida di "flane & C" e dopo varie prove sono riuscito a far andare metern, adesso la vedo più dura senza una "linea guida", però ci provo, dovrei aver trovato uno script di domotics che interroga con queste api l'inverter fronius, provo a vedere se riesco a fare qualcosa

        Commenta


        • Intendi questo Import data from Fronius Solar api - Domoticz ?
          Forse è più semplice del previsto , scaricati 123solar da qui Index of /downloads/123solar apritelo sul PC , e vai nella cartella scripts/protocols così cominci a vederti come fanno le chiamate e che dati chiede.... da quel forum di domoticz , sembra che puoi fare le chiamate chiedendo la parte che ti serve
          if(isset($data['Body']['Data']['PAC']['Value'])) {
          $result = file_get_contents('http://192.168.x.xxx:8080/json.htm?type=command&param=udevice&idx=58&nvalue=0&svalue='.$data['Body']['Data']['PAC']['Value']);
          logwrite($result);
          usleep(250000);
          $result = file_get_contents('http://192.168.x.xxx:8080/json.htm?type=command&param=udevice&idx=59&nvalue=0&svalue='.$data['Body']['Data']['DAY_ENERGY']['Value']);
          logwrite($result);
          usleep(250000);
          $result = file_get_contents('http://192.168.x.xxx:8080/json.htm?type=command&param=udevice&idx=60&nvalue=0&svalue='.$data['Body']['Data']['TOTAL_ENERGY']['Value']);
          logwrite($result);
          }
          continua......
          AUTO BANNATO

          Commenta


          • Ciao spider61,

            si esatto proprio quello ora vado a vedere 123solar le cartelle che mi hai detto

            Grazie

            Commenta


            • Ciao spider61,

              ho trovato anche questo, che crea un file csv giornaliero, però non ho la più pallida idea di come fare per farlo digerire a 123solar.
              Ho visto che nella cartella scripts/protocols ci sono vari inverter, quasi quasi provo a domandare anche a Jean-Marc se con queste informazioni riesce a fare qualcosa

              Commenta


              • prova e riprova
                AUTO BANNATO

                Commenta


                • La soluzione è già nel link che ti postato sopra : prova a crare questo script in PHP nel Raspberry
                  nano fronius.php
                  e poi
                  php fronius.php


                  #!/usr/bin/php

                  $data = json_decode(file_get_contents('http://192.168.1.103/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData'),true);
                  print_r($data);

                  print_r (data['Body']['Data']['PAC']['Value'])
                  print (data['Body']['Data']['PAC']['Value'])

                  ?>


                  dimmi cosa risponde coi print
                  AUTO BANNATO

                  Commenta


                  • Ciao spider61,

                    grazie mille, stasera provo e ti faccio sapere.

                    Commenta


                    • Sono curioso , non conosco i comandi json , ma il php ha una gestione notevole degli array , spero che con quel comando tiri fuori la PAC , dopo fare lo script che vuole 123solar è banale , basta fare una serie di chiamate per ogni parametro che vuole 123 e inserirle nelle variabile giuste...
                      AUTO BANNATO

                      Commenta


                      • Ciao spider61,

                        anche a mettere il ; dopo i print, mi da errore sui print:

                        PHP Notice: Use of undefined constant data - assumed 'data' in /home/pi/fronius.php on line 4
                        dataPHP Notice: Use of undefined constant data - assumed 'data' in /home/pi/fronius.php on line 6
                        PHP Warning: Illegal string offset 'Body' in /home/pi/fronius.php on line 6
                        PHP Warning: Illegal string offset 'Data' in /home/pi/fronius.php on line 6
                        PHP Warning: Illegal string offset 'PAC' in /home/pi/fronius.php on line 6
                        PHP Warning: Illegal string offset 'Value' in /home/pi/fronius.php on line 6
                        dPHP Notice: Use of undefined constant data - assumed 'data' in /home/pi/fronius.php on line 7
                        PHP Warning: Illegal string offset 'Body' in /home/pi/fronius.php on line 7
                        PHP Warning: Illegal string offset 'Data' in /home/pi/fronius.php on line 7
                        PHP Warning: Illegal string offset 'PAC' in /home/pi/fronius.php on line 7
                        PHP Warning: Illegal string offset 'Value' in /home/pi/fronius.php on line 7

                        Commenta


                        • In effetti , manca il dollaro prova con $data e i punti e virgola , però spiegami quale era il comando che mandavi per ricevere quella stringa dati ? perchè io ho copiato il link del forum fronius , hai modificato il tuo indirizzo anche ....
                          come ti ho scritto non conosco tanto .....

                          Il problema del gestore forum è che se vai a modificare qualcosa con caratteri particolari , manda in tilt la discussione.....
                          AUTO BANNATO

                          Commenta


                          • @ lore_
                            Al link che hai messo al post 5046 sul file solar.php c'è il codice per estrarre i dati e assegnarli a delle variabili, a quel punto non è difficile integrarlo sugli script per 123solar
                            3,84 KWp - 16 moduli SCHOTT PERFORM POLY 240 - Tilt 30° - Azimut -10° ESTInverter PowerOne Aurora PVI 3.0 OUTD. == Guida Raspberry come datalogger == Guida configurazione Raspberry == OEM su Raspberry

                            Commenta


                            • Ciao spider61,

                              innanzitutto grazie per la pazienza, tra l'altro è qualche giorno che ho qualche problema con la connessione da casa "ballerina" e l'inverter si è spento e per fare altre prove vado avanti domani mattina prima del lavoro.

                              Ciao Walter62,

                              grazie anche a te per l'interessamento, adesso mi studio un pò il solar.php, e i vari .php nella cartella script/protocol, ogni tipo di inverter ha 3 file ma quello che contata credo sia solo quello con il "marcainverter".php

                              Commenta


                              • Ciao spider61,

                                mi va ancora in errore, comunque ho provato il file solar.php, togliendo la parte delle librerie che non ho, mi ha creato il file 2017-05-18.csv con data e ora, W istantanei e Wh del giorno, quindi parto da lì.
                                Clicca sull'immagine per ingrandirla. 

Nome:   solar.jpg 
Visite: 1 
Dimensione: 39.7 KB 
ID: 1961515
                                Domani dovrei essere a casa e faccio qualche prova seria

                                Commenta


                                • Ciao Walter62,

                                  oggi provo questo

                                  codice:
                                  /*    Global variables    */
                                  //    IP Address of the Inverter
                                  $dataManagerIP = "192.168.1.5";
                                  
                                  
                                  //    Latitude and Longitude of where the solar panels are installed. Serve per trovare alba e tramonto, così di notte non funziona
                                  $latitude  = 45.748021;
                                  $longitude = 9.845357;
                                  
                                  
                                  //    Path of the script - to ensure we're reading and writing the correct directory
                                  $currentPath = dirname(__FILE__) . DIRECTORY_SEPARATOR;
                                  
                                  
                                  //    Today's date - used for writing .csv and .png files.
                                  $today = date('Y-m-d', time());
                                  //    Path of the script - to ensure we're reading and writing the correct directory
                                  $currentPath = dirname(__FILE__) . DIRECTORY_SEPARATOR;
                                  
                                  
                                  //    Calculate the timezone offset
                                  $this_timezone = new DateTimeZone(date_default_timezone_get());
                                  $now = new DateTime("now", $this_timezone);
                                  $offset = $this_timezone->getOffset($now);
                                  //    Sunrise and Sunset times.
                                  $sunriseTimestamp = date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, 
                                                                   $latitude, $longitude, 
                                                                   ini_get("date.sunrise_zenith"), $offset);
                                  $sunsetTimestamp = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, 
                                                                 $latitude, $longitude, 
                                                                 ini_get("date.sunset_zenith"), $offset);
                                  
                                  
                                  //    Are we between sunrise and set?
                                  //    If so, start reading from the solar panels
                                  if (time() >= $sunriseTimestamp && time() <= $sunsetTimestamp)
                                  {
                                      //    API call for Fronius
                                      //    Documentation:
                                      //    https://www.fronius.com/cps/rde/xbcr/SID-539A9068-7638796D/fronius_international/42_0410_2012_318486_snapshot.pdf
                                  
                                  
                                      $apiURL = "http://".$dataManagerIP."/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData";
                                  
                                  
                                      //    Get the raw JSON
                                      $jsonData = file_get_contents($apiURL);
                                  
                                  
                                      //    Decode into an object
                                      $solar = json_decode($jsonData, true);
                                  
                                  
                                      //    Is the inverter up and running?
                                      if (7 == $solar["Body"]["Data"]["DeviceStatus"]["StatusCode"])
                                      {
                                          //    Get the variables in which we're interested
                                          $solarTimestamp   = $solar["Head"]["Timestamp"];                  //    Time according to the DataManager
                                          $solarPower       = $solar["Body"]["Data"]["PAC"]["Value"];       //    Real time AC being fed into the mains
                                          $solarACCurrent   = $solar["Body"]["Data"]["IAC"]["Value"];       //    Real time Ampere AC current
                                          $solarACVoltage   = $solar["Body"]["Data"]["UAC"]["Value"];       //    Real time Volt AC voltage
                                          $solarACFrequency = $solar["Body"]["Data"]["FAC"]["Value"];       //    Real time Hz AC frequency
                                          $solarDCCurrent   = $solar["Body"]["Data"]["IDC"]["Value"];       //    Real time Ampere AD current
                                          $solarDCVoltage   = $solar["Body"]["Data"]["UDC"]["Value"];       //    Real time Volt AD voltage
                                          $solarDayEnergy   = $solar["Body"]["Data"]["DAY_ENERGY"]["Value"];//    Total amount generated today
                                  
                                  
                                          //    Format for writing to CSV file - Da rivedere per 123solar
                                          //    Time,Energy,Total
                                          $solarArray = array($solarTimestamp, $solarPower, $solarACCurrent, $solarACVoltage, $solarACFrequency, $solarDCCurrent, $solarDCVoltage, $solarDayEnergy);
                                          //    Append the data to a CSV file named YYYY-MM-DD.csv
                                          $solarCSV = fopen($currentPath . $today . ".csv", 'a');
                                          fputcsv($solarCSV, $solarArray);
                                          fclose($solarCSV);
                                  
                                  
                                  
                                  
                                      }    
                                  }
                                  se funziona e mi ritorna nel file csv tutti questi dati, mi daresti qualche dritta per adeguare lo script per 123solar ?

                                  Grazie e ciao

                                  Commenta


                                  • Ciao Walter62 e spider61,

                                    jeanmarc mi ha risposto e creato lo script

                                    codice:
                                     
                                    if (!defined('checkaccess')) {
                                        die('Direct access not permitted');
                                    }
                                    // For Fronius https://github.com/victronenergy/dbus-fronius
                                    $CMD_RETURN = ''; // Always initialize
                                    
                                    function is_json($string, $return_data = false)
                                    {
                                        $data = json_decode($string);
                                        return (json_last_error() == JSON_ERROR_NONE) ? ($return_data ? $data : TRUE) : FALSE;
                                    }
                                    
                                    $ch = curl_init();
                                    curl_setopt($ch, CURLOPT_URL, 'http://localhost/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData');
                                    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
                                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                                    $CMD_RETURN = strip_tags(curl_exec($ch));
                                    curl_close($ch);
                                    
                                    $dataarray = is_json($CMD_RETURN, TRUE);
                                    if ($dataarray) {
                                        //print_r($dataarray);
                                        
                                        // Grid values
                                        $G1V = $dataarray->Body->Data->UAC->Value;
                                        settype($G1V, 'float');
                                        $G1A = $dataarray->Body->Data->IAC->Value;
                                        settype($G1A, 'float');
                                        $G1P = $dataarray->Body->Data->PAC->Value;
                                        settype($G1P, 'float');
                                        $G2V = null;
                                        $G2A = null;
                                        $G2P = null;
                                        $G3V = null;
                                        $G3A = null;
                                        $G3P = null;
                                        $FRQ = $dataarray->Body->Data->FAC->Value;
                                        settype($FRQ, 'float');
                                        
                                        // Strings
                                        $I1V = $dataarray->Body->Data->UDC->Value;
                                        settype($I1V, 'float');
                                        $I1A = $dataarray->Body->Data->IDC->Value;
                                        settype($I1A, 'float');
                                        $I1P = round($I1V * $I1A, 2);
                                        settype($I1P, 'float');
                                        $I3V = null;
                                        $I3A = null;
                                        $I3P = null;
                                        $I4V = null;
                                        $I4A = null;
                                        $I4P = null;
                                        
                                        
                                        // Inverter
                                        $EFF = round(($G1P / $I1P) * 100, 2);
                                        $INVT = null;
                                        $BOOT = null;
                                        $KWHT = $dataarray->Body->Data->TOTAL_ENERGY->Value;
                                        $KWHT /= 1000;
                                        settype($KWHT, 'float');
                                        
                                        $RET = 'OK';
                                    } else {
                                        $RET = 'NOK';
                                    }
                                    ?>
                                    adesso faccio un pò di prove.

                                    Grazie ancora a tutti

                                    Commenta


                                    • Salve
                                      Avrei bisogno di portare l'aggironamento del Metern a 6/7 min invece dei 5 impostati, in qualto ho l'impressione che vada in conflitto con 123Solar e mi generi valori di milioni di W.
                                      Io uso convertitori RS485/ETH che magari perdono qualche colpo quindi vorrei sfalsare gli aggiornamnti per provare a vedere se elimino il problema del Metern che alemno una volta al giorno da valori altissimi, con la conseguenza che mi sballa i grafici (mentre i valori in tempo reale risultano corretti anche se ogni tanto vanno a zero).
                                      Dove devo intervenire per aumentare il tempo di aggionamento del Metern a 6/7 min?
                                      Spero di essermi spiegato bene
                                      Grazie in anticipo per la disponibilità....
                                      Giobbe
                                      Impianto 5,52 Kw Tot. Integrato allacciato il 29/12/2010 Azimut: SSE 160° - Tilt: 25° N. 24 pannelli policristallini BP Solar Endura BP-3230T Inverter Power-One PVI-6000-OUTD-S-IT [COLOR=#ff0000]- Updated - Castrignano de Greci (LE) www.castrignanometeo.eu:biker:

                                      Commenta


                                      • non vorrei dire fesserie ma mi sembra che i 2 servizi, facendo la media a 5 minuti, cmq leggano molte volte al minuto per poter fare il calcolo
                                        FV: 6,54kwp SunPower e20 327, inverter SE 6000 con ottimizzatori P500, azimuth=-13, tilt=20°, pvoutput=http://pvoutput.org/aggregate.jsp?id...=50540&v=0&t=m ; PdC = Mitsubishi Zubadan 11,2 VAA ; HYC 500

                                        Commenta


                                        • Non fanno nessuna media , c'è una potenza istantanea , e poi leggono ogni 5 minuti il totale delle energia , con questa energia dei 5' calcolano l'energia oraria...

                                          Giobbe in 123solar.php c'e' la sezione che quando il tempo ha come minuit 5,10,15,20, etc registra il csv, manda a pvout e calcola l'energia per il grafico... su meter (che non ho mai installato) , farà uguale , trova quella sezione e prova a sostituire con 2,7,12,17, etc
                                          AUTO BANNATO

                                          Commenta


                                          • ah ok, pensavo il calcolo lo facesse il servizio invece legge solo

                                            quindi le letture ogni tot secondi servono solo per l'istantanea
                                            FV: 6,54kwp SunPower e20 327, inverter SE 6000 con ottimizzatori P500, azimuth=-13, tilt=20°, pvoutput=http://pvoutput.org/aggregate.jsp?id...=50540&v=0&t=m ; PdC = Mitsubishi Zubadan 11,2 VAA ; HYC 500

                                            Commenta


                                            • A quanto ho capito io il Metern non fa la lettura autonoma ma legge i file csv creati da 123 Solar
                                              Impianto 5,52 Kw Tot. Integrato allacciato il 29/12/2010 Azimut: SSE 160° - Tilt: 25° N. 24 pannelli policristallini BP Solar Endura BP-3230T Inverter Power-One PVI-6000-OUTD-S-IT [COLOR=#ff0000]- Updated - Castrignano de Greci (LE) www.castrignanometeo.eu:biker:

                                              Commenta


                                              • Per la parte produzione immagino , ma per il consumo ?
                                                AUTO BANNATO

                                                Commenta


                                                • metern ha per la produzione il comando: pool123s energy
                                                  che immagino legga i dati di 123solar

                                                  per i consumi il comando: poolerconsumi 2 energy
                                                  che suppongo sia proprio di metern

                                                  secondo me tutti e 2 leggono l'istantanea per il gauge ma per i grafici usano i file a 5 minuti

                                                  per l'istantanea nell'interfaccia 'cruscotto' è selezionabile il tempo di poll: da 100 a 5000 ms
                                                  FV: 6,54kwp SunPower e20 327, inverter SE 6000 con ottimizzatori P500, azimuth=-13, tilt=20°, pvoutput=http://pvoutput.org/aggregate.jsp?id...=50540&v=0&t=m ; PdC = Mitsubishi Zubadan 11,2 VAA ; HYC 500

                                                  Commenta


                                                  • A me Metern da picchi di milioni sull produzione che 123solar non ha e neanche nel file csv di 123 solar ci sono picchi.
                                                    Quindi penso che magari Metern ogni tanto va a leggere il file proprio nel momento in cui 123solar lo sta scrivendo e va in tilt.
                                                    Altra spiegazione non mi do a questi picchi
                                                    perciò vorrei vambiare il periodo di aggionemento o lettura di Metern
                                                    Impianto 5,52 Kw Tot. Integrato allacciato il 29/12/2010 Azimut: SSE 160° - Tilt: 25° N. 24 pannelli policristallini BP Solar Endura BP-3230T Inverter Power-One PVI-6000-OUTD-S-IT [COLOR=#ff0000]- Updated - Castrignano de Greci (LE) www.castrignanometeo.eu:biker:

                                                    Commenta


                                                    • @ giobbe70
                                                      Se fosse come dici, tutti quelli che usano i due software avrebbero il tuo problema.

                                                      Il problema non è quello, ma qualcosa d'altro.
                                                      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


                                                      • il fatto e che io per prelevare i dati del inverter e del SDM230 uso dei convertitori RS485/ETH che perdono colpi nella ricezione dei dati quindi non vorrei come dicevo che si trovassero a leggere i dati contemporaneamente e andassero in tilt
                                                        Impianto 5,52 Kw Tot. Integrato allacciato il 29/12/2010 Azimut: SSE 160° - Tilt: 25° N. 24 pannelli policristallini BP Solar Endura BP-3230T Inverter Power-One PVI-6000-OUTD-S-IT [COLOR=#ff0000]- Updated - Castrignano de Greci (LE) www.castrignanometeo.eu:biker:

                                                        Commenta


                                                        • Guarda il problema è proprio quel "perdono colpi".

                                                          Non cercare altrove. Hai già centrato l'obiettivo.
                                                          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


                                                          • OK, ma cosa posso fare?
                                                            Ho gia aumentato il numero di tentavi di aurora prima di dare errore
                                                            123 solar ora va bene ma il metern ogni tanto ha dei picchi che non mi spiego sul grafico della produzione
                                                            Impianto 5,52 Kw Tot. Integrato allacciato il 29/12/2010 Azimut: SSE 160° - Tilt: 25° N. 24 pannelli policristallini BP Solar Endura BP-3230T Inverter Power-One PVI-6000-OUTD-S-IT [COLOR=#ff0000]- Updated - Castrignano de Greci (LE) www.castrignanometeo.eu:biker:

                                                            Commenta


                                                            • Io toglierei la RS485/ETH
                                                              3,84 KWp - 16 moduli SCHOTT PERFORM POLY 240 - Tilt 30° - Azimut -10° ESTInverter PowerOne Aurora PVI 3.0 OUTD. == Guida Raspberry come datalogger == Guida configurazione Raspberry == OEM su Raspberry

                                                              Commenta

                                                              Attendi un attimo...
                                                              X