Na samym wstępie chciałem powitać wszystkich, jestem od niedawna tutaj nowym użytkownikiem.
Hardware:
ESP32-S3 16 flash + CC1101 + modbus VCX DTS-1946.
Software:
Środowisko programistyczne to: Homeassistant 2026.2.3 ESPHome 2026.2.4
Projekt to odczyt z liczników wody, energii elektrycznej, później energii cieplnej z kilku mieszkań jednego domu.
Program jako tako działa, odczyty z wodomierzy działają. Z Liczników energii też.
Natomiast zacząłem poprawiać kod i chcę zastosować odczyt liczników energii jako pakiet z dodatkowego pliku vcx_meter.yaml. Niestety nie mogę sobie z tym poradzić. Kombinuję już z wszystkimi AI. Ale dalej jestem w tym samym miejscu. Może ktoś doradzi co robię źle, lub podpowie w którym miejscu jest błąd.
Validacja pliku testboard:
INFO ESPHome 2026.2.4
INFO Reading configuration /config/esphome/testboard.yaml...
Failed config
extra keys not allowed
required key not provided
Validacja pliku vcx:
INFO ESPHome 2026.2.4
INFO Reading configuration /config/esphome/vcx_meter.yaml...
Failed config
'esphome' section missing from configuration. Please make sure your configuration has an 'esphome:' line in it.
Poniżej kod pliku testboard.yaml oraz vcx_meter.yaml.
esphome:
name: testboard
friendly_name: testboard
on_boot:
then:
- pcf85063.read_time:
id: pcf85063_time
packages:
- file: vcx_meter.yaml
vars:
meter_id: VCX1
meter_name: "M1"
- file: vcx_meter.yaml
vars:
meter_id: VCX2
meter_name: "M2"
- file: vcx_meter.yaml
vars:
meter_id: VCX3
meter_name: "M3"
- file: vcx_meter.yaml
vars:
meter_id: VCX4
meter_name: "Pompa Ciepła"
esp32:
board: esp32-s3-devkitc-1
variant: esp32s3
flash_size: 16MB
framework:
type: esp-idf
# Enable logging
logger:
level: INFO
# Enable Home Assistant API
api:
encryption:
key: "IKF9+rDP0hithsbwqnO2ncZ2ZHo1FMGUnPD0l3wOABU="
ota:
- platform: esphome
password: "41fde50f3d877f29bacc64206b9b7c05"
# wifi:
# ssid: !secret wifi_ssid
# password: !secret wifi_password
# # Enable fallback hotspot (captive portal) in case wifi connection fails
# ap:
# ssid: "Testboard Fallback Hotspot"
# password: "Iw8wwwqxdP5H"
# Enable Web server.
web_server:
port: 80
#captive_portal:
# I2C
i2c:
sda: GPIO42
scl: GPIO41
frequency: 100kHz
id: i2cbus
scan: false
# ETHERNET
ethernet:
type: W5500
clk_pin: GPIO15
mosi_pin: GPIO13
miso_pin: GPIO14
cs_pin: GPIO16
interrupt_pin: GPIO12
reset_pin: GPIO39
# RS485
uart:
- id: UART_RS485
tx_pin: GPIO17
rx_pin: GPIO18
baud_rate: 9600
stop_bits: 1
data_bits: 8
parity: NONE
# ModBus RTU
modbus:
id: modbus_hub
uart_id: UART_RS485
send_wait_time: 50ms
modbus_controller:
- id: VCX1
modbus_id: modbus_hub
address: 1
update_interval: 1s
command_throttle: 50ms
allow_duplicate_commands: true
- id: VCX2
modbus_id: modbus_hub
address: 2
update_interval: 1s
command_throttle: 50ms
allow_duplicate_commands: true
- id: VCX3
modbus_id: modbus_hub
address: 3
update_interval: 1s
command_throttle: 50ms
allow_duplicate_commands: true
- id: VCX4
modbus_id: modbus_hub
address: 4
update_interval: 1s
command_throttle: 50ms
allow_duplicate_commands: true
# TIME
time:
- platform: homeassistant
id: ha_time
on_time_sync:
then:
# Update the RTC when the synchronization was successful
- pcf85063.write_time:
- platform: pcf85063
id: pcf85063_time
# WMBUS - COMPONENT
external_components:
- source: github://SzczepanLeon/esphome-components@main
refresh: 1d
components:
- wmbus_meter
- wmbus_common
- source: github://enr0c/esphome-components@main
components: [ wmbus_radio ]
refresh: 1d
# SPI
spi:
- id: radio
clk_pin: GPIO1 #GPIO5
mosi_pin:
number: GPIO45 #GPIO4
ignore_strapping_warning: true
miso_pin: GPIO47 #GPIO7
interface: spi3
# WMBUS RADIO
wmbus_radio:
spi_id: radio
radio_type: CC1101
frequency: 868.950
gdo2_pin: GPIO48 #GPIO6
gdo0_pin: GPIO38 #GPIO8
cs_pin:
number: GPIO0 #GPIO3
ignore_strapping_warning: true
# WMBUS METERS
wmbus_meter:
- id: water_meter_1
meter_id: 0x01964733 ######## enter your APATOR meter ID here ###########
type: apator162
key: "00000000000000000000000000000000"
- id: water_meter_2
meter_id: 0x01933725 ######## enter your APATOR meter ID here ###########
type: apator162
key: "00000000000000000000000000000000"
- id: water_meter_3
meter_id: 0x01960220 ######## enter your APATOR meter ID here ###########
type: apator162
key: "00000000000000000000000000000000"
- id: water_meter_4
meter_id: 0x01939505 ######## enter your APATOR meter ID here ###########
type: apator162
key: "00000000000000000000000000000000"
- id: water_meter_5
meter_id: 0x01933190 ######## enter your APATOR meter ID here ###########
type: apator162
key: "00000000000000000000000000000000"
- id: water_meter_6
meter_id: 0x01935014 ######## enter your APATOR meter ID here ###########
type: apator162
key: "00000000000000000000000000000000"
# SENSORS
sensor:
## Wodomierze
- platform: wmbus_meter
parent_id: water_meter_1 #Water meter Apator
field: total_m3
device_class: water
name: Wodomierz zimna 1 zużycie
accuracy_decimals: 3
state_class: total_increasing
unit_of_measurement: "m³"
- platform: wmbus_meter
parent_id: water_meter_1
field: rssi_dbm
name: Wodomierz zimna 1 - RSSI
unit_of_measurement: "dBm"
- platform: wmbus_meter
parent_id: water_meter_2 #Water meter Apator
field: total_m3
device_class: water
name: Wodomierz zimna 2 zużycie
accuracy_decimals: 3
state_class: total_increasing
unit_of_measurement: "m³"
- platform: wmbus_meter
parent_id: water_meter_2
field: rssi_dbm
name: Wodomierz zimna 2 - RSSI
unit_of_measurement: "dBm"
- platform: wmbus_meter
parent_id: water_meter_3 #Water meter Apator
field: total_m3
device_class: water
name: Wodomierz zimna 3 zużycie
accuracy_decimals: 3
state_class: total_increasing
unit_of_measurement: "m³"
- platform: wmbus_meter
parent_id: water_meter_3
field: rssi_dbm
name: Wodomierz zimna 3 - RSSI
unit_of_measurement: "dBm"
- platform: wmbus_meter
parent_id: water_meter_4 #Water meter Apator
field: total_m3
device_class: water
name: Wodomierz ciepła 1 zużycie
accuracy_decimals: 3
state_class: total_increasing
unit_of_measurement: "m³"
- platform: wmbus_meter
parent_id: water_meter_4
field: rssi_dbm
name: Wodomierz ciepła 1 - RSSI
unit_of_measurement: "dBm"
- platform: wmbus_meter
parent_id: water_meter_5 #Water meter Apator
field: total_m3
device_class: water
name: Wodomierz ciepła 2 zużycie
accuracy_decimals: 3
state_class: total_increasing
unit_of_measurement: "m³"
- platform: wmbus_meter
parent_id: water_meter_5
field: rssi_dbm
name: Wodomierz ciepła 2 - RSSI
unit_of_measurement: "dBm"
- platform: wmbus_meter
parent_id: water_meter_6 #Water meter Apator
field: total_m3
device_class: water
name: Wodomierz ciepła 3 zużycie
accuracy_decimals: 3
state_class: total_increasing
unit_of_measurement: "m³"
- platform: wmbus_meter
parent_id: water_meter_6
field: rssi_dbm
name: Wodomierz ciepła 3 - RSSI
unit_of_measurement: "dBm"
sensor:
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Napięcie L1"
address: 0
register_type: holding
register_count: 60
value_type: FP32
unit_of_measurement: "V"
accuracy_decimals: 1
force_new_range: true
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Napięcie L2"
address: 0
byte_offset: 4
register_type: holding
value_type: FP32
unit_of_measurement: "V"
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Napięcie L3"
address: 0
byte_offset: 8
register_type: holding
value_type: FP32
unit_of_measurement: "V"
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Prąd L1"
address: 0
byte_offset: 24
register_type: holding
value_type: FP32
unit_of_measurement: "A"
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Prąd L2"
address: 0
byte_offset: 28
register_type: holding
value_type: FP32
unit_of_measurement: "A"
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Prąd L3"
address: 0
byte_offset: 32
register_type: holding
value_type: FP32
unit_of_measurement: "A"
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Moc L1"
address: 0
byte_offset: 36
register_type: holding
value_type: FP32
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Moc L2"
address: 0
byte_offset: 40
register_type: holding
value_type: FP32
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Moc L3"
address: 0
byte_offset: 44
register_type: holding
value_type: FP32
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: ${meter_id}
name: "${meter_name} Energia"
address: 0
byte_offset: 104
register_type: holding
value_type: FP32
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing