- PVSM.RU - https://www.pvsm.ru -
Описанное ниже — это конструкция выходного дня. От идеи до реализации была затрачена пара вечеров. В описании представлен необходимый минимум для реализации системы сбора информации, с доступом к последней в режиме Online.
Уже в процессе написания данной заметки, появилась статья: Зимовка кактусов с онлайн контролем температуры [1]. В начале испугался, что опередили, однако, хоть решаемая задача в обоих случаях и близка, реализация кардинально отличается.
Архитектура получившейся системы представлена на диаграмме:
Как можно видеть, клиентская часть полностью реализована в микроконтроллере. Система легко масштабируется и настраивается под любые нужды.
В качестве основы клиента взята плата Keil MCB2300, долго лежавшая без дела. Плата построена на микроконтроллере LPC2368, он довольно старый (в настоящий момент вместо него разумнее использовать LPC1768), однако напичкан всем необходимым. На плате присутствует Ethernet-интерфейс, который и является в данном случае «окном в мир». В качестве источника данных взят давно знакомый мне BMP085, подключаемый по интерфейсу I2C.
Софт для тестирования сервера и проверки работы HTTP-запросов писался в рамках Win32-приложения:
В дальнейшем эта же логика перешла внутрь микроконтроллера. В настоящий момент запрос адресуется конкретному IP-адресу, но лучше использовать DNS-клиент, т.к. теоретически хостинг-оператор может переносить сайт внутри своего пространства адресов. Так же можно добавить NTP-клиент, чтобы отправлять серверу данные сразу с меткой времени.
Данный проект — первая моя проба работы с TCP/IP протоколом на микроконтроллере. В основу взят пример EasyWeb, который предлагается для многих плат с Ethernet в качестве стартового. Основной цикл программы получился кривым, однако, причесывать его не хочется, т.к. необходимый функционал уже реализован, зато хочется попробовать перенести это приложение на стек uIP, потому что по внутренней структуре он мне нравится больше.
Главный цикл работы программы:
А вот и внешний вид всего устройства:
Серверная часть развернулась на обычном
Все данные на сервер передаются в рамках GET-запросов:
GET http://server/add.php?file=temp&data=23.4;99809 HTTP/1.0rnrn
А вот содержимое CSV файла:
1418069433;23.4;99809 1418069443;23.4;99811 1418069453;23.4;99818 1418069464;23.4;99801
Каждая строчка содержит метку времени, температуру и давление в Паскалях.
Чтобы все выглядело красиво, на сервере можно организовать и иные формы отображения данных. В качестве библиотеки диаграмм/графиков попробовал использовать Hightcharts [3]. С ним можно сделать вот такое оформление:
Это не живой график, это скриншот его вида. В живом виде график можно посмотреть по ссылкам: Температура [4] и Давление [5].
Автор: nehyrb
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/76784
Ссылки в тексте:
[1] Зимовка кактусов с онлайн контролем температуры: http://habrahabr.ru/post/245285/
[2] хостинге: https://www.reg.ru/?rlink=reflink-717
[3] Hightcharts: http://www.highcharts.com
[4] Температура: http://igorkov.org/stat
[5] Давление: http://igorkov.org/statp
[6] Исходники прошивки для платы MCB2300: http://igorkov.org/zip/http_frw_v1.zip
[7] Демонстрация работы с логами: http://igorkov.org/zip/http_web_v1.zip
[8] Плагин диаграмм: http://igorkov.org/zip/http_web_plugin_v1.zip
[9] Win32-приложение: http://igorkov.org/zip/http_win32_v1.zip
[10] Генерация HTTP запросов — Антон Калмыков (Antonio): http://www.codenet.ru/webmast/php/HTTP-POST.php
[11] DNS Query Code in C with winsock: http://www.binarytides.com/dns-query-code-in-c-with-winsock/
[12] RFC958 — Описание NTP-протокола: https://tools.ietf.org/html/rfc958
[13] RFC826 — Описание ARP-протокола: https://tools.ietf.org/html/rfc826
[14] Источник: http://habrahabr.ru/post/245411/
Нажмите здесь для печати.