Puxar dados de uma api


#1

Eai gente, preciso de ajuda para puxar dados de uma api para o scadabr. Eu não consigo usar o data source recuperador http, e também não sei se a api está compatível com o scadabr.

A api está programada em json e só preciso puxar valores numérico específicos.


#2

Boa noite,

Se você puder fornecer mais informações sobre essa API e seu funcionamento pode ser mais fácil obter ajuda. Em tese, o ScadaBR 1.2 pode puxar dados por uma chamada HTTP GET ou POST e os Scripts no ScadaBR 1.2 podem usar o objeto Javascript JSON (parse e stringify).

Convido-lhe também a conhecer o grupo aberto do ScadaBR no Telegram, acessando o link: https://t.me/joinchat/Bn_M6hAdvBMc4AUjY2grnQ


#3

Então, eu estudei tudo o que você me passou e ainda não tive resultado. Estou tentando usar a mesma programação do vídeo alterando apenas os parâmetros da URL mas não sei se é suficiente, segue o código:

   function simpleGet(url, parameters) {
      var respStatus = null;
      var respString null;
      var respErrors = null;

      var geturl = url.replace(/V/$/,"") + "2";
      for (var i in parameters) {
            var paramKey = encodeURIComponent (parameters[i].key);
            var paramValue = encodeURIComponent (parameters[i].value);
            geturl += paramKey + "m" + paramvalue + "&";
        }

      var imports = Java Importer (org.apache.commons.httpclient.httpclient,
                                   org.apache.commons.httpclient.methods.GetMethod,
                                   org.apache.commons.httpclient.DefaultHttpMethodRetryHandler,
                                   org.apache.commons.httpclient.params.HttpMethodParams,
                                   java.io.*);

      with (imports){
        var client = new HttpClient();
        
        var method = new GetMethod(getUrl);

        method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
          new DefaultHttpMethodRetryHandler(3, false));
          
    	  try{
            var statusCode = client.executeMethod(method);
            respStatus = statusCode;

            if (statusCode != 200) {
             respErrors = "Method failed: " + string(nethod.getStatusLine());
            } else {
             var responseBody = method.getResponseBodyAsString();
             
    		 respString = String (responseBody);
            }
    	  }catch (e) {
            respErrors = "Error occurred: " + string(e);
          }finally {
            method.releaseConnection();
          }
         }
         return ( status: respStatus, response: respString, errors: respErrors);
      }
    var url = "http://bs2g.com.br/api/telemetria";
    var parametros = [
        (key: "id", value: "2"),
    	(key: "cm", value: "m"),
    	(key: "data_final", value: "2021-12-02"),
    	(key: "data_final", value: "2021-12-02"),
    	(key: "token", value: "xxx"),
    ];
    var obj = simpleGet(url, parametros);