grillmeister87
Grünschnabel
Hallo zusammen, bin hier ein weilchen Angemeldet und dies ist mein erster Post. Habe schon einige Jahre Programmiert, sowie ein eigenes CMS rausgebracht -> ch-cms damals (http://cms.bilanovic.com/index.php?action=main)
Mein Problem ist es jetzt, dass ich ca. 4 Jahre nichts mehr gemacht habe und fast alles verpennt habe. ... Aber ich probiere mich rein zu schleichen ins neue PHP 7.0 und höher.
Mein neues Projekt ist eine Internetseite für die Bevölkerung zu erstellen. Einige Freunde haben eine Wetterstation von netatmo. Ich selbst speichere die Daten separat in meine Datenabnk. Da ich nicht weis wie ich direkt beim Hersteller auf die Daten Zugreifen kann wie bsp. diese Seite (http://plus.meteoware.com/netatmo/)
Jetzt würde ich gerne eine Eigene Charts Seite erstellen mit dem Wetter.
Heute - Gestern - Aktuelle Woche - letzte Woche - Aktuelles Jahr - letztes Jahr ... Ich hoffe Ihr versteht mich bis jetzt.
Aktuelle Daten (http://wetter.bilanovic.com/netatmo/) die ich von meinem Gerät ablese. Aber dies würde ich wie schon oben gesagt, eine Charts erstellen wollen.
Ein Freund von mir aus Berlin hat schon mal angefangen dies zu erstellen, aber meldet sich seit einiger Zeit nicht mehr, was auch verständlich ist (Familie).
(http://wetter.bilanovic.com/charts/example1_marko.php)
Bevor Ihr jetzt kommt, ich solle google nutzen, dann lasst es gleich lieber. Denn ich hab jetzt bestimmt 1 Monat nach Lösung und Hilfe gesucht, leider nichts gefunden was mich anspricht.
so sieht jetzt die Infrastruktur aus
Ich hoffe, es kann mir jemand weiterhelfen oder mit mir in Kontakt treten via skype. Bin leider am verzweifeln.
liebe grüsse aus der Schweiz
Mein Problem ist es jetzt, dass ich ca. 4 Jahre nichts mehr gemacht habe und fast alles verpennt habe. ... Aber ich probiere mich rein zu schleichen ins neue PHP 7.0 und höher.
Mein neues Projekt ist eine Internetseite für die Bevölkerung zu erstellen. Einige Freunde haben eine Wetterstation von netatmo. Ich selbst speichere die Daten separat in meine Datenabnk. Da ich nicht weis wie ich direkt beim Hersteller auf die Daten Zugreifen kann wie bsp. diese Seite (http://plus.meteoware.com/netatmo/)
Jetzt würde ich gerne eine Eigene Charts Seite erstellen mit dem Wetter.
Heute - Gestern - Aktuelle Woche - letzte Woche - Aktuelles Jahr - letztes Jahr ... Ich hoffe Ihr versteht mich bis jetzt.
Aktuelle Daten (http://wetter.bilanovic.com/netatmo/) die ich von meinem Gerät ablese. Aber dies würde ich wie schon oben gesagt, eine Charts erstellen wollen.
Ein Freund von mir aus Berlin hat schon mal angefangen dies zu erstellen, aber meldet sich seit einiger Zeit nicht mehr, was auch verständlich ist (Familie).
(http://wetter.bilanovic.com/charts/example1_marko.php)
Bevor Ihr jetzt kommt, ich solle google nutzen, dann lasst es gleich lieber. Denn ich hab jetzt bestimmt 1 Monat nach Lösung und Hilfe gesucht, leider nichts gefunden was mich anspricht.
so sieht jetzt die Infrastruktur aus
PHP:
<?php
$link = null;
require_once('../netatmo/sqldata/connect.php');
/*
* Array (
[id] => 1 - Internal Id
[name_aus] => Balkon - Description
[temp_aus] => 6.3 - Actual temperature
[time_aus] => 1493449616 - Timestamp when checked
[temp_min_aus] => 2.7 - min temperature of the day
[date_min_aus] => 1493440593 - Timestamp when it was recognized
[temp_max_aus] => 6.6 - max temperature of the day
[date_max_aus] => 1493448437 - Timestamp when it was recognized
[luft_aus] => 73 - Humidity
[message_aus] => 1493449674 -
[batterie_aus] => 5818 - Battery ...
[batterie_p_aus] => 92 - Battery in percentage
[rf_aus] => 71 - Unknown Status
[firmware_aus] => 44 - Firmware
[seen_aus] => 1493449667 -
)
*/
/**
* Array
(
[id] => 1
[name_aus] => Balkon
[temp_aus] => 6.3
[time_aus] => 1493449616
[temp_min_aus] => 2.7
[date_min_aus] => 1493440593
[temp_max_aus] => 6.6
[date_max_aus] => 1493448437
[luft_aus] => 73
[message_aus] => 1493449674
[batterie_aus] => 5818
[batterie_p_aus] => 92
[rf_aus] => 71
[firmware_aus] => 44
[seen_aus] => 1493449667
)
*
* @param $sBegin
* @param $sEnd
* @return array|null
*/
function fetchDateBetweenTimestamps($sBegin, $sEnd) {
global $link;
$aResult = array();
$oResult = mysqli_query($link,'SELECT * FROM ntm_modul_1 WHERE time_aus BETWEEN '.$sBegin.' AND '.$sEnd.'');
while ($aRow = mysqli_fetch_assoc($oResult)) {
$aResult[] = $aRow;
}
return $aResult;
}
function flatTimeTo10Minutes($sTimeStamp) {
$oDate = new DateTime();
$oDate->setTimestamp($sTimeStamp);
$sSecond = $oDate->format("s");
if ($sSecond > 0) {
$oDate->add(new DateInterval("PT".(60 - $sSecond)."S"));
}
$sMinute = $oDate->format("i");
$sMinute = $sMinute % 60;
if ($sMinute != 0) {
// Count difference
$sDiff = 60 - $sMinute;
// Add difference
$oDate->add(new DateInterval("PT".$sDiff."M"));
}
return $oDate->getTimestamp();
}
function fillEmptyEntriesDailyChart($aDates, $sStart, $sEnd) {
$aMergeDates = array();
foreach ($aDates as $aData) {
$aMergeDates[flatTimeTo10Minutes($aData['time'])] = $aData['temp'];
}
// starting date
$aBaseDates[] = $sStart;
while ($sStart <= $sEnd) {
$sStart = strtotime("+10 minutes", $sStart);
$aBaseDates[] = $sStart;
}
$aReturn = array();
foreach ($aBaseDates as $sTimeStamp) {
$sTime = $sTimeStamp*1000;
if (array_key_exists($sTimeStamp, $aMergeDates)) {
$aReturn[] = array($sTime, $aMergeDates[$sTimeStamp]);
} else {
$aReturn[] = array($sTime, null);
}
}
return $aReturn;
}
/**
* @param null|string $sDate - in format Y-m-d
* @return string
*/
function prepareDataForHighChart($sDate = null, $sFunction = null) {
$aResult = array();
if (empty($sDate)) {
$sDate = date('Y-m-d');
}
$oDate = new DateTime($sDate);
$oDate->setTime(0,0,0);
$sStart = $oDate->getTimestamp();
$oDate->modify('+1 day');
$sEnd = $oDate->getTimestamp();
$aDatabase = fetchDateBetweenTimestamps($sStart, $sEnd);
foreach ($aDatabase as $aData) {
$aResult[] = array(
'time' => (int)$aData['time_aus'],
'temp' => (float)$aData['temp_aus']
);
}
if (!empty($sFunction) && function_exists($sFunction)) {
$aResult = call_user_func($sFunction, $aResult, $sStart, $sEnd);
}
return json_encode($aResult);
}
?>
<div id="container"></div>
<script type="text/javascript">
Highcharts.setOptions({
global: {
timezone: 'Europe/Berlin',
timezoneOffset: -2 * 60
}
});
Highcharts.chart('container', {
title: {
text: 'Temperatur Aussen'
},
// subtitle: {
// text: 'Source: thesolarfoundation.com'
// },
xAxis: {
type: 'datetime',
//tickInterval: 600 * 1000,
//min: Date.UTC(2017, 8, 3),
//max: Date.UTC(2013, 8, 4),
},
yAxis: {
title: {
text: 'Temperatur'
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle'
},
plotOptions: {
series: {
pointStart: 0
}
},
series: [
{
name: 'Heute',
data: <?php echo prepareDataForHighChart(null, 'fillEmptyEntriesDailyChart'); ?>
},
{
name: 'Gestern',
data: <?php echo prepareDataForHighChart(null, 'fillEmptyEntriesDailyChart'); ?>
}
]
});
</script>
Ich hoffe, es kann mir jemand weiterhelfen oder mit mir in Kontakt treten via skype. Bin leider am verzweifeln.
liebe grüsse aus der Schweiz