Zapis pomiarów do bazy

Temat dotyczy skryptu PHP, który ma za zadanie archiwizować dane pomiarowe w bazie danych SQL.

Pomiary wykonuje ESP8266 lub lepiej ESP32 i wysyła je co interval do bazy SQL. Robi to za pomocą skryptu ZapisAvgMax.php.

Jakie czynności wykonuje skrypt:

  • ESP przekazuje a skrypt pobiera nazwy: tabeli, kolumny/kolumn i wartości, które ma do nich wpisać
  • sprawdza czy w bazie jest już rekord z aktualnego zakresu czasowego określonego parametrem tim
  • jeżeli nie ma to inicjuje rekord z wartościami jakie ma
  • jeżeli jest to wyznacza średnią z wartości w bazie oraz tej którą ma
  • jeżeli wartość dotyczy kolumny UV to sprawdza też czy nowa wartość jest większa i jeżeli tak to uaktualnia ją w bazie w kolumnie UVmax

ciąg dalszy powinien nastąpić

Przykład

  • ESPeasy wysyła co interval=12
  • Baza ma rekordy co tim=60
  • mamy dwie kolumny: DataCzas i pomiar
  • jest 8:00 następuje wysyłka czyli kontroler uruchamia połączenie i wykonanie skryptu ZapisAvgMax.php na serwerze OVH
  • zostaje utworzony rekord „2025-03-26 08:00”
  • jest 8:00:12 kolejny pomiar idzie do bazy ale rekord „2025-03-26 08:00” już istnieje dlatego jest pobierany z bazy i uśredniany razem z pomiarem nowym aktualnym po czym uaktualniany jest istniejący rekord
  • potem kolejne pomiary 8:00:24, 8:00:36 i 8:00:48
  • o 8:01:00 tworzony jest nowy rekord „2025-03-26 08:01” i cykl się powtarza, kolejne pięć pomiarów jest uśrednianych, które od 8:01 do 8:02 będą co 12 sek docierały do bazy.