Witam!
Jako że jetem kompletnym laikiem jeśli chodzi o środowisko php, mysql - pozwoliłem sobie zamieścić tutaj (jeśli nie ten dział to proszę o przeniesienie) prośbę o pomoc.
Jestem piwowarem domowym i ostatnio wpadła mi w ręce fajna zabaweczka, tj. modulik ESP8266 dzięki, któremu mam możliwość sterowania i kontroli temperatury
fermentacji piwa w lodówce. Na chwilę obecną dane wrzucam na thingspeak'a
tutaj macie podgląd. Koledze z forum piwo.org
udało się stworzyć skrypt który daję bardziej rozbudowany i czytelny wykres - podesłał mi do niego kod a ja niestety nie potrafię go odpowiednio "użyć". Stworzyłem sobie domenę
na darmowym serwisie hostinger.pl która obsługuję php i mysql i na tym moje umiejętności się kończą - dlatego proszę Was o pomoc w złożeniu tego w całość abym mógł w pełni wykorzystać ten modulik.
Poniżej podam Wam treść wiadomości priv kolegi, który mi udostępnił ten kod:
Najpierwskrypt zbierający dane:
wrzuć go przez SSH i dodaj go do crontab żeby co 10minut się łączył
#!/bin/bash
cd /var
wget [url="http://ADRES_STEROWNIKA/ster"]http://ADRES_STEROWNIKA/ster[/url] -o /dev/null
if [ ! -f "/var/input" ]; then
if [ ! -f "/var/wylacz" ]; then
mysql -u UZYTKOWNIK_MYSQL
-pHASLO_MYSQL
-e
"INSERT INTO BAZA_DANYCH.TABLICA (OnOff) VALUES ('9');" fi
fi
if [ -f "/var/wylacz" ]; then
rm /var/wylacz
fi
plik=$(cat /var/ster)
onoff=`cat ster | grep Aktualna | sed 's/.*Zalaczony=<\/p><\/th><th><p align=left>//' | sed 's/<\/p><\/th><\/tr><tr><th$
temp=`cat ster | grep Aktualna | sed 's/.*temperatura=<\/p><\/th><th><p align=left>//' | sed 's/<koniectempertury><\/p>$
rm /var/input
mysql -u UZYTKOWNIK_MYSQL
-pHASLO_MYSQL
-e
"INSERT INTO BAZA_DANYCH.TABLICA (temperatura, onoff) VALUES ('$temp', '$onoff');"
tu musisz się sedem pobawić bo ja mam trochę inne oprogramowanie i robiłem to trochę na oślep
przy mysqlach hasło ma być bezpośrednio po -p (to nie jest błąd!)
Potem skrypt PHP:
Musisz się pobawić i poustawiać to pod siebie i ściagnąć bibliotekę jquery oraz highcharts (ogolnie dostepne)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;CHARSET=UTF-8">
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
<meta http-equiv="Cache-Control" content="post-check=0, pre-check=0">
<meta http-equiv="Pragma" content="no-cache">
<title>Temperatura w komorze fermentacyjnej</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script src="js/highcharts.js"></script>
<?php
function czastworz()
{
return ((float)$usec + (float)$sec);
}
$cz = czastworz();
$pol = mysql_connect("localhost","UZYTKOWNIK_MYSQL","HASLO_MYSQL");
if (!$pol) { die('Nie można podłączyć do bazy SQL z powodu: ' . mysql_error()); } $teraz=$teraz+3600;
$wroc=$teraz-(30*86400); // 30 dni
$were=" AND sztempel > '".date("Y-m-d H:i:s",$wroc)."'";
$zapytanie = mysql_query("SELECT sztempel, temperatura FROM TABLICA WHERE temperatura is not null and sztempel < '".date("Y-m-d H:i:s",$teraz)."'$were"); $temp .= "[".$data.",".$wiersz[1]."],";
}
$zapytanie = mysql_query("SELECT sztempel, onoff FROM TABLICA WHERE onoff is not null and sztempel < '".date("Y-m-d H:i:s",$teraz)."'$were"); $wl .= "[".$data.",".$wiersz[1]."],";
?>
<script type="text/javascript">
$(function () {
Highcharts.setOptions({ lang: { resetZoom: 'Cofnij', resetZoomTitle: 'Kliknij by zobaczyć cały wykres',
months: ['Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'],
shortMonths: ['Sty', 'Luty', 'Marz', 'Kwie', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paźdz', 'Lis', 'Gru'],
weekdays: ['Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota']}
});
Highcharts.theme = {
chart: { backgroundColor: '#FFFFFF', borderColor: '#BBBBBB', borderWidth: 1, shadow: true, plotShadow: false,margin: [55,75,30,65] },
credits: { enabled: false },
legend: { enabled: false },
xAxis: { labels: {style: {color: '#000000'}}, gridLineWidth: 0.3, gridLineDashStyle: 'longdash' },
yAxis: { tickWidth: 1, tickColor: "#000", labels: {style: {color: '#000000'}}},
tooltip: { dateTimeLabelFormats:{hour:"%A, %e %B, %H:%M"} },
plotOptions: { series: { marker: { enabled: false, states: { hover: { enabled: true }}}}}
};
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
$('#divTemp').highcharts({
chart: { type: 'spline', zoomType: 'x' },
title: { text: 'Komora fermentacyjna', x: -20 },
subtitle: { text: 'malinowy.eu', x: -20 },
xAxis: { type: 'datetime', maxZoom: 2 * 3600000, // 2 godziny
title: { text: null },},
yAxis: [{ title: { text: 'Temperatura [°C]' }, tickinterval: 0.5, min: 1, max: 20, plotLines: [{ value: 0, width: 1,color: '#808080' }], opposite: true },
{ title: { text: 'Czy włączone?'}, min: 0, max: 6, tickinterval: 1 ,plotLines: [{ value: 0, width: 1, color: '#808080'}], opposite: false }],
legend: { layout: 'vertical', align: 'right', verticalAlign: 'middle', borderWidth: 0 },
series: [{ type: 'areaspline', fillColor : { linearGradient : { x1: 0, y1: 0, x2: 0, y2: 1 }, stops : [[0, Highcharts.getOptions().colors[5]], [1, Highcharts.Color(Highcharts.getOptions().colors[5]).setOpacity(0).get('rgba')]]},
tooltip: { valueSuffix: '°C' }, name: 'Temperatura', color: 5, yAxis: 0,
data: [
<?php echo "$temp"; ?>]},
{ yAxis: 1, tooltip: { valueSuffix: '' }, name: 'Włączone',
data: [
<?php echo "$wl"; ?>]}]
});
});
</script>
</head>
<body>
<div id="divTemp" style="width: 900px; height: 500px; margin: 0 auto"></div>
<font size=1 color=#dcdcdc>
<?php }
$czk = czastworz();
$time = substr($czk - $cz, 0
, 4
); echo "Strona została wygnerowana w $time sekund."; ?>
</font>
</body>
Ja mam bazę danych ustawioną tak:
ID, sztempel, temperatura, onoff
id - numer kolejny
sztempel - czas utworzenia wpisu
edit. Zapomniałem podać linka jak wygląda taki wykres z powyższego kodu
tutaj link
Ten post edytował xjaniux 15.02.2016, 18:35:12
Powód edycji: [Kshyhoo]: bb-code