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 (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.
Basic data is written as key: value pairs:
name: "My Project" rotation_type: 1 enabled: true
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
List items start with - (hyphen + space):
pages:
- uuid: "page-001"
page_no: 1
title: Main
- uuid: "page-002"
page_no: 2
title: Settings
| 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. |
Lines starting with # are comments and ignored:
# This is a comment name: "My Project" # Inline comments are also supported
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.
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.
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: 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. |
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.
plc:
model: KV-8000
provider: KEYENCE
plc_channel:
config:
ip_or_hostname: "192.168.0.10"
port_no: 8501
plc:
model: iQ-R
provider: MITSUBISHI
plc_channel:
config:
ip_or_hostname: "192.168.0.10"
port_no: 5000
plc:
model: NJ
provider: OMRON
plc_channel:
config:
ip_or_hostname: "192.168.0.10"
port_no: 9600
self_node: 0
destination_node: 0
plc:
model: MODBUS
provider: MODBUS
plc_channel:
config:
ip_or_hostname: "192.168.0.10"
port_no: 502
unit_id: 1
| 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 |
| 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. |
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. |
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. |
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 |
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). |
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. |
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
| 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. |
| 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. |
| Property | Type | Description |
|---|---|---|
page_uuid |
String | UUID of page to navigate to when pressed. |
page_no |
Integer | Page number to navigate to. |
| Property | Type | Description |
|---|---|---|
style |
String | "irPanel", "Square", "Circle", "Touch", "Plane", "Toggle". Case is auto-corrected. |
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). |
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.).
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:
- 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
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.
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. |
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. |
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. |
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
The example above creates a 3x4 temperature monitoring grid:
rowOffset: 10, colOffset: 1
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. |
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. |
title — Item titlealternate_title — Alternate title (Button toggle state)unit — Unit text (ValueField, Meter)message_ — Message text (MessageItem)detail_message — Detail message text (MessageItem)title_ — Message set titleMessage 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. |
| 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. |
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.
| 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" |
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.
"{{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.
To use background images for the project, pages, or items:
images/ folder, named by UUID (e.g., abc-123.png).background_image object:
background_image: uuid: "abc-123" kind: page_background
| 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. |
Device names depend on the PLC provider. Here are common device names for each provider:
| 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 |
| 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 |
| Device | Type | Description |
|---|---|---|
D0, D100 |
Word | DM area |
CIO0, CIO100 |
Word | CIO area |
W0, W100 |
Word | Work area |
H0, H100 |
Word | Holding area |
| 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).
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"
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 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 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.
message_set_uuid on a Message item must match a UUID in the messageSets array.
key in localizedStrings follows the format "{item_uuid}.{field_name}".
Common fields: "title", "alternate_title", "unit".
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.