Utils API
Utils API, script’ler içinden HTTP istekleri, SQL sorguları, tarih/sayı formatlama ve sistem yardımcı fonksiyonlarına erişim sağlar.
HTTP İstekleri
Section titled “HTTP İstekleri”ins.rest(httpMethod, url, contentType, body)
Section titled “ins.rest(httpMethod, url, contentType, body)”Harici bir HTTP servisine istek gönderir.
// GET isteğivar response = ins.rest("GET", "https://jsonplaceholder.typicode.com/todos/1", "application/json", null);
var statusCode = response.statusCode;var body = response.body;var data = JSON.parse(body);Yanıt:
{ "statusCode": 200, "body": "{\n \"userId\": 1,\n \"id\": 1,\n \"title\": \"delectus aut autem\",\n \"completed\": false\n}"}ins.rest(httpMethod, url, headers, body)
Section titled “ins.rest(httpMethod, url, headers, body)”Özel HTTP header’ları ile istek gönderir.
var headers = { "Content-Type": "application/json", "Accept": "application/json"};
var response = ins.rest("GET", "https://jsonplaceholder.typicode.com/todos/1", headers, null);Desteklenen HTTP metodları: GET, POST, PUT, DELETE
SQL Sorguları
Section titled “SQL Sorguları”ins.runSql(sql)
Section titled “ins.runSql(sql)”Varsayılan veritabanında SQL sorgusu çalıştırır.
var result = ins.runSql("SELECT * FROM custom_table WHERE date = CURRENT_DATE");// result.columns = ["id", "name", "value"]// result.rows = [[1, "temp", 25.4], [2, "press", 3.2]]ins.runSql(datasourceName, sql)
Section titled “ins.runSql(datasourceName, sql)”Tanımlı bir harici veri kaynağında SQL sorgusu çalıştırır.
var result = ins.runSql("erp_database", "SELECT production_count FROM daily_report");ins.runSql(url, username, password, sql)
Section titled “ins.runSql(url, username, password, sql)”Doğrudan bağlantı bilgileriyle SQL sorgusu çalıştırır.
var result = ins.runSql( "jdbc:postgresql://192.168.1.50:5432/erp", "reader", "password123", "SELECT * FROM orders WHERE status = 'active'");InfluxQL Sorguları
Section titled “InfluxQL Sorguları”ins.runInfluxQL(influxQL)
Section titled “ins.runInfluxQL(influxQL)”Zaman serisi veritabanında InfluxQL sorgusu çalıştırır.
var result = ins.runInfluxQL( "SELECT mean(value) FROM variable_values WHERE time > now() - 1h GROUP BY time(5m)");ins.getCustomSqlQuery(name) / ins.getCustomInfluxQLQuery(name)
Section titled “ins.getCustomSqlQuery(name) / ins.getCustomInfluxQLQuery(name)”Platformda tanımlı özel sorgu şablonlarını getirir.
var sql = ins.getCustomSqlQuery("daily_report");var result = ins.runSql(sql);Tarih ve Zaman
Section titled “Tarih ve Zaman”ins.now()
Section titled “ins.now()”Sunucunun güncel zamanını döndürür.
var now = ins.now();// → Sat Mar 28 11:31:47 TRT 2026ins.getDate(ms)
Section titled “ins.getDate(ms)”Milisaniye değerinden Date nesnesi oluşturur.
var yesterday = ins.getDate(Date.now() - 86400000);var oneHourAgo = ins.getDate(Date.now() - 3600000);// → Sat Mar 28 10:32:43 TRT 2026Sayı ve Metin Formatlama
Section titled “Sayı ve Metin Formatlama”ins.formatNumber(number, pattern, decimalSeparator, groupingSeparator)
Section titled “ins.formatNumber(number, pattern, decimalSeparator, groupingSeparator)”Sayıyı belirli formatta metin olarak döndürür.
ins.formatNumber(1234567.89, "#,##0.00", ",", ".");// → "1.234.567,89"
ins.formatNumber(3.14159, "0.00", ".", ",");// → "3.14"ins.leftPad(str, len, padChar)
Section titled “ins.leftPad(str, len, padChar)”Metnin soluna karakter ekleyerek belirli uzunluğa tamamlar.
ins.leftPad("42", 5, "0"); // → "00042"ins.leftPad("AB", 4, " "); // → " AB"ins.uuid()
Section titled “ins.uuid()”Benzersiz UUID üretir.
var id = ins.uuid();// → "f4cbb047-4376-4d8b-ae46-5cafed31155b"Bit İşlemleri
Section titled “Bit İşlemleri”ins.getBit(value, bitIndex)
Section titled “ins.getBit(value, bitIndex)”Bir sayının belirli bit’ini okur.
var statusWord = ins.getVariableValue("status_register").value;var bit3 = ins.getBit(statusWord, 3); // true veya falseins.setBit(value, bitIndex, bitValue)
Section titled “ins.setBit(value, bitIndex, bitValue)”Bir sayının belirli bit’ini ayarlar.
var word = 0;word = ins.setBit(word, 0, true); // bit 0 = 1 → word = 1word = ins.setBit(word, 3, true); // bit 3 = 1 → word = 9Yanıt:
{ "word": 9, "bit0": true, "bit1": false, "bit3": true }ins.ping(address, timeout)
Section titled “ins.ping(address, timeout)”Bir IP adresine ping gönderir.
var reachable = ins.ping("127.0.0.1", 3000);// → true
if (!reachable) { ins.notify("warning", "Ağ Uyarısı", "PLC erişilemez!");}ins.ping(address, port, timeout)
Section titled “ins.ping(address, port, timeout)”Belirli bir porta TCP bağlantı testi yapar.
var portOpen = ins.ping("127.0.0.1", 8081, 3000);// → trueins.toJSONStr(object)
Section titled “ins.toJSONStr(object)”JavaScript nesnesini JSON string’e dönüştürür.
var obj = {temperature: 25.4, status: "ok"};var json = ins.toJSONStr(obj);// '{"temperature":25.4,"status":"ok"}'UI Fonksiyonları
Section titled “UI Fonksiyonları”Script’ler içinden kullanıcı arayüzü ile etkileşim:
// Konsol loguins.consoleLog("Debug: değer = " + value);
// Numpad açma (değer girişi)ins.numpad("setpoint_temperature");
// Tüm istemcileri yenileins.refreshAllClients();
// UI yeniden yükleins.reloadUi();
// Gece/gündüz moduins.setDayNightMode(true); // gece modu
// Ses çalmains.playAudio(true, "alarm.wav", false);
// Onay popup'ıins.confirm("warning", "Dikkat", "Pompa durdurulsun mu?", callbackObj);Dosya İşlemleri
Section titled “Dosya İşlemleri”ins.writeToFile(fileName, text, append)
Section titled “ins.writeToFile(fileName, text, append)”Sunucu dosya sistemine yazar.
ins.writeToFile("report.csv", "timestamp,temperature,pressure\n", false);ins.writeToFile("report.csv", ins.now() + ",25.4,3.2\n", true);ins.readFile(fileName)
Section titled “ins.readFile(fileName)”Sunucu dosya sisteminden okur.
var content = ins.readFile("config.json");var config = JSON.parse(content);