Добрый день, подскажите как можно использовать текущую погоду с какого нибудь сайта в проекте, визуализировать ее и использовать показание погоды для самого проекта?
vyacheslav, Simple-Scada умеет читать текстовые файлы, это дает Вам возможность извернуться как хотите.
https://ru.wikipedia.org/wiki/Обходной_приёмСуть идеи:
Спарсить погоду с нужного сервиса в текстовый файл (любым путем как Вам удобно).
Прочитать файл и отобразить данные в Simple-Scada.
Рабочий пример:
Все действия сводятся просто к копированию файлов в нужные места и регистрации на сайте.Погоду будем получать с сайта https://openweathermap.org.Он предоставляет удобный API, данные выдает в JSON.
Просто регистрируемся, получаем свой API key согласно описания
https://openweathermap.org/appid.
(appid заработает через 10 минут после регистрации).
Если все ок то по ссылке
http://api.openweathermap.org/data/2.5/weather?q=Moscow,RU&appid=APPID&units=metric
Вы увидите что-то типа:
{"coord":{"lon":37.62,"lat":55.75},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":-4.5,"pressure":1010,"humidity":53,"temp_min":-5,"temp_max":-3},"visibility":10000,"wind":{"speed":3,"deg":210},"clouds":{"all":0},"dt":1521484200,"sys":{"type":1,"id":7325,"message":0.0029,"country":"RU","sunrise":1521430374,"sunset":1521474143},"id":524901,"name":"Moscow","cod":200}
Нам нужно просто получить этот json, дальше его обработать и перенаправить нужные нам данные в текстовый файл, который и прочитаем в Simple-Scada.
Для этого нам потребуются две утилиты:
1. jq jq is a lightweight and flexible command-line JSON processor.
https://stedolan.github.io/jq/ <-качаем отсюда
2. curlcURL — свободная (распространяемая по лицензии MIT), кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
https://ru.wikipedia.org/wiki/CURL
https://curl.haxx.se/download.html <-качаем отсюда
Утилиты копируем куда Вам нравится, я для них в каталоге с проектом создал папку binСоздаем там же weather.bat с таким содержимым:
echo off
cls
set dirPath=%~dp0
"%dirPath%curl.exe" "http://api.openweathermap.org/data/2.5/weather?q=Moscow,RU&appid=ВАШ_APIKEY&units=metric" | "%dirPath%jq.exe" ".main.temp" > "%dirPath%weather.txt"
BAT файл можно запускать или средствами СКАДЫ или сделать в планировщике задачу.
Я буду запускать средствами Simple-Scada.
1. Добавляю переменную типа DateTime и называю ее WeatherTimer.
2. Создаю скрипт типа Изменились переменные и добавляю в список переменных WeatherTimer.
Код скрипта:
var
aPath:String;
begin
if WeatherTimer.AsDateTime < StrToTime('00:00:01') then begin
if FileExists('weather.txt', GetProjectPath + 'bin\') then begin
TextFileOpen('weather.txt', GetProjectPath + 'bin\', fomReset, fcpUTF8);
txtWeather.Text:=TextFileReadLn+'°C';
TextFileClose;
end;
end;
if WeatherTimer.AsDateTime > StrToTime('00:00:10') then begin
aPath := '"' + GetProjectPath + 'bin\weather.bat"';
RunApplication(GetClientName, aPath,'');
TimerStart(WeatherTimer,0); //Сбрасываем таймер
end;
end.