YAML Project Format

irBoard projects can be created and edited using YAML text files. This format is designed to be human-readable and AI-friendly, enabling automated project generation.

Projects are imported via the Project Settings inspector in the editing screen, or from the toolbar on the project list screen. Select "Import from YAML" to import a folder containing a YAML project file, or select a project.yaml file directly.


YAML Basics

YAML (YAML Ain't Markup Language) is a text format for representing structured data. It uses indentation (spaces) to express hierarchy, making it easy to read and write without special tools.

Key-Value Pairs

Basic data is written as key: value pairs:

name: "My Project"
rotation_type: 1
enabled: true

Indentation = Nesting

Nested structures are expressed by indenting with spaces (2 spaces per level):

plc:
  provider: KEYENCE
  config:
    ip_or_hostname: "192.168.0.10"
    port_no: 8501

Lists (Arrays)

List items start with - (hyphen + space):

pages:
  - uuid: "page-001"
    page_no: 1
    title: Main
  - uuid: "page-002"
    page_no: 2
    title: Settings

Data Types

Type Example Notes
String "Hello" or Hello Quotes required if the value contains :, #, or special characters.
Integer 42 Written without quotes.
Float 3.14 Written without quotes.
Boolean true / false Written without quotes.

Comments

Lines starting with # are comments and ignored:

# This is a comment
name: "My Project"   # Inline comments are also supported

Folder Structure

A YAML project is a folder containing a project.yaml file and an optional images/ subfolder:

ProjectName/
  project.yaml       # Project configuration (required)
  images/             # Image files (optional)
    {uuid}.png        # Background images referenced by uuid

The project.yaml file contains all project settings, pages, items, and configurations. Images referenced in the project (background images for project, pages, or items) are stored as PNG files in the images/ folder, named by their UUID.


Minimal Example

Here is a minimal working project with one page containing a label and a button:

uuid: "00000000-0000-0000-0000-000000000001"
name: "My Project"
screen_size_string: "768x1024"
rotation_type: 1

plc:
  model: KV-8000
  provider: KEYENCE
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 8501

pages:
  - uuid: "00000000-0000-0000-0000-100000000001"
    page_no: 1
    title: Main
    items:
      - uuid: "00000000-0000-0000-0000-200000000001"
        class: Label
        frame_string: "{{50, 50}, {200, 40}}"
        title: Temperature
        text_color_name: "RGBA,0.0,0.0,0.0,1.0"
      - uuid: "00000000-0000-0000-0000-200000000002"
        class: Button
        frame_string: "{{50, 120}, {120, 50}}"
        title: Start
        switch_device_name: MR100
        switch_mode: momentary

Required fields: plc and pages are mandatory. Import will fail with an error if the plc section is missing. uuid and name are optional and will be auto-generated if omitted. Each page's uuid and page_no are also auto-filled if omitted. Each item's uuid and frame_string are optional (defaults will be applied). class is required, but lowercase or alternative names (e.g., gauge, slider, alarm, grid) are accepted.


Project Properties

Top-level properties that configure the overall project:

Property Type Description
uuid String Auto Unique identifier (UUID format). Auto-generated if omitted.
name String Auto Project name. Auto-generated if omitted.
plc Object Required PLC configuration. Import fails if omitted.
pages Array Required List of pages.
screen_size_string String Screen size as "WIDTHxHEIGHT" (e.g., "768x1024").
rotation_type Integer Screen rotation. 0=portrait, 1=landscape.
style String Project style. "default" or "dark".
background_color_name String Default background color. See Color Format section.
launch_page_no Integer Page number to show at startup.
page_scale_type Integer How pages scale on different screens. 0=center, 1=fit, 2=fill.
transition String Page transition animation style.
text_font_name String Default text font name.
text_font_size Float Default text font size.
number_font_name String Default font for numeric display.
number_font_size Float Default font size for numeric display.

Grid Configuration

grid:
  style: 1
  enabled: 1
  pixel: 10.0
Property Type Description
style Integer Grid style. 0=dots, 1=lines.
enabled Integer 1=grid visible, 0=hidden.
pixel Float Grid spacing in points.

PLC Configuration

The plc section configures the PLC connection. This section is required. Import will fail if it is omitted. For supported PLC providers and models, see the PLC Connection documentation.

KEYENCE Example

plc:
  model: KV-8000
  provider: KEYENCE
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 8501

Mitsubishi (MC Protocol) Example

plc:
  model: iQ-R
  provider: MITSUBISHI
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 5000

OMRON (FINS) Example

plc:
  model: NJ
  provider: OMRON
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 9600
      self_node: 0
      destination_node: 0

MODBUS/TCP Example

plc:
  model: MODBUS
  provider: MODBUS
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 502
      unit_id: 1

PLC Provider / Model / Channel Reference

Provider Models Default Port
KEYENCE KV-8000, KV-7500, KV-5500, KV-5000, KV-3000, KV-1000, KV-Nano 8501
MITSUBISHI iQ-R, iQ-F, Q, L, FX5, FX3 5000
OMRON NJ, NX, CJ2, CJ1, CP1, CP2 9600
YOKOGAWA FA-M3 12289
MODBUS MODBUS 502

Config Options

Property Type Description
monitor_interval Float Polling interval in seconds (default: 0.5).
button_default_delay Float Default button press delay in seconds.
slider_default_delay Float Default slider operation delay in seconds.
area_permission String Permission area device address.
use_area_permission Boolean Enable permission area.
area_to_plc_screen_no String Device address to send current screen number to PLC.
use_area_to_plc_screen_no Boolean Enable screen number notification to PLC.
area_to_plc_status String Device address to send irBoard status to PLC.
use_area_to_plc_status Boolean Enable status notification to PLC.
area_from_plc_screen_no String Device address to receive screen number from PLC.
use_area_from_plc_screen_no Boolean Enable screen number reception from PLC.
area_from_plc_status String Device address to receive status from PLC.
use_area_from_plc_status Boolean Enable status reception from PLC.

Page Properties

pages:
  - uuid: "page-uuid-1"
    page_no: 1
    title: Main
    background_color_name: "RGBA,0.95,0.95,0.95,1.0"
    items:
      - ...
Property Type Description
uuid String Auto Unique identifier. Auto-generated if omitted.
page_no Integer Auto Page number (1-based). Auto-filled if omitted.
title String Page title.
background_color_name String Page background color.
locked Integer 1=locked (not editable at runtime), 0=unlocked.
rotation_type Integer Page-specific rotation override.
background_image Object Background image reference ({uuid, kind}).
items Array List of page items.

Page Navigation (Swipe)

Pages can be linked for swipe navigation using UUID references:

Property Type Description
above_page_uuid String UUID of page when swiping up.
below_page_uuid String UUID of page when swiping down.
left_page_uuid String UUID of page when swiping left.
right_page_uuid String UUID of page when swiping right.

Item Types

Each item has a class field that determines its type:

class Description Key Properties
Label Text display title, text_color_name
Button Interactive button with lamp switch_device_name, switch_mode, lamp_device_name
Button (no switch) Status indicator lamp_device_name, lamp_color_name
ValueField Numeric/text display and input device_name, editable, decimal_place, unit
SteppedValueField Value with +/- buttons (Slider / Progress) device_name, step_value, min_value, max_value
Meter Analog gauge display device_name, min_value, max_value, figures
Message Message list display message_set_uuid
Matrix Table/grid layout matrix_rows, matrix_columns, matrix_device_offset
WebPage Embedded web browser url

Common Item Properties

All items share these common properties:

Property Type Description
uuid String Auto Unique identifier. Auto-generated if omitted.
class String Required Item type. See Item Types table. Lowercase and alternative names are accepted (e.g., gauge→Meter, alarm→Message, grid→Matrix, slider→Slider, progress_bar→Progress, value_field→ValueField, web_page→WebPage).
frame_string String Auto Position and size. Defaults to class-appropriate size if omitted. Format: "{{x, y}, {width, height}}" or "x, y, width, height"
title String Display text.
device_name String Primary PLC device address.
background_color_name String Background color.
line_color_name String Border color.
line_width Float Border width.
corner_radius Integer Corner rounding radius.
style String Visual style (varies by item type).
font_name String Font name override.
font_size Float Font size override.
alignment Integer Text alignment. 0=left, 1=center, 2=right.
padding Integer Internal padding.
locked_frame Integer 1=frame locked, 0=editable.
visible_device_name String Device that controls visibility.
visible_negative Integer 1=invert visibility condition.
alternate_title String Alternate title (for toggle state).

Label

Displays static or device-driven text.

- uuid: "label-uuid"
  class: Label
  frame_string: "{{50, 50}, {200, 40}}"
  title: Temperature
  text_color_name: "RGBA,0.0,0.0,0.0,1.0"
  background_color_name: "RGBA,0.9,0.9,0.9,1.0"
  alignment: 1
  font_size: 18.0
Property Type Description
text_color_name String Text color.
alternate_text_color_name String Text color in alternate state.
label_device_name String Device controlling label state (ON/OFF appearance).
label_negative Integer 1=invert label device condition.

Button

Interactive button that can toggle PLC devices and display lamp states. If no switch device is specified, it behaves as a lamp indicator.

- uuid: "button-uuid"
  class: Button
  frame_string: "{{50, 100}, {120, 50}}"
  title: Start
  alternate_title: Stop
  switch_device_name: MR100
  switch_mode: momentary
  lamp_device_name: MR100
  lamp_color_name: "RGBA,0.0,0.8,0.0,1.0"
  style: irPanel

Switch Properties

Property Type Description
switch_device_name String Bit device to toggle when pressed.
switch_mode String "momentary" (ON while pressed) or "alternate" (toggle ON/OFF).
switch_negative Integer 1=invert switch output.
delay_time Double Delay before sending command (seconds).
interlock_device_name String Device that must be ON to enable button.
interlock_negative Integer 1=invert interlock condition.

Lamp Properties

Property Type Description
lamp_device_name String Bit device to monitor for lamp state.
lamp_color_name String Color when lamp is ON.
alternate_lamp_color_name String Color when lamp is OFF.
lamp_negative Integer 1=invert lamp condition.

Page Navigation

Property Type Description
page_uuid String UUID of page to navigate to when pressed.
page_no Integer Page number to navigate to.

Button Style

Property Type Description
style String "irPanel", "Square", "Circle", "Touch", "Plane", "Toggle". Case is auto-corrected.

Value Field

Displays and optionally edits numeric or text values from PLC devices.

- uuid: "value-uuid"
  class: ValueField
  frame_string: "{{300, 100}, {150, 40}}"
  title: Temperature
  device_name: DM100
  editable: 0
  decimal_place: 1
  unit: "\u00B0C"
  number_type: 2
  min_value: 0.0
  max_value: 999.0
  text_color_name: "RGBA,0.0,0.0,0.0,1.0"
  field_background_color_name: "RGBA,1.0,1.0,1.0,1.0"
Property Type Description
device_name String Word device to read/write value.
editable Integer 0=read-only, 1=editable at runtime.
number_type Integer 0=unsigned 16-bit, 1=signed 16-bit, 2=unsigned 32-bit, 3=signed 32-bit, 4=float, 5=double, 6=BCD, 10=string.
decimal_place Integer Number of decimal places to display.
unit String Unit suffix (e.g., "\u00B0C", "kg", "%").
coefficient Float Scaling multiplier (displayed = raw * coefficient + offset).
offset Float Value offset.
min_value Double Minimum allowed value.
max_value Double Maximum allowed value.
field_background_color_name String Input field background color.
text_color_name String Text color for displayed value.
unit_color_name String Color for unit text.
border_style Integer 0=none, 1=line, 2=bezel, 3=rounded.
encoding Integer Text encoding for string type. 1=UTF-8.
text_length Integer Max text length for string type.
secret Boolean true=hide input (password field).

Stepped Value Field (Slider / Progress)

A value field with increment/decrement buttons, or displayed as a slider or progress bar.

- uuid: "slider-uuid"
  class: SteppedValueField
  frame_string: "{{50, 200}, {300, 40}}"
  title: Speed
  device_name: DM200
  step_value: 1.0
  min_value: 0.0
  max_value: 100.0
  style: slider
Property Type Description
step_value Double Increment/decrement amount per step.
style String "default" (buttons), "slider", "progress".
vertical Boolean true=vertical orientation.
continuous Boolean true=continuously change while button held.

Inherits all Value Field properties (device_name, min_value, max_value, number_type, etc.).


Meter

Analog gauge display that reads a PLC device value.

- uuid: "meter-uuid"
  class: Meter
  frame_string: "{{50, 300}, {200, 200}}"
  title: Pressure
  device_name: DM300
  min_value: 0.0
  max_value: 100.0
  figures: 5
  major: 20
  minor: 10
  unit: MPa
  decimal_place: 1
Property Type Description
min_value Double Minimum scale value.
max_value Double Maximum scale value.
figures Integer Number of scale labels.
major Integer Major tick interval.
minor Integer Minor tick interval.
meter_zones Array Color zones on the meter.

Meter Zones

meter_zones:
  - color_name: "RGBA,0.0,0.8,0.0,1.0"
    from_value: 0.0
    to_value: 60.0
  - color_name: "RGBA,1.0,0.8,0.0,1.0"
    from_value: 60.0
    to_value: 80.0
  - color_name: "RGBA,1.0,0.0,0.0,1.0"
    from_value: 80.0
    to_value: 100.0

Lamp (Status Indicator)

A standalone status indicator. Uses the same class as Button (Button) but without a switch device, acting as a lamp indicator.

- uuid: "lamp-uuid"
  class: Button
  frame_string: "{{300, 50}, {60, 60}}"
  title: Running
  lamp_device_name: MR200
  lamp_color_name: "RGBA,0.0,0.8,0.0,1.0"
  alternate_lamp_color_name: "RGBA,0.5,0.5,0.5,1.0"
  style: Circle

Uses the same lamp properties as Button (lamp_device_name, lamp_color_name, lamp_negative, etc.). Omit switch_device_name to make it a lamp indicator.


Message

Displays a list of messages from a message set. Messages are activated based on PLC device values.

- uuid: "message-uuid"
  class: Message
  frame_string: "{{50, 400}, {400, 200}}"
  message_set_uuid: "msgset-uuid-1"
  active_color_name: "RGBA,1.0,0.0,0.0,1.0"
  inactive_color_name: "RGBA,0.9,0.9,0.9,1.0"
  active_only: true
Property Type Description
message_set_uuid String UUID of the message set to display.
active_color_name String Background color for active messages.
inactive_color_name String Background color for inactive messages.
active_text_color_name String Text color for active messages.
inactive_text_color_name String Text color for inactive messages.
active_only Boolean true=show only active messages.
row_height Integer Height of each message row.
show_detail Boolean true=show detail text.
show_title Boolean true=show message set title header.

Matrix

A table/grid layout that repeats a template item across rows and columns with device address offsets. For full matrix documentation, see Matrix .

- uuid: "matrix-uuid"
  class: Matrix
  frame_string: "{{50, 50}, {600, 400}}"
  matrix_rows: 5
  matrix_columns: 3
  matrix_device_offset: 10
  matrix_add_borders: true
  matrix_border_color_name: "RGBA,0.7,0.7,0.7,1.0"
  matrix_has_column_header: true
  matrix_has_row_header: true
Property Type Description
matrix_rows Integer Number of data rows.
matrix_columns Integer Number of data columns.
matrix_device_offset Integer Device address increment between rows.
matrix_add_borders Boolean true=add borders around cells.
matrix_border_color_name String Border color.
matrix_border_width Float Border width.
matrix_has_column_header Boolean true=include column headers.
matrix_has_row_header Boolean true=include row headers.
matrix_cell_bg_color_name String Default cell background color.
matrix_alt_bg_color_name String Alternating row background color.
matrix_column_header_bg_color_name String Column header background color.
matrix_row_header_bg_color_name String Row header background color.

Matrix Template

Matrices can define a cell template that is automatically expanded across all rows and columns on import. The template defines what items appear in each cell, and device offset rules control how device addresses increment across the grid.

The template is defined using matrix_template_json. You can write it directly as a YAML array of item definitions (a JSON string is also accepted). Coordinates are relative to the cell origin (0, 0). When a matrix has a template but has not been expanded yet, it is automatically expanded during YAML import.

- uuid: "matrix-uuid"
  class: Matrix
  frame_string: "{{50, 50}, {600, 300}}"
  matrix_rows: 3
  matrix_columns: 4
  matrix_add_borders: true
  matrix_border_color_name: "RGBA,0.7,0.7,0.7,1.0"
  matrix_template_cell_width: 140.0
  matrix_template_cell_height: 60.0
  matrix_template_json:
    - class: Label
      uuid: "tpl-001"
      frame_string: "{{2, 2}, {60, 26}}"
      title: CH1
      font_size: 12.0
      text_color_name: "RGBA,0.3,0.3,0.3,1.0"
    - class: ValueField
      uuid: "tpl-002"
      frame_string: "{{2, 30}, {136, 28}}"
      device_name: DM100
      number_type: 2
      decimal_place: 1
      unit: "\u00B0C"
      text_color_name: "RGBA,0.0,0.0,0.0,1.0"
      field_background_color_name: "RGBA,1.0,1.0,1.0,1.0"
      border_style: 3
  matrix_device_offset_rules:
    - id: "rule-1"
      itemUUID: "*"
      property: device_name
      rowOffset: 10
      colOffset: 1
Property Type Description
matrix_template_json Array Array of item definitions for one cell. Uses the same properties as regular page items.
matrix_template_cell_width Float Reference cell width for template items.
matrix_template_cell_height Float Reference cell height for template items.

Device Offset Rules

matrix_device_offset_rules is an array of rules that control how device addresses change across rows and columns.

Property Type Description
id String Unique rule identifier.
itemUUID String Template item UUID to apply the rule to. "*" applies to all items.
property String Device property name. "*" applies to all device properties. Options: device_name, switch_device_name, lamp_device_name, visible_device_name, etc.
rowOffset Integer Device address increment per row.
colOffset Integer Device address increment per column.

The device address for each cell is calculated as:
offset = row * rowOffset + col * colOffset

Template Example Explained

The example above creates a 3x4 temperature monitoring grid:

  • Each cell contains a label ("CH1") and a value field reading from DM100
  • The title text auto-increments: CH1, CH2, CH3, ...
  • Device offset rule: rowOffset: 10, colOffset: 1
    Cell (0,0) reads DM100, cell (0,1) reads DM101, cell (1,0) reads DM110, etc.

Web Page

Embeds a web browser view within the page.

- uuid: "web-uuid"
  class: WebPage
  frame_string: "{{50, 50}, {600, 400}}"
  url: "https://example.com"
Property Type Description
url String URL to load.
user_agent String Custom user agent string.

Localized Strings

Translations for item text are defined at the project level in the localizedStrings array. Each entry maps an item UUID and field key to a translated string for a specific locale.

localizedStrings:
  - localeIdentifier: ja
    key: "item-uuid-1.title"
    text: "\u30B9\u30BF\u30FC\u30C8"
  - localeIdentifier: ja
    key: "item-uuid-1.alternate_title"
    text: "\u30B9\u30C8\u30C3\u30D7"
  - localeIdentifier: fr
    key: "item-uuid-1.title"
    text: "D\u00E9marrer"
Property Type Description
localeIdentifier String Locale code (e.g., "ja", "en", "fr", "de", "zh-Hans").
key String Format: "{item_uuid}.{field_name}" (e.g., "xxx.title", "xxx.unit").
text String Translated text.

Localizable Fields

  • title — Item title
  • alternate_title — Alternate title (Button toggle state)
  • unit — Unit text (ValueField, Meter)
  • message_ — Message text (MessageItem)
  • detail_message — Detail message text (MessageItem)
  • title_ — Message set title

Message Sets

Message sets define groups of messages that can be displayed by Message items. Each message is triggered by a PLC device value.

messageSets:
  - uuid: "msgset-uuid-1"
    no: 1
    title_: Alarms
    order_style: 0
    messageItems:
      - device_name: DM500
        value: 1.0
        number_type: 0
        message_: "Motor overload"
        detail_message: "Motor overload detected. Check motor wiring."
        disabled: false
        order_style: 0
      - device_name: DM500
        value: 2.0
        number_type: 0
        message_: "Temperature high"
        detail_message: "Temperature exceeds the limit."
        disabled: false
        order_style: 1
Property Type Description
uuid String Unique identifier.
no Integer Message set number.
title_ String Message set title (trailing underscore is required).
order_style Integer Sort order.
messageItems Array List of message items.

Message Item Properties

Property Type Description
device_name String Device that triggers this message.
value Double Value that triggers the message.
number_type Integer Data type (same as ValueField).
message_ String Message text (trailing underscore is required).
detail_message String Detailed message text.
disabled Boolean true=message is disabled.

Color Format

Colors are specified as strings in RGBA format:

"RGBA,R,G,B,A"

Where R, G, B, A are floating-point values from 0.0 to 1.0.

Examples

Color Value
Black "RGBA,0.0,0.0,0.0,1.0"
White "RGBA,1.0,1.0,1.0,1.0"
Red "RGBA,1.0,0.0,0.0,1.0"
Green "RGBA,0.0,0.8,0.0,1.0"
Blue "RGBA,0.0,0.0,1.0,1.0"
Yellow "RGBA,1.0,1.0,0.0,1.0"
Gray "RGBA,0.5,0.5,0.5,1.0"
Light Gray "RGBA,0.9,0.9,0.9,1.0"
Transparent "RGBA,0.0,0.0,0.0,0.0"

Frame Format

Item positions and sizes use CGRect string format:

"{{x, y}, {width, height}}"

Values are in points. The origin (0, 0) is the top-left corner of the page. The coordinate system matches the screen_size_string dimensions.

Examples

"{{0, 0}, {768, 1024}}"      # Full page (portrait)
"{{50, 50}, {200, 40}}"       # Small item at top-left area
"{{384, 512}, {100, 50}}"     # Centered item (approximate)

For a landscape project with screen_size_string: "768x1024" and rotation_type: 1, the coordinate space is 1024 points wide and 768 points tall.


Background Images

To use background images for the project, pages, or items:

  1. Place PNG image files in the images/ folder, named by UUID (e.g., abc-123.png).
  2. Reference the image in the YAML using a background_image object:
background_image:
  uuid: "abc-123"
  kind: page_background

Image Kinds

Kind Description
page_default_background Default background for all pages.
page_background Background for a specific page.
lamp_background Background image for lamp/button states.
page_item_background Background image for a page item.

PLC Device Names

Device names depend on the PLC provider. Here are common device names for each provider:

KEYENCE (KV Series)

Device Type Description
DM0, DM100 Word Data memory
MR0, MR100 Bit Internal relay
R0, R100 Bit Relay
FM0, FM100 Word File memory
CM0, CM100 Word Counter
T0, T100 Word Timer

Mitsubishi (MC Protocol)

Device Type Description
D0, D100 Word Data register
M0, M100 Bit Internal relay
Y0, Y10 Bit Output (hex addresses)
X0, X10 Bit Input (hex addresses)
W0, W100 Word Link register (hex addresses)
R0, R100 Word File register

OMRON (FINS)

Device Type Description
D0, D100 Word DM area
CIO0, CIO100 Word CIO area
W0, W100 Word Work area
H0, H100 Word Holding area

MODBUS/TCP

Device Type Description
HR0, HR100 Word Holding register (40001+)
CO0, CO100 Bit Coil (00001+)
IR0, IR100 Word Input register (30001+)
DI0, DI100 Bit Discrete input (10001+)

Note: Bit devices (like MR, M, CO) are used for switch_device_name, lamp_device_name, and visible_device_name. Word devices (like DM, D, HR) are used for device_name (value reading/writing).


Complete Example

A complete project with KEYENCE KV-8000 PLC, two pages, various items, a message set, and Japanese localization:

uuid: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
name: "Factory Monitor"
screen_size_string: "768x1024"
rotation_type: 1
style: default
background_color_name: "RGBA,0.95,0.95,0.95,1.0"

grid:
  style: 1
  enabled: 1
  pixel: 10.0

plc:
  model: KV-8000
  provider: KEYENCE
  plc_channel:
    config:
      ip_or_hostname: "192.168.0.10"
      port_no: 8501

pages:
  - uuid: "page-0001"
    page_no: 1
    title: Main
    right_page_uuid: "page-0002"
    items:
      - uuid: "item-0001"
        class: Label
        frame_string: "{{20, 20}, {300, 40}}"
        title: Factory Monitor
        text_color_name: "RGBA,0.0,0.0,0.0,1.0"
        font_size: 24.0
        alignment: 0
      - uuid: "item-0002"
        class: Button
        frame_string: "{{20, 80}, {150, 60}}"
        title: Start
        alternate_title: Stop
        switch_device_name: MR100
        switch_mode: alternate
        lamp_device_name: MR100
        lamp_color_name: "RGBA,0.0,0.8,0.0,1.0"
        style: irPanel
      - uuid: "item-0003"
        class: Button
        frame_string: "{{200, 80}, {60, 60}}"
        title: Run
        lamp_device_name: MR200
        lamp_color_name: "RGBA,0.0,0.8,0.0,1.0"
        alternate_lamp_color_name: "RGBA,0.5,0.5,0.5,1.0"
        style: Circle
      - uuid: "item-0004"
        class: Label
        frame_string: "{{20, 170}, {120, 30}}"
        title: Temperature
        text_color_name: "RGBA,0.3,0.3,0.3,1.0"
      - uuid: "item-0005"
        class: ValueField
        frame_string: "{{150, 160}, {150, 50}}"
        device_name: DM100
        number_type: 2
        decimal_place: 1
        unit: "\u00B0C"
        min_value: 0.0
        max_value: 999.0
        text_color_name: "RGBA,0.0,0.0,0.0,1.0"
        field_background_color_name: "RGBA,1.0,1.0,1.0,1.0"
        border_style: 3
      - uuid: "item-0006"
        class: Meter
        frame_string: "{{20, 230}, {280, 280}}"
        title: Pressure
        device_name: DM200
        number_type: 2
        min_value: 0.0
        max_value: 100.0
        figures: 6
        major: 20
        minor: 10
        unit: MPa
        decimal_place: 1
        meter_zones:
          - color_name: "RGBA,0.0,0.8,0.0,1.0"
            from_value: 0.0
            to_value: 60.0
          - color_name: "RGBA,1.0,0.8,0.0,1.0"
            from_value: 60.0
            to_value: 80.0
          - color_name: "RGBA,1.0,0.0,0.0,1.0"
            from_value: 80.0
            to_value: 100.0
      - uuid: "item-0007"
        class: SteppedValueField
        frame_string: "{{350, 160}, {300, 50}}"
        title: Speed
        device_name: DM300
        step_value: 5.0
        min_value: 0.0
        max_value: 100.0
        number_type: 2
        unit: "%"
        style: slider
      - uuid: "item-0008"
        class: Button
        frame_string: "{{850, 20}, {120, 40}}"
        title: "Alarms >>"
        page_uuid: "page-0002"

  - uuid: "page-0002"
    page_no: 2
    title: Alarms
    left_page_uuid: "page-0001"
    items:
      - uuid: "item-0009"
        class: Label
        frame_string: "{{20, 20}, {200, 40}}"
        title: Alarm List
        text_color_name: "RGBA,0.0,0.0,0.0,1.0"
        font_size: 24.0
      - uuid: "item-0010"
        class: Message
        frame_string: "{{20, 80}, {600, 400}}"
        message_set_uuid: "msgset-0001"
        active_color_name: "RGBA,1.0,0.9,0.9,1.0"
        inactive_color_name: "RGBA,0.95,0.95,0.95,1.0"
        active_text_color_name: "RGBA,0.8,0.0,0.0,1.0"
        inactive_text_color_name: "RGBA,0.3,0.3,0.3,1.0"
        show_detail: true
        show_title: true
      - uuid: "item-0011"
        class: Button
        frame_string: "{{850, 20}, {120, 40}}"
        title: "<< Main"
        page_uuid: "page-0001"

messageSets:
  - uuid: "msgset-0001"
    no: 1
    title_: Alarms
    order_style: 0
    messageItems:
      - device_name: DM500
        value: 1.0
        number_type: 0
        message_: "Motor overload"
        detail_message: "Motor overload detected. Check wiring."
        disabled: false
        order_style: 0
      - device_name: DM500
        value: 2.0
        number_type: 0
        message_: "Temperature high"
        detail_message: "Temperature exceeds limit."
        disabled: false
        order_style: 1
      - device_name: DM500
        value: 3.0
        number_type: 0
        message_: "Emergency stop"
        detail_message: "Emergency stop activated."
        disabled: false
        order_style: 2

localizedStrings:
  - localeIdentifier: ja
    key: "item-0001.title"
    text: "\u5DE5\u5834\u30E2\u30CB\u30BF\u30FC"
  - localeIdentifier: ja
    key: "item-0002.title"
    text: "\u30B9\u30BF\u30FC\u30C8"
  - localeIdentifier: ja
    key: "item-0002.alternate_title"
    text: "\u30B9\u30C8\u30C3\u30D7"
  - localeIdentifier: ja
    key: "item-0003.title"
    text: "\u904B\u8EE2\u4E2D"
  - localeIdentifier: ja
    key: "item-0004.title"
    text: "\u6E29\u5EA6"
  - localeIdentifier: ja
    key: "item-0006.title"
    text: "\u5727\u529B"
  - localeIdentifier: ja
    key: "item-0007.title"
    text: "\u901F\u5EA6"
  - localeIdentifier: ja
    key: "item-0009.title"
    text: "\u30A2\u30E9\u30FC\u30E0\u4E00\u89A7"

Tips for AI Project Generation

  • Auto-completion: The uuid for projects, pages, and items is optional and will be auto-generated on import. name, page_no, and frame_string are also auto-filled with defaults when omitted.
  • PLC Configuration is Required: The plc section must always be specified. Import will fail with an error if it is omitted. Specifying provider and model is sufficient; internal PLC class_name values are auto-resolved.
  • Class Name Alternatives: The class field is case-insensitive. The following alternative names are also accepted: gauge→Meter, alarm→Message, grid→Matrix, slider→Slider, progress_bar→Progress, value_field→ValueField, web_page→WebPage.
  • Alternative frame_string Format: In addition to "{{x, y}, {width, height}}", the format "x, y, width, height" is also accepted.
  • Coordinate System: For landscape projects (rotation_type: 1) with screen_size_string "768x1024", the usable area is 1024 wide x 768 tall. Avoid placing items beyond these bounds.
  • Device Name Consistency: Ensure device names match the PLC provider's syntax. Use bit devices for switches/lamps and word devices for values.
  • Minimum Spacing: Leave at least 5-10 points between items for readability.
  • Font Sizes: Recommended sizes: titles 18-24pt, labels 14-16pt, values 16-20pt.
  • Message Sets: The message_set_uuid on a Message item must match a UUID in the messageSets array.
  • Localization: The key in localizedStrings follows the format "{item_uuid}.{field_name}". Common fields: "title", "alternate_title", "unit".
  • Import Behavior: When importing, if a project with the same UUID already exists, it will be overwritten. To create a new copy, change the UUID.
  • Lite Edition Limits: In irBoard Lite, imported projects are truncated to a maximum of 2 pages and 10 items per page. Pages and items beyond these limits are silently removed during import. A notification is shown after import if truncation occurred.

Demo Video

A demo of importing a YAML project into irBoard. This video shows how to generate a YAML file using AI and import it into irBoard to build screens.