Данный модуль предназначен для работы с монохромными экранами, которые поддерживает библиотека U8g2lib (https://github.com/olikraus/u8g2?ysclid=mb87vcoyac950218727) и автоматического вывода информации из конфигурации IoTM.



Код модуля содержит дополнительные решения, которые на данный момент не применяются, но готовы для расширения функционала. Необходимо рассматривать модуль как пример того, как может быть организован вывод данных из IoTM на графические экраны. Но при этом модуль полностью функциональный и достаточный для базовых потребностей вывода информации.
Концепция вывода данных
Единицей вывода информации является элемент конфигурации, который по-умолчанию имеет значение для вывода и идентификатор для подписи. Дополнительно любой элемент может быть расширен модификаторами: pref — префикс для вывода подписи слева от значения; suff — суффикс для вывода подписи справа от значения; pref_fnt, suff_fnt и value_fnt для установки персонального шрифта для префикса, суффикса и значения элемента; gliphs — для перечисления символов анимации связанного со значением элемента.
Элементы могут быть распределены по виртуальным страницам с указанием последовательности и порядка.
Если не указано распределение и заведен один элемент U8g2lib, то ВСЕ элементы конфигурации выводятся автоматически на экран.
В конфигурацию можно добавить несколько элементов U8g2lib и для каждого указать в поле id2show список идентификаторов через запятую для последовательного вывода в линию и # для перевода на следующую строку.
Добавление расширенных модификаторов
Пока это возможно сделать только через конфигурационный файл. Либо через сам контроллер с использованием редактора /edit или методом экспорта конфигурации, внесения изменения и загрузки обратно (это наиболее удобный и безопасный вариант).
В будущем предполагается появление функции добавления модификаторов непосредственно через конфигуратор.
Работа со шрифтами
Библиотека предлагает из коробки большой набор шрифтов, в том числе некоторые из них могут работать с кириллицей и символами.
Для удобства в модуле уже настроен ряд шрифтов для выбора из конфигуратора:
if (fontName.startsWith("c6x12"))
_obj->setFont(u8g2_font_6x12_t_cyrillic);
else if (fontName.startsWith("s6x12"))
_obj->setFont(u8g2_font_6x12_t_symbols);
else if (fontName.startsWith("c6x13"))
_obj->setFont(u8g2_font_6x13_t_cyrillic);
else if (fontName.startsWith("c7x13"))
_obj->setFont(u8g2_font_7x13_t_cyrillic);
else if (fontName.startsWith("s7x13"))
_obj->setFont(u8g2_font_7x13_t_symbols);
else if (fontName.startsWith("c8x13"))
_obj->setFont(u8g2_font_8x13_t_cyrillic);
else if (fontName.startsWith("s8x13"))
_obj->setFont(u8g2_font_8x13_t_symbols);
else if (fontName.startsWith("c9x15"))
_obj->setFont(u8g2_font_9x15_t_cyrillic);
else if (fontName.startsWith("s9x15"))
_obj->setFont(u8g2_font_9x15_t_symbols);
else if (fontName.startsWith("c10x20"))
_obj->setFont(u8g2_font_10x20_t_cyrillic);
else if (fontName.startsWith("unifont"))
_obj->setFont(u8g2_font_unifont_t_symbols);
else if (fontName.startsWith("siji"))
_obj->setFont(u8g2_font_siji_t_6x10);
else
_obj->setFont(u8g2_font_6x12_t_cyrillic);
Те которые начинаются на «c» поддерживают кириллицу, а те что с «s» содержат символы. Дополнительно добавлены unifont и siji для вывода дополнительных пиктограмм.
Пиктограммы выводятся по коду UTF-8 шрифтов. Их можно скопировать текстом из различных источников, например, тут https://en.wikipedia.org/wiki/List_of_emojis?ysclid=mb6mvsr9wa219357368 Но не все содержатся в шрифтах контроллера — необходимо экспериментировать.
Вариант вставки символов UTF-8 по коду
Откройте блокнот. Вставьте код в формате «eКОД», например e248 и нажмите на клавиатуре ALT+X. Блокнот конвертирует код слева от курсора в символ, который можно скопировать в конфигурацию дисплея или в поле значения выводимого элемента конфигурации.
Коды для шрифта siji:

Использование модификатора gliphs
Если для любого элемента конфигурации прикрепить модификатор gliphs и заполнить его символами, то на экране вместо значения (числа) будет выводиться символ с номером позиции из строки gliphs. Таким образом, можно визуализировать состояние кнопки, индикатора состояния или статуса. Рекомендуется использовать модификатор map для приведения значения элемента к количеству символов в gliphs.