История: Примеры скриптов > HTTP POST/GET запросы Чтение погоды с погодных серверов |
Пред. Вверх След. Еще |
В Simple-Scada можно выполнять HTTP POST/GET запросы к сторонним серверам для чтения данных с них. Ниже рассмотрены примеры получения данных с некоторых популярных погодных серверов.
Примеры скриптов
Сайт weatherstack.com имеет удобный API для чтения погодных данных. После регистрации на сайте вы получите уникальный ключ доступа (API Access Key), который нужно использовать в GET-запросах для получения данных о погоде. В документации weatherstack смотрим примеры запросов и составляем запрос, например для Москвы он должен быть таким: http://api.weatherstack.com/current?access_key=API_ACCESS_KEY&query=Moscow , вместо API_ACCESS_KEY нужно вставить полученный при регистрации ключ доступа. Обратите внимание, если требуется передать параметр содержащий пробел, например "New York", то пробел нужно заменить на "%20", т.е. "New%20York". Убедиться в правильности составленного запроса можно вставив его в адресную строку браузера:
Браузер отобразил ответ с корректными данными, значит запрос составлен правильно. Как видно, ответ передается в формате JSON, позже мы извлечем из него нужные нам свойства. Теперь можно приступить к решению задачи в Simple-Scada. Сначала создадим интерфейс в проекте. Температуру и местное время будем выводить в компоненты Текст. А дополнительные параметры "ветер", "давление" и "влажность" выведем в компонент Таблица. На изображении ниже показан созданный интерфейс и имена, которые мы дали компонентам:
Интерфейс готов. Сделаем так, чтобы погода обновлялась сразу после запуска проекта, а затем через каждые 10 минут. Для этого создадим новый скрипт с типом события "Таймер" - в параметре скрипта "Интервал" укажем значение 600 секунд и активируем опцию "Выполнить сразу после запуска проекта". Напишем код скрипта: var
Данный скрипт будет выполнять HTTP GET запрос через каждые 10 минут. Мы отметили запрос тегом равным 77, чтобы не перепутать его с другими запросами при обработке ответа. Теперь создадим новый скрипт с типом события "Выполнен POST/GET запрос". Такой скрипт будет вызываться при выполнении любого POST/GET запроса, а параметр Response будет содержать ответ сервера. Известно, что сервер возвращает ответ в формате JSON. Текущая температура вложена в объект "current" и имеет имя "temperature". Чтобы получить ее значение, в коде скрипта нужно написать: Response['current']['temperature']. Simple-Scada автоматически извлечет значение свойства из JSON-строки. Аналогично извлекаем другие интересующие нас параметры и выводим их в компоненты Текст и Таблица. В результате код скрипта будет таким: begin Запускаем проект и смотрим результат. Значения считались сразу после запуска, а затем обновляются через каждые 10 минут: |
2. Погода с openweathermap.org
Принцип тот же, что и в первом примере. Регистрируемся на сайте openweathermap.org, получаем ключ доступа и выполняем запросы погоды. Отличие только в форме запроса. Вот пример запроса для чтения текущей погоды: // формируем текст HTTP запроса |
Принцип тот же, что и в первом примере. Регистрируемся на сайте. Добавляем новое приложение и получаем API Key. Текст запроса для получения текущей погоды с accuweather.com выглядит так: aQuery := 'http://dataservice.accuweather.com/currentconditions/v1/294021?apikey=' + |
Аналогично первому примеру регистрируемся на сайте, получаем ключ API. Запросы в Яндекс.Погода должны содержать заголовок "X-Yandex-API-Key" со значением ключа API. Также, запросы осуществляются через HTTPS. Поэтому мы должны добавить заголовок и включить SSL: // формируем текст HTTP запроса |