Пульт.Онлайн /

Скрипты

Возможности
Порядок выполнения
Синтаксис
Переменные Пульт.Онлайн
Подстановка параметров узла
Ручной ввод параметров для произвольных скриптов
Общие функции
Служебные функции
Расширенные функции времени
Функции для работы с файлами
Асинхронные функции
Функции для создания PDF-документов
Примеры


Возможности

Сервер и Шлюз Пульт.Онлайн предоставляют возможность выполнения JS-скриптов. С помощью скриптов можно изменять значения переменных по определенным условиям и/или вызывать внешние функции, например, для отправки сообщений. Скрипты могут быть созданы для узлов и для произвольного выполнения:

  • Скрипты для узлов

    • Создаются в прототипе узла
    • Запускаются по периоду, cron или по триггеру
    • Для каждого узла на данном прототипе выполняется свой экземпляр скрипта
  • Произвольные скрипты

    • Создаются в разделе проекта Файлы
    • Запускаются вручную, по периоду, cron или по триггеру
    • Выполняются в единственном экземпляре

Порядок выполнения

Скрипты в Пульт.Онлайн запускаются периодически, по триггеру или вручную (произвольные скрипты). Контекст скрипта (значения локальных переменных) не сохраняется между запусками. Полный цикл выглядит так:

  1. Запуск
  2. Инициализация переменных
  3. Выполнение сценария
  4. Применение изменений
  5. Остановка
Запуск

Инициатором запуска могут выступать следующие события:

  • Период: запуск скрипта осуществляется периодически, через равные промежутки времени.
  • Расписание Cron: запуск скрипта осуществляется периодически, по расписанию в формате Cron.
  • Триггер: запуск скрипта осуществляется только при изменении указанных в качестве триггера переменных.
  • Запуск оператором: запуск скрипта осуществляется оператором, нажатием кнопки в интерфейсе (Файлы/<Скрипт>, кнопка Выполнить)
Инициализация переменных

При запуске скрипта, ему передаются текущие значения используемых в нем переменных Пульт.Онлайн (актуальные значения переменных сервис "script" получает от ядра по подписке). Скрипт создает локальные копии данных переменных и манипулирует данными копиями в процессе выполнения.

Выполнение сценария

В процессе выполнения сценария результаты вычислений применяются только к локальным копиям переменных. Никакие изменения не применяются к переменным Пульт.Онлайн до завершения сценария.

Сценарий не должен содержать бесконечных циклов. Использование таких циклов приведет к аварийной остановке скрипта по таймауту.

Применение изменений

После завершения сценария значения всех измененных переменных отправляются в ядро системы, которое, в свою очередь, рассылает изменения соответствующим драйверам.

Обратите внимание: отправка значения ядру не гарантирует его применения драйвером (значение может не примениться из-за плохой связи с узлом или выходить за допустимые пределы). Таким образом, при следующей итерации скрипта значение соответствующей переменной останется прежним, каким оно было до первого выполнения. Такая же ситуация может возникнуть, если интервал между запусками скрипта выбран слишком коротким и ядро не успевает уведомить сервис о примененном изменении. Другими словами, период запуска скрипта должен быть заведомо выше таймаутов драйвера соответствующей переменной. Минимальный рекомендуемый период - 1000 мс.

Остановка

После отправки изменений ядру системы, контекст скрипта освобождается, значения всех локальных переменных, объявленных операторами let, var и const, удаляются. Для сохранения значений промежуточных вычислений между запусками используйте виртуальные переменные Пульт.Онлайн.


Синтаксис

Скриптовый движок основан на библиотеке QuickJS и поддерживает большинство возможностей Javascript стандарта ECMAScript 2020 (ES11), включая:

  • Promises и async/await
  • Proxy и Reflect
  • BigInt, Symbol
  • Map, Set и другие коллекции
  • Optional chaining и nullish coalescing

Ограничения:

  • Нет встроенной среды выполнения:
    • нет window
    • нет document,
    • нет API браузера
    • нет API Node.js (fs, process, и т.д.)

Дополнения:

  • Математические и логические функции
  • Функции для работы с файлами (load, save, load_json, save_json)
  • Специальные функции (navigate)
  • Асинхронные функции (server_api, fetch, setTimeout, clearTimeout)
  • Функции для генерации PDF-документов

Переменные Пульт.Онлайн

Основная задача скриптов - манипуляция переменными Пульт.Онлайн, т.е. переменными SCADA-системы.

Имена переменных должны предваряться символом $ и не требуют объявления с помощью оператора let.

Допустимо использование как локальных (в контексте узла) переменных, так и глобальных. Для доступа к переменным того же узла (локальные переменные) указывайте имя переменной, как оно указано в прототипе, например, $var1. Для доступа к переменным других узлов, указывайте имя с префиксом узла, например, $N25_var1. Для доступа к переменным других проектов указывайте имя с префиксом проекта и узла, например, $P3_N25_var1. Префикс можно узнать, кликнув на имени переменной в интерфейсе или в редакторе, в списке переменных узла.

Если статус одной из переменных содержит ошибку, обработка скрипта прекращается с записью об ошибке в логе сервиса "script".

Для переменных доступны суффиксы (через два подчеркивания):

__error - код ошибки переменной
__time - Timestamp (в миллисекундах) последнего изменения статуса переменной
__value - значение (позволяет всегда получать последнее достоверное значение переменной и игнорировать ошибку).

Например:

if($ping__error){
    $offline=1;
}else{
    $offline=0;
}

Подстановка параметров узла

В скрипт можно передать параметры узла, например:

telegram("+71234567890","Node param1 is %param1%");

В данном скрипте в процессе сборки будет выполнена подстановка значения парамера param1. Так же доступна подстановка префикса узла в виде %name%:

telegram("+71234567890","Node prefix is %name%");

Обратите внимание: подстановка выполняется только в процессе сборки и не работает при выполнении скрипта в отладчике, т.к. отладка выполняется в прототипе, где значения параметров еще не определены.


Ручной ввод параметров для произвольных скриптов

В произвольный скрипт можно передать заранее определенный набор параметров, значения которых пользователь может ввести перед выполнением скрипта.

Набор параметров задается на вкладке Параметры в окне редактирования скрипта.

Данный набор будет отображаться в интерфейсе оператора для ввода актуальных значений, а в коде скрипта доступ к значениям параметров выполняется через глобальный объект params.


Общие функции

В скриптах доступны все стандартные функции, используемые в выражениях и на мнемосхемах.


Служебные функции

  • exec(command,timeout) - выполняет команду командной строки command с таймаутом выполнения timeout
  • navigate(url) - открывает указанный url в новой вкладке, работает только при ручном выполнении произвольного скрипта (через кнопку Выполнить)
  • print(A,B,C,...) - вывод значений аргументов в консоль отладки скрипта (аналог console.log)
  • reboot() - перезагружает устройство
  • sms(number,msg) - выполняет отправку SMS-сообщения msg на номер number
  • str(X) - возвращает строковое представление числа X
  • telegram(number,msg) - выполняет отправку Telegram-сообщения msg на номер number

Расширенные функции времени

  • date(T) - строковое представление даты от таймштампа T (опциональный) в формате DD.MM.YYYY
  • datetime(T) - строковое представление даты-времени от таймштампа T (опциональный) в формате DD.MM.YYYY hh.mm.ss
  • time(T) - строковое представление времени от таймштампа T (опциональный) в формате hh.mm.ss
  • timerange(interval) - возвращает массив [time1,time2] с начальным и конечным таймштампом для заданного интервала. Параметр interval может принимать следующие значения:
    • today - от 00:00 текущего дня до 00:00 следующего
    • yesterday - от 00:00 вчерашнего дня до 00:00 текущего
    • last60 - последние 60 минут от текущего момента
    • last7 - последние 7 суток от текущего момента
    • last30 - последние 30 дней от текущего момента
    • last90 - последние 90 дней от текущего момента
    • last365 - последние 365 дней от текущего момента
    • thisweek - от начала текущей недели до начала следующей недели
    • lastweek - от начала предыдущей недели до начала текущей недели
    • thismonth - от начала текущего месяца до начала следующего месяца
    • lastmonth - от начала предыдущего месяца до начала следующего месяца
    • <timestamp1>-<timestamp2> - в time1 и time2 будут возвращены непосредственно timestamp1 и timestamp2

Функции для работы с файлами

Для всех функций в данном разделе директория по умолчанию - папка установки (обычно /pult_server или /pult_gateway).

  • load(path) - читает файл по указанному пути path и возвращает его строковое представление
  • save(path,str) - сохраняет строку str в файл, расположенный по указанному пути path (путь будет создан, если не существует)
  • load_json(path) - читает JSON-файл по указанному пути path и возвращает JSON-объект
  • save_json(path,obj) - сохраняет объект как JSON-файл по указанному пути path (путь будет создан, если не существует)

Асинхронные функции

fetch (url, options)
server_api (request, callback)
save_to_server(project, subpath, data, callback)
setTimeout (func, interval)
clearTimeout (timerId)

Асинхронные функции реализованы через неблокирующую модель выполнения. Вызов таких функций немедленно возвращает управление. Обработка завершённых асинхронных операций выполняется через очередь задач (job queue). Множество асинхронных функций могут выполняться параллельно.

  • Если асинхронная операция не успевает выполнится до истечения общего таймаута скрипта - выполнение скрипта будет прервано с ошибкой InternalError: interrupted.
  • Скрипт считается незавершенным, пока не завершились все его асинхронные функции.


  • fetch(url,options) - выполняет HTTP-запрос по указанному url и возвращает Promise с результатом. Работает аналогично стандартному fetch в браузерах или NodeJS. Параметры:
    • url - адрес запроса
    • options (опционально) параметры запроса:
      • method - HTTP-метод (по умолчанию GET)
      • headers - объект с HTTP-заголовками вида {key:value}
      • body - тело запроса (строка или объект)
      • timeout - таймаут в миллисекундах (по умолчанию 10000)
      • insecure - отключение проверки SSL-сертификата (true — не проверять)


  • server_api(request,callback) - выполняет API-запросы к серверу Пульт.Онлайн в формате JSONRPC2.0 с параметрами, указанными в request и вызывает callback по завершении всех запросов. Параметры:
    • request - объект или массив объектов с параметрами:

      • method - имя API-функции
      • params - параметры API-функции в виде объекта, массива или примитивного значения
    • callback - (опционально) функция обратного вызова, в первом аргументе которой содержится ответ или массив ответов на соответствующие запросы (в том же порядке). Ответ представляет собой объект в формате JSONRPC2.0-ответа с одним из следующих полей:

      • result - результат успешного выполнения API-функции (объект, массив или примитивное значение)
      • error - объект с кодом и описанием ошибки, содержащий следующие поля:
        • code - числовой код ошибки
        • message - текстовое сообщение об ошибке
        • data - (опционально) дополнительные сведения об ошибке в произвольном формате

      Список поддерживаемых API-функций сервера


  • save_to_server(project, subpath, data, callback) — сохраняет данные в текстовом виде на сервер в раздел Файлы.

    Параметры:

    • project — имя проекта, куда будет сохранён PDF

    • subpath — путь и имя файла в разделе Файлы, например: readme.md или some/path/to/readme.md. Если путь не существует - он будет создан автоматически.

    • data — сохраняемые данные

    • callback(опционально) функция обратного вызова, которая будет вызвана после завершения операции сохранения с объектом response в качестве единственного аргумента, в котором:

      • result - результат успешного выполнения
        • true - создан новый документ
        • false - документ сохранен в ранее созданный файл
      • error - объект с кодом ошибки, если операция не выполнена


  • setTimeout(func,interval) - выполняет функцию func один раз через заданный интервал времени interval (в миллисекундах)


  • clearTimeout(timerId) - отменяет выполнение функции, ранее запланированной с помощью setTimeout

Функции для создания PDF-документов

pdf_create (size, direction, font)
pdf_padding (size, direction, font)
pdf_font (pdf, font, size)
pdf_font_size (pdf, size)
pdf_text (pdf, text, x, y)
pdf_mtext (pdf, text, x, y, w, ls, alg)
pdf_line (pdf, x1, y1, x2, y2)
pdf_rect (pdf, x, y, w, h)
pdf_ellipse (pdf, x, y, w, h)
pdf_image (pdf, file, x, y, w, h)
pdf_table (pdf, table, cells)
pdf_bg_color (pdf, color)
pdf_text_color (pdf, color)
pdf_fill_color (pdf, color)
pdf_stroke_color (pdf, color)
pdf_stroke_width (pdf, sw)
pdf_get_affected(pdf)
pdf_reset_affected(pdf)
pdf_get_metrics(pdf)
pdf_add_page(pdf)
pdf_goto_page(pdf, number)
pdf_get_page_count(pdf)
pdf_paginate(pdf, options)
pdf_show(pdf)
pdf_save_to_server(pdf)
pdf_save_to_file(pdf)

  • Все функции, кроме pdf_create(), требуют в качестве первого аргумента контекст, созданный функцией pdf_create().
  • В качестве единиц измерения используются пункты (points, pt): 1 pt = 1/72 дюйма0.3528 мм.
  • Для всех файлов и папок каталог по умолчанию - папки установки, обычно /pult_server.


  • pdf_create(size, direction, font) - создает PDF-документ и возвращает контекст, необходимый другим PDF-функциям для работы с созданным документом.

    Параметры:

    • size - (опционально) размер страниц, строка: LETTER LEGAL | A3 | A4 | A5 | B4 | B5 | EXECUTIVE | US4x6 | US4x8 | US5x7 | COMM10. По умолчанию - A4.
    • direction - (опционально) ориентация страниц, строка: portrait | landscape. По умолчанию - portrait.
    • font - (опционально) шрифт документа (см pdf_font()).

    Возвращаемое значение:

    • контекст созданного документа


  • pdf_padding(pdf, left, right, top, bottom) — устанавливает внутренние отступы страницы PDF-документа. Отступы определяют рабочую область страницы, в пределах которой размещаются все элементы (текст, таблицы, изображения и т.д.).

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()
    • left(опционально) левый внутренний отступ страницы, pt
    • right(опционально) правый внутренний отступ страницы, pt
    • top(опционально) верхний внутренний отступ страницы, pt
    • bottom(опционально) нижний внутренний отступ страницы, pt

    Поведение:

    • Если параметр не указан, используется текущее значение соответствующего отступа страницы
    • Изменение отступов пересчитывает внутреннюю рабочую область страницы (inner_width, inner_height)

    Примечания:

    • Влияет на все последующие операции вывода (текст, таблицы, линии и т.д.)
    • Не изменяет уже размещённый контент
    • Используется для настройки “полей” страницы перед версткой документа


  • pdf_font(pdf,font,size) - включает указанный шрифт для всех последующих вызовов функций вывода текста.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()

    • font - имя предустановленного шрифта или путь к файлу шрифта (.ttf).
      Имена предустановленных шрифтов:

      • Шрифт типа Arial (Liberation Sans)
        • sans - обычное начертание
        • sans_bold - жирный
        • sans_italic - курсив
        • sans_bold_italic - жирный курсив
      • Шрифт типа Times New Roman (Liberation Serif)
        • serif - обычное начертание
        • serif_bold - жирный
        • serif_italic - курсив
        • serif_bold_italic - жирный курсив
      • Моноширинный шрифт (JetBrains Mono NL)
        • mono - обычное начертание
        • mono_bold - жирный
        • mono_italic - курсив
        • mono_bold_italic - жирный курсив

      Указанные шрифты размещены в папке services/script/pdf_fonts. Вы можете добавить в эту папку требуемый вам ttf-шрифт и в параметре font просто указывать его имя (без пути и расширения).

    • size - (опционально) размер шрифта, pt


  • pdf_font_size(pdf,size) - включает указанный размер шрифта для всех последующих вызовов функций вывода текста.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • size - размер шрифта, pt


  • pdf_text(pdf,text,x,y) - выводит однострочный текст по указанным координатам.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • text - выводимый текст
    • x - (опционально) отступ от левого поля страницы, pt.
    • y - (опционально) отступ от верхнего поля страницы, pt.


  • pdf_mtext(pdf,text,x,y,w,ls,alg) - выводит многострочный текст по указанным координатам.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • text - выводимый текст
    • x - (опционально) отступ от левого поля страницы, pt.
    • y - (опционально) отступ от верхнего поля страницы, pt.
    • w - (опционально) максимальная ширина текстового блока, pt.
    • ls - (опционально) высота строки, pt.
    • alg - (опционально) выравнивание, строка: left | center | right.


  • pdf_line(pdf,x1,y1,x2,y2) - выводит отрезок по указанным координатам.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • x1 - (опционально) отступ точки начала отрезка от левого поля страницы, pt.
    • y1 - (опционально) отступ точки начала отрезка от верхнего поля страницы, pt.
    • x2 - (опционально) отступ точки конца отрезка от левого поля страницы, pt.
    • y2 - (опционально) отступ точки конца отрезка от верхнего поля страницы, pt.


  • pdf_rect(pdf,x,y,w,h) - выводит прямоугольник по указанным координатам. Цвет заливки устанавливается функцией pdf_fill_color(), цвет границы - pdf_stroke_color().

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • x - (опционально) отступ от левого поля страницы, pt.
    • y - (опционально) отступ от верхнего поля страницы, pt.
    • w - (опционально) ширина прямоугольника, pt.
    • h - (опционально) высота прямоугольника, pt.
    • sw - (опционально) толщина границы, pt.


  • pdf_ellipse(pdf,x,y,w,h) - выводит овал или круг (при w==h) по указанным координатам для габаритного прямоугольника. Цвет заливки устанавливается функцией pdf_fill_color(), цвет границы - pdf_stroke_color().

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • x - (опционально) отступ от левого поля страницы, pt.
    • y - (опционально) отступ от верхнего поля страницы, pt.
    • w - (опционально) ширина прямоугольника, pt.
    • h - (опционально) высота прямоугольника, pt.
    • sw - (опционально) толщина границы, pt.


  • pdf_image(pdf,file,x,y,w,h) - выводит прямоугольник по указанным координатам.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • file - путь к файлу с изображением. Для доступа к файлам, загруженным в раздел Файлы проекта, используйте следующий путь: data/projects/<имя проекта>.project/files/<имя файла>
    • x - (опционально) отступ от левого поля страницы, pt.
    • y - (опционально) отступ от верхнего поля страницы, pt.
    • w - (опционально) ширина изображения, pt.
    • h - (опционально) высота изображения, pt.


  • pdf_table(pdf, table, cells) — выводит таблицу на страницу PDF. Позволяет гибко настраивать структуру, размеры, отступы, границы и стили как всей таблицы, так и отдельных ячеек.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()

    • table — объект с параметрами таблицы:

      • x — позиция по горизонтали (отступ от левого края), pt

      • y — позиция по вертикали (отступ от верхнего края), pt

      • width(опционально) ширина таблицы, pt (по умолчанию — ширина страницы)

      • cols(опционально) количество колонок

      • rows(опционально) количество строк
        Если cols и rows не заданы — таблица будет состоять из одной строки
        Если задан только один параметр — второй вычисляется автоматически

      • padding(опционально) внутренние отступы ячеек, pt (по умолчанию 5)

      • padding_top, padding_bottom, padding_left, padding_right(опционально) отступы по сторонам

      • border(опционально) толщина границ таблицы (по умолчанию 0.5)

      • outer_border, outer_border_top, outer_border_bottom, outer_border_left, outer_border_right(опционально) толщина внешних границ таблицы, pt

      • cell_border, cell_border_top, cell_border_bottom, cell_border_left, cell_border_right(опционально) толщина границ ячеек, pt

      • header_border(опционально) толщина границ заголовка (первая строка)

      • header_cell_border_top, header_cell_border_bottom, header_cell_border_left, header_cell_border_right(опционально) толщина границ ячеек заголовка

      • header_outer_border_top, header_outer_border_bottom, header_outer_border_left, header_outer_border_right(опционально) толщина внешних границ заголовка

      • font_size(опционально) размер шрифта таблицы

      • header_font_size(опционально) размер шрифта заголовка

      • bg_color, text_color, border_color(опционально) цвета таблицы

      • outer_border_color, cell_border_color(опционально) цвета границ

      • header_*(опционально) отдельные стили для заголовка:

        • header_bg_color
        • header_text_color
        • header_border_color
        • header_outer_border_color
        • header_cell_border_color
      • font(опционально) шрифт таблицы

      • header_font(опционально) шрифт заголовка

    • cells — массив ячеек таблицы. Каждый элемент может быть:

      • строкой (текст ячейки)

      • или объектом с параметрами:

        • text — текст ячейки
        • width, height(опционально) размеры ячейки
        • padding*(опционально) внутренние отступы
        • border*(опционально) границы
        • font_size(опционально) размер шрифта
        • line_spacing(опционально) межстрочный интервал
        • multiline(опционально) многострочный режим
        • halign(опционально) горизонтальное выравнивание: left | center | right
        • valign(опционально) вертикальное выравнивание: top | center | bottom
        • bg_color, text_color, border_color(опционально) цвета
        • font(опционально) шрифт

    Примечания:

    • Ячейки заполняются построчно (слева направо)
    • Если в тексте присутствует \n, автоматически включается многострочный режим
    • Первая строка таблицы считается заголовком, к ней применяются параметры header_*


  • pdf_bg_color(pdf,color) - устанавливает цвет фона для текущей страницы.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • color - цвет фона, в форматах: именованные CSS-цвета, hex-цвета, rgb-функция, hsl-функция (см. pdf_text_color())


  • pdf_text_color(pdf,color) - устанавливает цвет текста для всех последующих вызовов функций вывода текста.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • color - цвет текста, в форматах:
      • именованные CSS-цвета (black,white,red,green,blue,...)
      • hex-цвета (#000000,#FFF,#FF0000,#00FF00,#0000FF,...)
      • rgb-функция (rgb(0,0,0),rgb(255,255,255),rgb(255,0,0),rgb(0,255,0),rgb(0,0,255),...)
      • hsl-функция (hsl(0,0,0),hsl(0,0,100),hsl(0,100,50),hsl(120,100,50),hsl(240,100,50),...)


  • pdf_fill_color(pdf,color) - устанавливает цвет заливки для всех последующих вызовов функций, использующих заливку (например, pdf_rect()).

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • color - цвет текста, в форматах: именованные CSS-цвета, hex-цвета, rgb-функция, hsl-функция (см. pdf_text_color())


  • pdf_stroke_color(pdf,color) - устанавливает цвет линии для всех последующих вызовов функций отрисовки линий.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • color - цвет текста, в форматах: именованные CSS-цвета, hex-цвета, rgb-функция, hsl-функция (см. pdf_text_color())


  • pdf_stroke_width(pdf,sw) - устанавливает толщину линий для всех последующих вызовов функций отрисовки линий.

    Параметры:

    • pdf - контекст, созданный функцией pdf_create()
    • sw - толщина линии, pt.


  • pdf_get_affected(pdf) — возвращает область страницы, затронутую предыдущими операциями вывода (например, текстом, таблицами, фигурами). Может использоваться для позиционирования следующих элементов относительно уже выведенного содержимого.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()

    Возвращаемое значение:

    • объект с координатами затронутой области:

      • left — левая граница области, pt
      • right — правая граница области, pt
      • top — верхняя граница области, pt
      • bottom — нижняя граница области, pt

    Примечания:

    • Значения обновляются после каждого вызова функций, изменяющих содержимое страницы
    • Может использоваться для расчёта высоты добавленного блока или для выравнивания следующих элементов


  • pdf_reset_affected(pdf) — сбрасывает область страницы, затронутую предыдущими операциями вывода. После вызова функции значения границ возвращаются к нулю.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()

    Примечания:

    • Обнуляет значения, возвращаемые функцией pdf_get_affected()
    • Полезно перед началом нового блока вывода, если требуется заново отслеживать занимаемую область


  • pdf_get_metrics(pdf) — возвращает текущие метрики страницы PDF-документа, включая размеры, отступы, параметры текста и область, затронутую выводом.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()

    Возвращаемое значение:

    • объект со следующими параметрами:

      • outer_width — полная ширина страницы, pt
      • outer_height — полная высота страницы, pt
      • inner_width — рабочая ширина страницы (с учётом внутренних отступов), pt
      • inner_height — рабочая высота страницы (с учётом внутренних отступов), pt
      • padding_top — верхний внутренний отступ страницы, pt
      • padding_bottom — нижний внутренний отступ страницы, pt
      • padding_left — левый внутренний отступ страницы, pt
      • padding_right — правый внутренний отступ страницы, pt
      • line_height — текущая высота строки, pt
      • font_height — текущая высота шрифта, pt
      • affected_top — верхняя граница затронутой области, pt
      • affected_bottom — нижняя граница затронутой области, pt
      • affected_left — левая граница затронутой области, pt
      • affected_right — правая граница затронутой области, pt

    Примечания:

    • Значения inner_* учитывают отступы страницы (padding_*)
    • Параметры affected_* соответствуют данным, возвращаемым функцией pdf_get_affected()
    • Может использоваться для точного позиционирования элементов и расчёта доступного пространства


  • pdf_add_page(pdf) — добавляет новую страницу в PDF-документ и делает её текущей для последующих операций вывода.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()

    Примечания:

    • Новая страница наследует настройки документа (размер, ориентацию, шрифт и т.д.)
    • После вызова все последующие операции (текст, линии, таблицы и др.) будут применяться к новой странице


  • pdf_goto_page(pdf, number) — делает текущей указанную страницу. Функция может использоваться для прохода в цикле по созданным страницам, например, для печати колонтитулов.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()
    • number — номер страницы (1 - ...)

    Примечания:

    • Страница с указанным номером должна существовать
    • После перехода все функции вывода текста и графики будут выполнять печать на указанной странице.
    • получить общее количество созданных страниц можно функцией pdf_get_page_count()


  • pdf_get_page_count(pdf) — возвращает общее количество страниц, созданных на момент вызова функции.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()


  • pdf_paginate(pdf, options) — выполняет печать номеров страниц на всех* страницах, созданных на момент вызова функции.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()
    • options(опционально) объект с параметрами печати
      • format(опционально) форматирование вывода. Допускается использование однострочного и многострочного текста с возможностью подстановки следующих макросов:
        • {PAGE} - номер страницы, например: Стр. {PAGE}
        • {PAGES} - общее количество страниц, например: Стр. {PAGE} из {PAGES} По умолчанию - {PAGE} (печатается только номер страницы)
      • halign(опционально) позиционирование по горизонтали: left | center | right, по умолчанию выполняется печать номера по центру страницы
      • valign(опционально) позиционирование по вертикали: top | bottom, по умолчанию выполняется печать номера внизу страницы
      • skip_first(опционально) количество пропускаемых страниц (на указанном количестве первых страниц печать номеров не будет выполняться). По умолчанию - 0.
      • start_number(опционально) число, с которого будет начинаться нумерация страниц. По умолчанию - 1.
      • margin_x(опционально) отступ по горизонтали от края страницы. По умолчанию - ширина соответствующего поля (левого или правого).
      • margin_y(опционально) отступ по вертикали от края страницы. По умолчанию - расчетное значение, обеспечивающее печать номера по вертикальному центру соответствующего поля (верхнего или нижнего).
      • line_spacing(опционально) высота строки для многострочного текста. По умолчанию - 1.


  • pdf_show(pdf) — открывает созданный документ в браузере пользователя (работает только при вызове произвольного скрипта вручную - нажатием кнопки Выполнить).

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()

    Примечания:

    • При первом вызове функции документ будет открыт на новой вкладке.
    • При последующих вызовах документ будет открываться на вкладке, созданной при первом вызове.
    • Открытый документ может быть сохранен пользователем через стандартные функции браузера (Скачать, Сохранить как)


  • pdf_save_to_server(pdf, project, subpath, callback) — сохраняет PDF-документ на сервер в раздел Файлы.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()

    • project — имя проекта, куда будет сохранён PDF

    • subpath — путь и имя файла в разделе Файлы, например: report.pdf или some/path/to/report.pdf. Если путь не существует - он будет создан автоматически.

    • callback(опционально) функция обратного вызова, которая будет вызвана после завершения операции сохранения с объектом response в качестве единственного аргумента, в котором:

      • result - результат успешного выполнения
        • true - создан новый документ
        • false - документ сохранен в ранее созданный файл
      • error - объект с кодом ошибки, если операция не выполнена


  • pdf_save_to_file(pdf, path) — сохраняет PDF-документ в произвольный файл.

    Параметры:

    • pdf — контекст, созданный функцией pdf_create()
    • path — путь к файлу, в который будет сохранен документ.

Примеры

Отправка сообщения в Telegram по флагу:

if($flag_alarm===1){
    $flag_alarm=0;
    let message="Outdoor temperature is "+str($temperature)+" ℃";
    telegram("+71234567890",message);
}

Отправка SMS по флагу:

if($flag_alarm===1){
    $flag_alarm=0;
    let message="Outdoor temperature is "+str($temperature)+" ℃";
    sms("+71234567890",message);
}

Выполнение команды командной строки (запись значения var1 в пин 4 GPIO):

let command="gpio -g write 4 "+str($var1);
exec(command,100);

Перезагрузка устройства при отсутствии связи с узлом:

if($ping__error){
    reboot();
}

Листинг доступных параметров в произвольном скрипте:

print(params);
  Email
   fdb_list
   fdb_load
   fdb_move
   fdb_paths
   node_list
   subscribe
   user_list
   user_save
   var_get
   var_list
   var_set