Это старая версия документа!
В данном документе приведено описание применения программы «Программный интерфейс взаимодействия системы отображения метеорологических данных измерительной информации», предназначенной для передачи системе отображения метеорологической информации из базы данных.
Программный интерфейс входит в состав системы отображения метеорологических данных МФ МГТУ им. Н.Э. Баумана. Основные функции программного интерфейса состоят в получении, передачи и обработке метеорологической информации в формате JSON.
В состав технических средств должен входить персональный компьютер (ПЭВМ), выполняющий роль сервера, включающий в себя:
Для функционирования программного интерфейса необходимо инсталлировать резидентную систему управления базами данных класса NoSQL Redis версии 6.0.1. Также необходимо установить программную платформу Node.js версии 12.16.3, а также ряд npm-пакетов и модулей:
Все вышеперечисленные модули устанавливаются с помощью команды:
$ npm install "имя пакета"
Все вышеописанное программное обеспечение необходимо устанавливать на операционные системы семейства Linux и Windows. При использовании Windows единственным ограничением будет необходимое использование операционной системы Windows 7 или выше.
Программный интерфейс работает в режиме 24/7 на сервере мониторинговой системы, ожидая запросы на получение данных. Вместе с программным интерфейсом постоянно работает Redis, который расположен на порте сервера 6379.
Входной информацией для программного интерфейса будет являться GET-запрос по протоколу HTTP к интерфейсу REST или GraphQL. Список всех возможных запросов к программному интерфейсу REST:
Запрос | Получаемые данные |
---|---|
calibr/last5min/:uname/:serial | Откалиброванные данные за последние 5 минут. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
calibr/day/:date/:uname/:serial | Откалиброванные данные за день. Обязательно нужно указать дату в формате «год-месяц-день». Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
calibr/lastweek/:uname/:serial | Откалиброванные данные за последнюю неделю. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
calibr/log/:fdate/:sdate/:uname/:serial | Откалиброванные данные за любой временной интервал. Обязательно надо указать начальную и конечную даты в формате «год-месяц-день часы-минуты-секунды». Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
calibr/last_measurement/:uname/:serial | Откалиброванные последние измерения. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
calibr/lastmin/:uname/:serial | Откалиброванные данные за последнюю минуту. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
not_calibr/last5min/:uname/:serial | Неоткалиброванные данные за последние 5 минут. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
not_calibr/lastweek/:uname/:serial | Неоткалиброванные данные за последнюю неделю. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
not_calibr/log/:fdate/:sdate/:uname/:serial | Неоткалиброванные данные за любой временной интервал. Обязательно надо указать начальную и конечную даты в формате «год-месяц-день часы-минуты-секунды». Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
not_calibr/last_measurement/:uname/:serial | Неоткалиброванные последние измерения. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
not_calibr/lastmin/:uname/:serial | Неоткалиброванные данные за последнюю минуту. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
not_calibr/day/:date/:uname/:serial | Неоткалиброванные данные за день. Обязательно нужно указать дату в формате «год-месяц-день». Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
Для отправки запроса к программному интерфейсу REST необходимо обратиться к следующему URL:
http://название_домена:3000/db_api_REST/запрос
Список всех возможных запросов к программному интерфейсу GraphQL:
Запрос | Получаемые данные | |
---|---|---|
{calibr(time:«last5min»,uname:« », serial: « »)} | Откалиброванные данные за последние 5 минут. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{calibr(time:«lastweek»,uname:« », serial: « »)} | Откалиброванные данные за последнюю неделю. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{calibr(time:«log»,fdate:« »,sdate: « », uname:« », serial: « »)} | Откалиброванные данные за любой временной интервал. Обязательно надо указать начальную и конечную даты в формате «год-месяц-день часы-минуты-секунды». Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{calibr(time:«last_measurement»,uname:« », serial: « »)} | Откалиброванные последние измерения. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{calibr(time:«lastmin»,uname:« », serial: « »)} | Откалиброванные данные за последнюю минуту. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{calibr(time:«day»,date:« »,uname:« », serial: « »)} | Откалиброванные данные за день. Обязательно надо указать дату в формате «год-месяц-день». Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{not_calibr(time:«day»,date:« »,uname:« », serial: « »)} | Неоткалиброванные данные за день. Обязательно надо указать дату в формате «год-месяц-день». Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{not_calibr(time:«last5min»,uname:« », serial: « »)} | Неоткалиброванные данные за последние 5 минут. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{not_calibr(time:«lastweek»,uname:« », serial: « »)} | Неоткалиброванные данные за последнюю неделю. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{not_calibr(time:«log»,fdate:« »,sdate: « », uname:« », serial: « »)} | Неоткалиброванные данные за любой временной интервал. Обязательно надо указать начальную и конечную даты в формате «год-месяц-день часы-минуты-секунды». Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{not_calibr(time:«last_measurement»,uname:« », serial: « »)} | Неоткалиброванные последние измерения. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) | |
{not_calibr(time:«lastmin»,uname:« », serial: « »)} | Неоткалиброванные данные за последнюю минуту. Для получения данных с конкретного прибора укажите uname и serial (название и серийный номер) |
Для отправки запроса к программному интерфейсу GraphQL необходимо отправить GET-запрос по протоколу HTTP на следующий URL:
http://название_домена:4000/graphql?query=GraphQL-запрос
Выходные данные представлены в виде JSON-записей, ключом каждой из которых является их уникальный номер записи в базе данных, а значением – словарь, включающий в себя общую информацию и измерения. Пример одной записи, которая подается на выход:
Выше рассмотрена одна выходная запись, ключом которой является ее уникальный номер в базе – 1294425. Ее значение – словарь, в котором содержатся общие данные: время измерения, название прибора, его серийный номер. Также в значении записи находится словарь «data», в котором содержится вся метеорологическая и системная информация в формате «параметр – значение».