mirror of
https://github.com/esphome/esphome.git
synced 2026-06-24 13:27:14 +00:00
125 lines
2.8 KiB
YAML
125 lines
2.8 KiB
YAML
esphome:
|
|
name: uart-mock-modbus-server-test
|
|
|
|
host:
|
|
api:
|
|
logger:
|
|
level: VERBOSE
|
|
|
|
external_components:
|
|
- source:
|
|
type: local
|
|
path: EXTERNAL_COMPONENT_PATH
|
|
|
|
# Dummy uart entry to satisfy modbus's DEPENDENCIES = ["uart"]
|
|
# The actual UART bus used is the uart_mock component below
|
|
uart:
|
|
baud_rate: 115200
|
|
port: /dev/null
|
|
|
|
uart_mock:
|
|
- id: virtual_uart_dev
|
|
baud_rate: 9600
|
|
rx_full_threshold: 120
|
|
rx_timeout: 2
|
|
auto_start: false
|
|
debug:
|
|
injections:
|
|
- delay: 100ms
|
|
inject_rx: [0x01, 0x03, 0x00, 0x03, 0x00, 0x01, 0x74, 0x0A] # Read holding register 3 on device 1 (basic_read)
|
|
- delay: 100ms
|
|
# Read holding register 7 on device 2
|
|
# Reply from device 2
|
|
# Read holding register 5 on device 1 (read_after_peer_response)
|
|
inject_rx:
|
|
[
|
|
0x02,
|
|
0x03,
|
|
0x00,
|
|
0x07,
|
|
0x00,
|
|
0x01,
|
|
0x35,
|
|
0xF8,
|
|
0x02,
|
|
0x03,
|
|
0x02,
|
|
0x00,
|
|
0xF0,
|
|
0xFC,
|
|
0x00,
|
|
0x01,
|
|
0x03,
|
|
0x00,
|
|
0x05,
|
|
0x00,
|
|
0x01,
|
|
0x94,
|
|
0x0B,
|
|
]
|
|
- delay: 100ms
|
|
inject_rx: [0x02, 0x03, 0x00, 0x07, 0x00, 0x01, 0x35, 0xF8] # Read holding register 7 on device 2, with no response
|
|
- delay: 100ms
|
|
# Read holding register 7 on device 2, with no response
|
|
# Read holding register A on device 1 (read_after_peer_timeout)
|
|
inject_rx:
|
|
[
|
|
0x02,
|
|
0x03,
|
|
0x00,
|
|
0x07,
|
|
0x00,
|
|
0x01,
|
|
0x35,
|
|
0xF8,
|
|
0x01,
|
|
0x03,
|
|
0x00,
|
|
0x0A,
|
|
0x00,
|
|
0x01,
|
|
0xA4,
|
|
0x08,
|
|
]
|
|
|
|
modbus:
|
|
uart_id: virtual_uart_dev
|
|
role: server
|
|
|
|
modbus_server:
|
|
- address: 1
|
|
registers:
|
|
- address: 0x03
|
|
value_type: U_WORD
|
|
read_lambda: |-
|
|
id(basic_read).publish_state(1);
|
|
return 1;
|
|
- address: 0x05
|
|
value_type: U_WORD
|
|
read_lambda: |-
|
|
id(read_after_peer_response).publish_state(1);
|
|
return 1;
|
|
- address: 0x0A
|
|
value_type: U_WORD
|
|
read_lambda: |-
|
|
id(read_after_peer_timeout).publish_state(1);
|
|
return 1;
|
|
|
|
sensor:
|
|
- platform: template
|
|
name: "basic_read"
|
|
id: basic_read
|
|
- platform: template
|
|
name: "read_after_peer_response"
|
|
id: read_after_peer_response
|
|
- platform: template
|
|
name: "read_after_peer_timeout"
|
|
id: read_after_peer_timeout
|
|
|
|
button:
|
|
- platform: template
|
|
name: "Start Scenario"
|
|
id: start_scenario_btn
|
|
on_press:
|
|
- lambda: "id(virtual_uart_dev).start_scenario();"
|