pondělí 24. října 2011

SQLite3 na 500gP




Co takhle si hodnoty naměřené domácím teploměrem ukládat do databáze? A co třeba potom malovat grafy?
Nejprve je nutné nainstalovat balíček sqlite3-cli.

A nyní už je možné skriptovat:
#!/bin/bash
sqlite3 /opt/www/Databaze/teploty.db "prikaz;"

Takto vytvoříme tabulku venku, se sloupci ID, čas a teplota.
  
CREATE TABLE 'venku' ('ID' INTEGER PRIMARY KEY AUTOINCREMENT, 'Datum' TIMEDATE NOT NULL, 'Teplota' INT);



A takto do tabulky vkládáme data:
INSERT INTO venku VALUES (NULL ,DATETIME('NOW'),12.5);
Můj teploměr naměřené hodnoty ukládá do souboru v RAM
#!/bin/bash
#Teplota=10.5
# načte ze souboru teplotu ve formátu "-11.5 °C"
# grep vybere pouze čísla a znaménka
Teplota=`egrep -o "[0-9.+-]+" /tmp/teplota.txt`
#echo $Teplota
sqlite3 teploty.db  "INSERT INTO venku VALUES (NULL ,DATETIME('NOW'),'$Teplota');"
a nastavení CRONu pro hodinové logování
0 * * * * /opt/www/Databaze/Vloz_db.sh
Načtení dat můžeme provést takto:
SELECT * FROM 'venku';
Nebo můžeme tabulku smazat pomocí příkazu:
DELETE FROM 'venku';
A konečně načtení hodnot pomocí PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<meta http-equiv="Content-Type" content="text/html">
<head>
<TITLE>Tabulka teplot</TITLE>
<style type="text/css">
    BODY {background: SkyBlue;}
    TD {padding-left: 5px; padding-right: 5px; text-align: center; background-color: LightGreen;}
    TH {background-color: LimeGreen;}
    TABLE {background-color: LimeGreen;}
</style>
</head>
<body>
<h1>Tabulka teplot</h1>
<table border="1">
<tr><th>ID<th>Datum<th>Teplota
<?php
// připojení do databáze
$db = new SQLite3("/opt/www/Databaze/teploty.db");
// dotaz, výběr z tabulky venku
$dotaz = "SELECT * FROM  'venku';";
$vysledek = $db->query($dotaz);
while ($zaznam=$vysledek->fetchArray(SQLITE3_ASSOC))
{
    echo '<TR><TD> '.$zaznam["ID"].' <TD> '.$zaznam["Datum"].' <TD> '.str_replace(".",",",$zaznam["Teplota"]).' C';
}
echo '</table>';
echo "<br>Vae IP adresa: ".$_SERVER["REMOTE_ADDR"];
?>
</body>
</html>

Žádné komentáře:

Okomentovat