Esphome on host systemd

Hi,
I compiled simple modbus config for host, it runs pretty well, either I start “program” via command line, but I can’t start it via systemd.
config:

esphome:
   name: modbus-external

host:
   mac_address: "02:de:ad:03:be:af"

api:
   port: 60533
   encryption:
      key: !secret API_key

button:
   platform: restart
   name: "restart"

logger:
   level: INFO

interval:
 - interval: 333ms
   then:
    - lambda: |-
         static int i;
         i++;
         switch (i % 3) {
            case 0:
               id(tev0).update();
               break;
            case 1:
               id(tev1).update();
               break;
            case 2:
               id(ws0).update();
               break;
         }

uart:
   port: /dev/com3
   baud_rate: 115200
   #debug:

modbus:
   send_wait_time: 77ms
etc.

This works:

/etc/esphome/.esphome/build/modbus-external/.pioenvs/modbus-external/program

But service:

[Unit]
Description=esphome modbus external
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=7
ExecStart=/etc/esphome/.esphome/build/modbus-external/.pioenvs/modbus-external/program

[Install]
WantedBy=multi-user.target

ended with:

systemd[1]: modbus-external.service: Main process exited, code=killed, status=11/SEGV
Subject: Unit process exited
Defined-By: systemd
Support: https://www.debian.org/support
An ExecStart= process belonging to unit modbus-external.service has exited.
The process' exit code is 'killed' and its exit status is 11.

Something is strange with this. There must be:

[Service]
User=root
Group=root

While many other programs don’t need it.
Also, stdout and stderr are weird, run from cmd are visible, but systemd redirection either to file or syslog produce nothing.