@P_Tingen:
Ik had hetzelfde idee om een aparte tabel te maken voor de live data en voor de historische data een aparte tabel welke enkel het opgewerkte vermogen opslaat. Dit om ook zo ruimte te besparen in de database wat wel handig is op een PI. Je kunt deze natuurlijk eenvoudig uitbreiden naar eigen behoefte.
Zie hieronder mijn submit_mysql functie:
function submit_mysql ($report, $TotalWh) {
$today = date('Ymd'); // Today's date
$ID = $report['IDDec']; // Inverter Identifier
$ACpower = round($report['DCPower'] * $report['Efficiency'], 0);
$db_link = mysqli_connect(MYSQLHOST, MYSQLUSER, MYSQLPASSWORD, MYSQLDB);
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* Add latest reported output to CurrentPower table */
$SQL = "SELECT * FROM tbl_CurrentPower WHERE InverterID = $ID";
if ($result = mysqli_query($db_link, $SQL)) {
/* determine number of rows result set */
$row_cnt = mysqli_num_rows($result);
/* close result set */
mysqli_free_result($result);
if ($row_cnt == 0) {
$SQL = "INSERT INTO tbl_CurrentPower (InverterID, CurrentOutput, TotalOutput) VALUES ($ID, $ACpower, $TotalWh)";
$result = mysqli_query($db_link,$SQL);
}
else {
$SQL = "UPDATE tbl_CurrentPower SET CurrentOutput = $ACpower , TotalOutput = $TotalWh WHERE InverterID = $ID";
$result = mysqli_query($db_link,$SQL);
}
}
/* Add latest reported daily output to HistoryPower table */
$SQL = "SELECT * FROM tbl_HistoryPower WHERE Date = $today AND InverterID = $ID";
if ($result = mysqli_query($db_link, $SQL)) {
/* determine number of rows result set */
$row_cnt = mysqli_num_rows($result);
/* close result set */
mysqli_free_result($result);
if ($row_cnt == 0) {
$SQL = "INSERT INTO tbl_HistoryPower (Date, InverterID, TotalOutput) VALUES ($today, $ID, $TotalWh)";
$result = mysqli_query($db_link,$SQL);
}
else {
$SQL = "UPDATE tbl_HistoryPower SET TotalOutput = $TotalWh WHERE InverterID = $ID AND Date = $today";
$result = mysqli_query($db_link,$SQL);
}
}
/* close connection */
mysqli_close($db_link);
}
Tevens ook een functie gemaakt om de Database aan te maken:
function create_database () {
// Create connection
$conn = mysqli_connect(MYSQLHOST, MYSQLUSER, MYSQLPASSWORD);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Create database
$sql = sprintf ("CREATE DATABASE %s", MYSQLDB);
if (mysqli_query($conn, $sql)) {
echo "Database created successfully\n";
} else {
echo "Error creating database: " . mysqli_error($conn) . "\n";
}
mysqli_close($conn);
// Create connection
$conn = mysqli_connect(MYSQLHOST, MYSQLUSER, MYSQLPASSWORD, MYSQLDB);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// sql to create table
$sql = "CREATE TABLE tbl_CurrentPower (InverterID INT(11), CurrentOutput INT (11), TotalOutput INT (11) )";
if (mysqli_query($conn, $sql)) {
echo "Table CurrentPower created successfully\n";
} else {
echo "Error creating table: " . mysqli_error($conn) . "\n";
}
// sql to create table
$sql = "CREATE TABLE tbl_HistoryPower (Date DATE, InverterID INT(11), TotalOutput INT (11) )";
if (mysqli_query($conn, $sql)) {
echo "Table HistoryPower created successfully\n";
} else {
echo "Error creating table: " . mysqli_error($conn) . "\n";
}
mysqli_close($conn);
}