Здравствуйте.
Появилась необходимость считывать данные с счетчиков газа Принц производства Радан.
Предоставили информацию по API (
https://gas.zavodradan.ru/api/documentation).
Уже получилось реализовать получение API-токена в скаде. Даже какие-то данные вытаскивать. Но, только как URL-запросы. Например, токен получаем так:
var
aHTTP: TM_HTTP;
aPOST: TM_HTTPPost;
begin
aPost := TM_HTTPPost.Create(hptJSON);
aHTTP := RequestHTTP;
aHTTP.Post('https://gas.zavodradan.ru/api/login?email=login&password=pass', aPost, 70); // отмечаем запрос тегом = 70
end.
Скрипт "Выполнен POST/GET запрос":
var
ApiKey: string;
begin
if Response.Tag = 70 then
begin
ApiKey := (Response['api_token'].AsStr);
Text101.Text := ApiKey;
Token.Value := ApiKey;
end;
end.
А информацию по расходу газа так:
var
aHTTP: TM_HTTP;
aQuery: string;
begin
aQuery := 'https://gas.zavodradan.ru/api/devices/gas_sensors/archives/days?api_token=Token&device_id=0&sn=1234567&start=21.04.2023&end=22.04.2023&count=1'; //суточный архив
aHTTP := RequestHTTP; // создаём экземпляр запроса
aHTTP.Get(aQuery, 77); // вызываем GET с запросом aQuery и отмечаем его тегом = 77
end.
Скрипт "Выполнен POST/GET запрос":
var
aData: TM_JSONNode;
Result, consumption: string;
begin
// если это результат выполнения запроса с тегом 77
if Response.Tag = 77 then
begin
aData := Response[''];
Result := aData.AsStr;
Text12.Text := aData.AsStr; //проверка формирования урл
Text13.Text := aData['pressure'].AsStr;
text14.text:=aData['volume'].AsStr;
text15.text:=aData['consumption'].AsStr;
consumption := aData['consumption'].AsStr;
Vsutki.Value := StrToFloat(consumption);
end;
end.
Как разложить GET-запрос так, чтобы его можно было параметризировать? Допустим, подставлять дату и время, номер счетчика и т.д. Внедрять переменные в URL? Попробовал такой способ, но он слишком усложняет код. Приходится конвертировать время и дату, плюс при вставке переменной на место даты добавляется пробел почему-то в URL.
По итогу опрос должен выполняться автоматически и данные архивироваться для автоматических отчетов.
С API работаем впервые, поэтому понимания пока вообще нет, как это работает)
На сайте с примерами GET-запросов есть форма для тестирования (вложения).