Creare un grafico continuamente aggiornato con i dati provenienti da un database

mauit83

Nuovo Utente
5 Mar 2014
4
0
0
Buongiorno a tutti ,
volevo dare la possibilità agli utenti di effettuare il monitoraggio del loro impianto domestico per la produzione di energia elettrica ,in una pagina web naturalemnte .
I valori dei dati da monitorare vengono aggiornati ogni 30 secondi dal web server in una pagina html ; la mia intenzione è trasferire questi dati in un database per poi visualizzare i dati continuamente aggiornati in un grafico simile a quello dell'immagine postata imagessw.jpg.

Sulla parte dei database non ci sono problemi , il problema di cui non risceo a trovare la soluzione è il grafico dinamico aggiornato continuamente .
Vi ringrazio in anticipo e spero di essere stato chiaro .
Mauro
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, ti sposto nella sezione di php
Il grafico lo hai già creato ? le query anche?
Se ti manca solo la dinamicità puoi utilizzare ajax
 

mauit83

Nuovo Utente
5 Mar 2014
4
0
0
Voglio essere sincero, parto quasi da zero , ho sempre e solo smanettato con dreamweaver , html e CSS , il PHP lo sto conoscendo da poco ; mi occupo di programmazione di PLC e ora dovrei fare dei grafici con dei dati che il webserver del pc mi manda ogni 5 secondi , li rimando ad un server remoto e poi dal database voglio fare ad esempio il grafico delle temperature e di altri valori durante l'arco della giornata ,per confrontarli con quelli di altri impianti .
Magari se vi posso chiedere dove vado a pescare le informazioni su come fare così comincio a lavorarci , o se mi consigliate un'alternativa migliore rispetto a quella che ho pensato io , grazie .
 

mauit83

Nuovo Utente
5 Mar 2014
4
0
0
Grafico sorgente

Untitled.png


Questo è la pagina web del web server da dove vorrei mandare i dati ad un server , se è possibile :eek: . Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
lavorando con Windows, creo un file ".bat"
che contiene i valori da inviare e che eseguo immediatamente,

esempio,

@echo on

"%SPw_cmdpath%\curl" -d "d=20140311" -d "g=8500" -d "e=0" -d "pp=1681" -d "pt=12:39" -d "cd=Mostly Cloudy" -H "X-Pvoutput-Apikey:xxxxxxxxxxxxx" -H "X-Pvoutput-SystemId:xxxx" http://pvoutput.org/service/r2/addoutput.jsp

@echo off

"%SPw_cmdpath%\sleep.vbs"


ovvero, chiami il servizio che ti serve, nel mio caso "addoutput.jsp"
sul sito trovi il manuale con una esaustiva spiegazione
ciao
Marino
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
grafici aggiornati soluzione locale

se hai già il database dove sono registrati tutti i valori, suddivisi per impianto,
ho realizzato per me una soluzione in Excel, questa è la pagina dove fornire,
il tipo di grafico e la data di analaisi dei dati finale,

http://s1095.photobucket.com/user/m... - Data Analysis/SPw_DataAnalysis_00.png.html

la macro di Excel che ho sviluppato si collega al db, estrae i dati in funzione del tipo di grafico e della data e li presenta sulla pagina del grafico

ovviamente dati aggiornati all'ultimo aggiornamento del db

con dei bottoni "freccia" avanti e indietro ci si muove nei giorni precedenti/successisi, nei mesi, negli anni ....

è una soluzione più spartana e locale del sito che ti ho indicato, ma anche semplice da "incrementare"

soluzione disponibile senza nessun ...interesse, con suppoto per adattare le query al db

il mio db contiene dati dal 4/1/2011 con registrazioni ogni 3 minuti, la soluzione su pc, altrettanto spartano, funziona bene

fammi sapere se interessato

ps. se trovo la libreria dei grafici del sito citato, mi sono ripromesso di fare la versione php

ciao
Marino
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ho trovato il tool per creare i grafici, nel file allegato c'è l'immagine catturata del primo risultato.

in questo grafico sono rappresentate la potenza e l'energia generata nella giornata
(fino all'ultima acquisizione dei dati)

lo script php è abbastanza semplice e intendo svilupparlo con altre possibilità,
(ora non ha un form per inserire dati e scelte, ho preferito concentrarmi sui grafici)

ho poi preso un esempio di grafico e l'ho reso il "template" per il mio risultato
in questo modo l' html e javascript in esso contenuto rimangono "standard" e non me ne devo più ... curare

altri esempi potranno essere resi "template" quando necessario

proprio perchè template ho fatto in modo da passare a javascript tutti i valori necessari che vengono
generati e gestiti con php

mi sembra un buon punto di partenza, se ancora interessato, potremmo collaborare per lo sviluppo
ciao
Marino

posto il codice php e "l'interfaccia" con javascript

PHP:
<?php

# http://localhost/test_site/php/SolarPower/graph.php

require('_Config_DB.php');

$db=new solarpowerDB();
$inverterID = '0001';

$sql    = "select nameID from inverter_ident where inverterID='".$inverterID."'";
$data   = $db->Query_select($sql);
$nameID = $data[0][0];

$sql     = "select convert(varchar, max(sampleID), 103) as sampleIDc from inverter_dat_view";
$data    = $db->Query_select($sql);
$LastUpd = $data[0][0];
$year    = substr($LastUpd, 6, 4);
$month   = substr($LastUpd, 3, 2);
$day     = substr($LastUpd, 0, 2);

$db->Mylog("LastUpd       : ".$LastUpd);
$db->Mylog("data estratta : ".$year."-".$month."-".$day);

IntradayGeneration();

function IntradayGeneration() {
  global $db,$swN,$inverterID,$nameID,$year,$month,$day;

  $cond = " from inverter_dat_view";
  $cond.= " where inverterID='".$inverterID."'";
  $cond.= " and iv_year=".$year;
  $cond.= " and iv_month=".$month;
  $cond.= " and iv_day=".$day;

  $sql.= "select min(TOTenergy)".$cond;
  $data = $db->Query_select($sql);
  $minTOTenergy = $data[0][0];

  $sql = "select";
  $sql.= " convert(char(5), sampleID, 108) [time]";
  $sql.= ",GRpower";
  $sql.= ",TOTenergy-".$minTOTenergy;
  $sql.= $cond;
  $sql.= " order by convert(char(5), sampleID, 108)";

  $data = $db->Query_select($sql);
  $data_counter = count($data);
  $db->Mylog("record letti : ".$data_counter);

  $SPW_Title    = 'Intraday Generation '. $nameID;
  $SPW_SubTitle = $year.' / '.$month.' / '.$day;

  $SPW_y1title  = 'Energy Generated';
  $SPW_y1ttip   = ' kWh';

  $SPW_y2title  = 'Power Generated';
  $SPW_y2ttip   = ' W';

  $SPW_y3title  = 'Average Power';
  $SPW_y3ttip   = ' W';

  $GRpower      = 0;
  for($i=0; $i<$data_counter; $i++) {

    $GRpower += $data[$i][1];
    $x = $GRpower / ( $i + 1 );

    $SPW_xAxisCat[] = (string)$data[$i][0];
    $SPW_y2data[]   = (float)$data[$i][1];
    $SPW_y1data[]   = (float)number_format($data[$i][2], 1);
    $SPW_y3data[]   = (float)number_format($x, 1);

//  $db->Mylog($i." -- ".$SPW_xAxisCat[$i]." -- ".$SPW_y2data[$i]." -- ".$SPW_y1data[$i]." -- ".$SPW_y3data[$i]);
  }
  require('graph_a_intraday.php');
}
?>

Codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http: //www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http: //www.w3.org/1999/xhtml" xml: lang="en" lang="en">
  <head>
    <title>SolarPower Data Analysis</title>
    <meta http-equiv="Content-Type"
 content="text/html; charset=ISO-8859-1">


    <script type="text/javascript" src="_jquery.min.js"></script>
    <script type="text/javascript">
$(function () {
  var SPW_Title    = '<?php echo $SPW_Title; ?>'
  var SPW_SubTitle = '<?php echo $SPW_SubTitle; ?>'
  var SPW_xAxisCat = <?php echo json_encode($SPW_xAxisCat); ?>;

  var SPW_y1title  = '<?php echo $SPW_y1title; ?>'
  var SPW_y1ttip   = ' <?php echo $SPW_y1ttip; ?>'
  var SPW_y1data   = <?php echo json_encode($SPW_y1data); ?>;
  var SPW_y1color  = '#89A54E'

  var SPW_y2title  = '<?php echo $SPW_y2title; ?>'
  var SPW_y2ttip   = ' <?php echo $SPW_y2ttip; ?>'
  var SPW_y2data   = <?php echo json_encode($SPW_y2data); ?>;
  var SPW_y2color  = '#4572A7'

  var SPW_y3title  = '<?php echo $SPW_y3title; ?>'
  var SPW_y3ttip   = ' <?php echo $SPW_y3ttip; ?>'
  var SPW_y3data   = <?php echo json_encode($SPW_y3data); ?>;
  var SPW_y3color  = '#AA4643'
 

Allegati

  • Cattura.PNG
    Cattura.PNG
    50,3 KB · Visite: 2.037

GayleLucena

Nuovo Utente
24 Mag 2014
1
0
0
Buongiorno a tutti ,
volevo dare la possibilità agli utenti di effettuare il monitoraggio del loro impianto domestico per la produzione di energia elettrica ,in una pagina web naturalemnte .
I valori dei dati da monitorare vengono aggiornati ogni 30 secondi dal web server in una pagina html ; la mia intenzione è trasferire questi dati in un database per poi visualizzare i dati continuamente aggiornati in un grafico simile a quello dell'immagine postataVedi l'allegato 2131.

Sulla parte dei database non ci sono problemi , il problema di cui non risceo a trovare la soluzione è il grafico dinamico aggiornato continuamente .
Vi ringrazio in anticipo e spero di essere stato chiaro .
Mauro

Sembra che si sta lavorando su un progetto molto eccitante .. Sei riuscito a risolvere il problema? Spero che vi risponderà al più presto.
 

Piergiacomo

Nuovo Utente
16 Lug 2015
1
0
0
Ciao Marino 51,
Sono diversi giorni che cerco di capire il funzionamento di PVOutput, legendo e comprendendo in parte il manuale che si trova nel sito, ma aime non sto tirando fuori un ragno da un buco!!!

Di seguito cerco di far capire quale è il problema:

1 - Ho un impianto fotovoltaico con n. 23 inverter della Samil Power collegati ad una rete LAN
2 - Ho un PC con Win7 sempre acceso collegato anche esso alla LAN
3 - Sul PC ho installato il programma Samil Power Browser che non fa altro che trovare tutti gli inverter sulla rete, e leggere dati ogni 3 secondi, e creare ogni giorno una cartella, con dentro 23 file .csv (uno per ogni inverter) con una riga ogni 5 minuti.
4 - ho creato l'account sul portale, ho creato 2 impianti per provare, ho ottenuto l'APE KEY, e i 2 System ID perchè ho creato 2 impianti (che si trovano sulla stessa rete)
5 - Ho scaricato 2 programmi per mandare in automatico i dati a pvoutput ma non succede nulla;
6 - ho creato un .bat come da te cnsigliato aggiungendo la mia Ape Key e il System ID ma non funziona.

qui le cose sono 2, o non ho capito i fondamenti o sto invecchiando!!!!

Ti chiedo la pazienza di farmi chiarezza e trovare quindi una soluzione. Grazie!
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
scusa, leggo solo oggi il tuo post, ma vedo di risponderti, definendo cosa e come registrare sul sito PVoutput

per il mio sistema ho utilizzato l'interfaccia di PVoutput preparando i dati con un vbs secondo le,
"API Specification"
This section details the API specification for those who wish to implement their own client software.

poi, per ogni inverter,

si può registrare il dato di produzione giornaliero ( 1 registrazione x 23 = 23 registrazioni/giorno ), utilizzando
"Add Output Service"
The Add Output service uploads end of day output information. It allows all of the information provided on the Add Output page to be uploaded.

oppure

si possono registrare le rilevazioni della produzione con il dettaglio di 5 minuti ( ~ 160 registrazioni/giorno x ciscun inverter ), utilizzando
"Add Status Service"
The Add Status service accepts live output data at the status interval (5 to 15 minutes) configured for the system.

le due soluzioni sono molto simili, si tratta di preparare un file batch, derivato dai csv,
che contenga i dati da inviare a PVoutput, per esempio,
Codice:
curl -d "d=20150725" -d "g=11400" -d "e=0" -d "pp=1802" -d "pt=11:29" -d "cd=Fine" -H "X-Pvoutput-Apikey:*****" -H "X-Pvoutput-SystemId:*****" http://pvoutput.org/service/r2/addoutput.jsp
curl dialoga con il servizio addoutput.jsp
d = giorno di produzione,
g = energia generata in kWh
e = energia esportata (non misurata)
pp = potenza massima del giorno in W
pt = ora in cui si è verificata pp
cd = condizione atmosferica secondo una tabella di PVoutput

attenzione ai limiti imposti da PVoutput sul numero delle rilevazioni registrabili in un' ora

qui trovi la documentazione
http://www.pvoutput.org/help.html
se ti serve altro, fatti vivo
ciao
Marino
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] [HTML] Come creare un grafico dinamico PHP 4
T creare un grafico excel con asp Classic ASP 2
N creare grafico GD_2 d un equazione differenziale PHP 0
E Creare un testo trasparente dietro un div HTML e CSS 5
M Creare traccia di download file sul server HTML e CSS 2
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
L Creare ancore interne alla pagina PHP 1
I Creare un banner temporaneo JavaScript Javascript 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
simgia Cordova errore quando cerco di emulare o creare la app Sviluppo app per Android 2
U PHP creare un file excel dopo ricerca nel DB PHP 0
A Creare un cronometro PHP 5
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
F Creare elementi html con javascript Javascript 3
Shyson Modificare codice e creare link PHP 0
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Creare una forma geometrica Photoshop 1
M [Cerco] aiutanti per creare sito Offerte e Richieste di Lavoro e/o Collaborazione 8
S Libreria PHP per creare file dwg o dxf PHP 0
R Come creare sistema Add to homescreen PHP 3
L Creare un countdown con giorno specifico della settimana PHP 3
W Creare link di una dato Classic ASP 0
W creare file .jar Java 2
M Creare con il Vb 2010 Il Classico Notes di Windows Vista Visual Basic 1
MarcoGrazia Creare una password Snippet Javascript 0
J creare pagina php di prenotazione PHP 5
A Creare un modulo di ricerca avanzata con dreamweaver HTML e CSS 0
INTEROPERABILITY Sviluppatrice/formatrice creare APP Offerte e Richieste di Lavoro e/o Collaborazione 0
L Creare una pagina pre-home WordPress 1
G Creare side-bar non visibile da dispositivi mobile HTML e CSS 0
L creare oggetti da una classe tramite un form Javascript 0
Web93 CREARE SITO WEB COMICS CON WORDPRESS WordPress 0
maxnegri Contare sessioni aperte e creare condizione PHP 1
A Come creare pulsante donazione PayPal HTML e CSS 5
L [CERCO] Creare blog su WordPress con tema Divi Offerte e Richieste di Lavoro e/o Collaborazione 3
F Creare un set di date a seconda del frazionamento scelto da inserire in MySQL PHP 6
R [Photoshop] Creare Azione Photoshop 1
F [PHP] creare tabella e tasto cerca PHP 3
A Creare con Javascript un percorso all'interno di uno spazio Javascript 0
B [PHP] Creare PDF dopo inserimento dati form PHP 4
A [HTML] Creare sito web per eLearnig HTML e CSS 2
R Bootstrap 4 - creare una finestra di testo responsive sopra un Carousel jQuery 1
Spenalzo Creare tabelle multiple con Access via VBA MS Access 2
R [PHP] Creare sistema random PHP 3
D [PHP] Consigli su come creare form PHP 1
I Creare Qsl radioamatore con testo editabile Presentati al Forum 1
T [PHP] Creare Honeypot per form contatti PHP 10
S [PHP] Creare collegamento filtri di ricerca al database PHP 6

Discussioni simili