Погодная станция, часть 4 - Отображение данных на веб странице

Помимо сохранения и отображения данных на локальном компьютере, станция отправляет их на веб сервер.
Причем делает это дважды:
- напрямую через Arduino Ethernet Shield (если подключена)
- c компьютера с подключенной к нему погодной станцией через программу WeatherStation (если используется)

Установка
Для работы скриптов веб сервер должен поддерживать PHP и MySQL. Для отображение данных в виде графиков используется библиотека pChart2.0

Порядок установки:
1. Скачать библиотеку pChart 2.0 c официального сайта или отсюда
2. Скачать скрипты для отображения данных с погодной станции скачать
3. Cкачать скрипты для приема данных от погодной станции скачать
4. Распаковать скрипты из п.2 и п.3 в нужную вам папку под вебсервером, а библиотеку pChart нужно распаковать во вложенный подкаталог с именем pChart2.1.3 (можно использовать и другой, но тогда нужно будет править php скрипты)

Используемая структура папок:
-cache (папка для сгенирированных картинок)
-somename (основная папка со скриптами)
|- cache (файлы кэширования pChart - cache.db и index.db)
|-pChart2.1.3 (файлы библиотеки pChart)


Настройка
1. Создание таблиц MySQL.
В тексте скриптов putweatherdata.php и putweatherdata2.php приведена (в коментарии) текст SQL запроса для создания необходимых таблиц. Его нужно запустить средствами хостинга (часто через myphpadmin).
2. Указать в тексте скриптов данные для доступа к mysql серверу:
$host=""; //адрес mysql серевера
$login=""; //логин к mysql серверу
$pass=""; //праоль для досутпа к mysql серверу
$dbname=""; //имя базы данных, в которой созданы необходимые таблицы
3. Вызвать через браузер скрипт displayweather.php. Если все хорошо, вы увидите страницу как на приведенной картинке.
4. Внутри скриптов displayweather_XXXXXX_img.php нужно настроить поля, которые вы хотите выводить.
Делается это в массиве $data_set. Также для вычисляемых полей (которые не берутся готовыми, а каким-то образом вычисляются), в процедуре readData() в соовтествующем месте, помеченным "//РАСЧЕТНЫЕ ПОЛЯ!!!!" нужно вставить соответствующие формулы.


Немного о механизме
1. Данные поступают на сервер по GET запросу к скриптам putweatherdata.php и putweatherdata2.php - соответственно напрямую от погодной станции и от программы WeatherStation.
2. Полученные данных обрабатываются, проверяется их валидность (грубо говоря давление не может поменяться на 1 мм.рт.ст за 10 секунд) и они сохранются в таблицы weather_data и weather_data2, соответственно.
3. Когда пользователь вызывает скрипт displayweather.php, это инициирует генерацию картинок с графиками. У меня это четыре картинки, создаваемые четырьмя скриптами - displayweather_temp_img.php, displayweather_press_img.php, displayweather_cloud_img.php и displayweather_wet_img.php
4. Эти четыре скрипта практически идентичны и делают две вещи:
- создают картинку с соответствующим графиком в подкаталоге cache (cache_temp.png, cache_press.png, cache_cloud.png и cache_wet.png, соответственно)
- возвращают назад клиенту эту сгенерированную картинку
5. Т.к. постоянная перегенерация этих графиков достаточно ресурсоемкая процедура, рекомендуется на публичную страницу выкладывать ссылки на кэшированные каринки и обновлять сами файлы с изображениями либо по cron, либо каким другим способом.
6. При генерации картинок используется усреднение соседних значений и отбрасывание пиковых выборосов.

Опубликовано: 02-07-2014

Комментарии


Оставить комментарий


Категории

Архив