Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Uśrednianie danych i kodowanie do formatu JSON
zbysiusp
post 20.04.2017, 18:15:45
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 11.07.2009

Ostrzeżenie: (0%)
-----


Witam!

Proszę o pomoc w rozwiązaniu następującego problemu. Do bazy MySQL zapisuję co 1 minutę wynik pomiaru wilgotności powietrza. Za pomocą skryptu php pobieram dowolną ilość danych np. 17 i koduję je do formatu JSON. Skrypt, który napisałem działa bardzo dobrze.
  1. <?php
  2.  
  3. $wynik_data = mysql_query("SELECT czas_datetime FROM tab_czujniki_2 ORDER BY czas_datetime DESC LIMIT 1");
  4.  
  5. if(mysql_num_rows($wynik_data) > 0) {
  6. $r = mysql_fetch_assoc($wynik_data);
  7. $datan = $r['czas_datetime'];
  8. $daten = new DateTime($data);
  9. $daten->modify('-15 min');
  10. $minus_data = $daten->format("Y-m-d H:i:00");
  11. }
  12.  
  13. $sth = mysql_query("SELECT czas_unix, wilgotnosc FROM tab_czujniki_2 WHERE czas_datetime >= '$minus_data' ORDER BY czas_datetime ASC") or die('Błąd zapytania');
  14.  
  15. $rows = array();
  16. $rows['name'] = 'Wilgotnosc';
  17. while($r = mysql_fetch_array($sth)){
  18.  
  19. $rows['data'][] = array(1000*($r['czas_unix']),$r['wilgotnosc']);
  20. }
  21.  
  22. $result = array();
  23. array_push($result,$rows);
  24. print json_encode($result, JSON_NUMERIC_CHECK)
  25.  
  26. ?>

skrypt

Chciałbym jednak zmienić jego działanie, ale nie bardzo wiem jak podejść do tematu.
Założenia algorytmu:

1. Pobieram z bazy MySQL dowolną ilość rekordów np. 17: (czas1, wil1), (czas2, wil2), (czas3, wil3), (czas4, wil4), (czas5, wil5), ..., (czas17, wil17).
2. Z każdych pięciu, kolejnych rekordów obliczam średnią wilgotność: (wil1+wil2+wil3+wil4+wil5)/5 itd. Z 17 rekordów powstaną więc 3 średnie.
3. Średnie mają być wyliczane tak długo jak będzie 5 lub więcej rekordów. Z 17 rekordów pozostaną więc 2 rekordy niepoddane uśrednianiu.
4. Każdej średniej ma zostać przypisany czas rekordu środkowego w każdej piątce np. średniej z pierwszej piątki przypisany zostanie czas3.
5. Teraz wyliczone średnie z przypisanym czasem koduję do formatu JSON jak w przedstawionym wyżej skrypcie.

Dziękuję i pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:47