Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Погода в проекте  (Прочитано 8596 раз)

vyacheslav

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Погода в проекте
« : 17 Марта 2018, 11:46:45 »
Добрый день, подскажите как можно использовать текущую погоду с какого нибудь сайта в проекте, визуализировать ее и использовать показание погоды для самого проекта?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1176
    • Просмотр профиля
Re: Погода в проекте
« Ответ #1 : 18 Марта 2018, 20:36:13 »
Здравствуйте!

Такой возможности нет.

UPD: начиная с версии Simple-Scada 2.3.6.10 можно при помощи HTTP POST/GET запросов получать данные с любых серверов с открытым HTTP API. Примеры для чтения погоды подробно описаны в руководстве.
« Изменён: 01 Апреля 2020, 16:18:14 от Simple-Scada »

levchenkoa

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Погода в проекте
« Ответ #2 : 19 Марта 2018, 23:46:14 »
Добрый день, подскажите как можно использовать текущую погоду с какого нибудь сайта в проекте, визуализировать ее и использовать показание погоды для самого проекта?
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. curl
Цитировать
cURL — свободная (распространяемая по лицензии 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.
Код скрипта:
Код: (delphi)
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.


« Изменён: 26 Мая 2018, 13:32:07 от Simple-Scada »

vyacheslav

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Re: Погода в проекте
« Ответ #3 : 21 Марта 2018, 06:27:25 »
Цитировать
Спарсить погоду с нужного сервиса в текстовый файл (любым путем как Вам удобно).
Прочитать файл и отобразить данные в Simple-Scada.

Спасибо большое, буду пробовать!!
« Изменён: 21 Марта 2018, 08:55:18 от Simple_Scada »

garry

  • Пользователь
  • **
  • Сообщений: 72
    • Просмотр профиля
Re: Погода в проекте
« Ответ #4 : 21 Марта 2018, 15:11:28 »
Спасибо огромное!

Vladimir

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Погода в проекте
« Ответ #5 : 29 Марта 2018, 11:45:46 »
А можно просто повесить датчик температуры и влажности, к примеру вот такой https://relsib.com/product/datchik-vlazhnosti-i-temperatury-dvt-03e и получать самую актуальную информацию.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Погода в проекте
« Ответ #6 : 01 Апреля 2020, 16:18:41 »
Начиная с версии Simple-Scada 2.3.6.10 можно при помощи HTTP POST/GET запросов получать данные с любых серверов с открытым HTTP API. Примеры для чтения погоды подробно описаны в руководстве.

D-rain

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Погода в проекте
« Ответ #7 : 07 Апреля 2020, 21:28:51 »
Начиная с версии Simple-Scada 2.3.6.10 можно при помощи HTTP POST/GET запросов получать данные с любых серверов с открытым HTTP API. Примеры для чтения погоды подробно описаны в руководстве.

Хорошо. Очень близко к теме. А если у меня вот так:

Mandatory HTTP header:
- Authentication: "hmac {public-key}:{unixtime}:{nonce}:
{signature}"
Signature:
The HTTP header authentication signature is generated using the
cryptographic SHA-256 algorithm based on
- HTTP method
- API route
- unixtime
- nonce (random or sequential integer)
with the private key.
Example:
signature = hash_hmac("sha256", "private key", "GET+/api/v1/station/
+1552831710+2135753231")

Могу я как-то хэш вычислить штатными средствами simple-scada?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Погода в проекте
« Ответ #8 : 07 Апреля 2020, 22:02:41 »
Цитировать
Могу я как-то хэш вычислить штатными средствами simple-scada?
Нет, мы не выносили функцию для вычисления HMAC SHA-256 хеша в скрипты. Но можем добавить её в ближайшем обновлении. Если сервер к которому Вы хотите подключиться доступен для всех желающих, то назовите его, мы перед обновлением проверим скаду с ним и убедимся что всё работает.

D-rain

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Погода в проекте
« Ответ #9 : 07 Апреля 2020, 22:35:31 »
Цитировать
Могу я как-то хэш вычислить штатными средствами simple-scada?
Нет, мы не выносили функцию для вычисления HMAC SHA-256 хеша в скрипты. Но можем добавить её в ближайшем обновлении. Если сервер к которому Вы хотите подключиться доступен для всех желающих, то назовите его, мы перед обновлением проверим скаду с ним и убедимся что всё работает.
Это к сожалению коммерческий продукт, но могу дать описание API и демо логин, для проверки.
Впрочем, ничем от прогноза погоды не отличается, тот же json, только авторизация похитрее.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Погода в проекте
« Ответ #10 : 08 Апреля 2020, 10:13:03 »
Вышлите на support@simple-scada.com. Проверим, может быть добавим дополнительные функции для разбора ответов сервера (в зависимости от структуры JSON), а также проверим аутентификацию с нужными заголовками.

D-rain

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Погода в проекте
« Ответ #11 : 09 Апреля 2020, 13:09:57 »
Вышлите на support@simple-scada.com. Проверим, может быть добавим дополнительные функции для разбора ответов сервера (в зависимости от структуры JSON), а также проверим аутентификацию с нужными заголовками.

Большая благодарность команде разработчиков, за оперативное реагирование и добавление нового функционала в скаду!

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Погода в проекте
« Ответ #12 : 21 Апреля 2020, 17:39:12 »
D-rain, все необходимые функции включили в обновление 2.3.6.11.

D-rain

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Погода в проекте
« Ответ #13 : 24 Апреля 2020, 22:12:23 »
Спасибо. Успел заметить :)
Работает !

ps. пока генерировал ключ внешней утилитой, появилось предложение добавить RunApplication возможность запуска приложений в свёрнутом виде и ожидания их завершения.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Погода в проекте
« Ответ #14 : 26 Апреля 2020, 16:09:25 »
Возможность запуска в свернутом режиме добавим, но ожидание завершения в ближайшее время точно не добавим.