Validate ESPHome

Witam
Mam problem z konfiguracją esp poprzez wtyczkę home assistant.
Problem objawia się tym że przy sprawdzaniu konfiga dostaję info że składnia jest niepoprawna. Gdy np. dodam jakiś pusty znak przed linijką np. static_ip sypie mi już innymi błędami.

INFO ESPHome 2023.8.3
INFO Reading configuration /config/esphome/kotlownia.yaml...
ERROR Error while reading config: Invalid YAML syntax:

while parsing a block mapping
  in "/config/esphome/kotlownia.yaml", line 1, column 1:
    esphome:
    ^
expected <block end>, but found '<block mapping start>'
  in "/config/esphome/kotlownia.yaml", line 33, column 3:
      ap:
      ^

Siedzę i patrzę ale nie bardzo mogę to rozkminić a to dopiero moje początki z HA i EspH
Mój konfig.

esphome:
 name: kotlownia
 friendly_name: kotlownia

esp8266:
 board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
 encryption:
   key: "tYOL0Nyl//DaxvHLPGaw9Mid+A12b6eNqmcx59yTZmA="

web_server:
 port: 80

ota:
 password: "784b7be90d231994c35190d5ff1fd0ce"

wifi:
 ssid: !secret wifi_ssid
 password: !secret wifi_password
 
  # Optional manual IP
manual_ip:
   static_ip: 192.168.1.40
   gateway: 192.168.1.1
   subnet: 255.255.255.0
 # Enable fallback hotspot (captive portal) in case wifi connection fails

 ap:
ssid: "Kotlownia Fallback Hotspot"
password: "ix6iV4dXAXPo"



captive_portal:

dallas:
- pin: GPIO3
#   update_interval: 5s

 sensor:
   - platform: dallas
     address: 0xA40000031F055028
     name: "GazWejscie"
   - platform: dallas
     address: 0xA40000031F055041
     name: "GazWyjscie"
   - platform: dallas
     address: 0xA40000031F057031
     name: "WodaWejscie"
   - platform: dallas
     address: 0xA40000031F045021
     name: "WodaWyjscie"

Witamy na forum. Komunikat mówi wyraźnie o wierszu 33. Masz w nim o jedno wcięcie za dużo:

Dzięki ale puste znaki nie są pomijane?
Mam rozumieć że bloki w konfigu są tworzone wizualnie i na tej podstawie kompilator tworzy składnię?

W YAML nie ma pojęcia puste znaki. Tworzysz z wierszy coś w rodzaju drzewa katalogów. Więc każda gałąź drzewa tworzona jest poprzez wcięcia wykonywane za pomocą znaku spacji (tylko spacji !!!) i każdy ten znak ma znaczenie. Wcięcia dla poszczególnych sekcji kodu muszą odpowiadać danej sekcji kodu patrząc w pionie, tworząc kolumny.

@saluo jak zaczynasz zabawę, to warto wspomagać się narzędziem Notepad ++ , masz tam zakładkę składnia i można wybrać YAML, wtedy lepiej widać to, o czym pisze @angler .


Twój kod w kilku miejscach jest do korekty.

1 polubienie

Widzę że muszę obczaić ten jezyk yaml.
Prośba. Dasz radę zerknąć mi jeszcze na składnie mojego konfiga bo dalej coś nie halo i pluje. Nie wiem czy jakaś sekcja jest może nadrzędna i wcięcia w dalszej części mam nie takie.
dzięki za wyjasnienie problemu

esphome:
  name: kotlownia
  friendly_name: kotlownia

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "tYOL0Nyl//DaxvHLPGaw9Mid+A12b6eNqmcx59yTZmA="

web_server:
  port: 80

ota:
  password: "714b7be90d211944c35990d5ff1fd0ae"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  
   # Optional manual IP
  manual_ip:
    static_ip: 192.168.1.40
    gateway: 192.168.1.1
    subnet: 255.255.255.0
  # Enable fallback hotspot (captive portal) in case wifi connection fails

ap:
ssid: "Kotlownia Fallback Hotspot"
password: "ix6iV4dXAXPo"



captive_portal:

#DS18B20 1wire

dallas:
    - pin: GPIO3
#   update_interval: 5s
 
sensor:
    - platform: dallas
      address: 0xA40000031F055028
      name: "GazWejscie"
    - platform: dallas
      address: 0xA40000031F055041
      name: "GazWyjscie"
    - platform: dallas
      address: 0xA40000031F057031
      name: "WodaWejscie"
    - platform: dallas
      address: 0xA40000031F045021
      name: "WodaWyjscie"

# Pulse counter
    - platform: pulse_counter
      pin: GPIO3
      unit_of_measurement: 'kW'
      name: 'Moc chwilowa pompy ciepla'
      filters:
        - multiply: 0.06  # (60s/1000 pulses per kWh)
 
      total:
        unit_of_measurement: 'kWh'
        name: 'Zużycie prądu'
        filters:
        - multiply: 0.001  # (1/1000 pulses per kWh)

Edit:

Ok. Doszedłem ładu i składu. Szkoda troszkę że ktoś to tak skomplikował.
Jeszcze raz dzięki.

Ten temat będzie dobrym miejscem aby podlinkować rozwiązania pomoce w edytowaniu kodu YAML.
Oprócz wspomnianego powyżej #notepad++ polecam również:

Dla lubiących wieloplatformowe, w tym moje ulubione kontenerowe, rozwiązanie do użytku przez przeglądarkę #code-server :

Podłączę się, bo mam podobny problem, nie jest to mój pierwszy raz z ESPHome i się trochę zaskoczyłem.
Próba instalacji nowej płytki czy walidacji już zainstalowanej rzuca błędem:

ERROR Error while reading config: Invalid YAML syntax:

did not find expected <document start>
  in "<unicode string>", line 4, column 1

Błędów w kodzie nie widzę (albom ślepy):

esphome:
  name: esphome-web-9d48fc
  friendly_name: ESPHome Web
  
esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

2023-12-28_16-57

Mogę podejrzewać ostatnią aktualizację (do wersji 2023.12.3), która u wielu użytkowników (i u mnie) powieliła niektóre encje.
Tylko jak to naprawić, każdy pomysł na wagę złota.
EDIT:
Napisałem posta, zacząłem znów szukać i znalazłem, gdzie był problem:
w pliku secrets.yaml po aktualizacji (lub po dodaniu nowej płytki) dopisały się dodatkowe linie:

# Twój identyfikator SSID i hasło Wi-Fi
wifi_ssid:
hasło do wifi:

Po usunięciu tego wszystko działa poprawnie.

1 polubienie