Configuration.yaml i blokada dodawania innych yaml

Dzień dobry
Jakoś udało mi się zepsuć configuration.yaml. Zauważyłem to po raz pierwszy dodając integracje falowników solarnych, skonfigurowałem sobie wszystko, wkleiłem do configuration.yaml, zaczął się burzyć że mam jakieś duble, źle ustawione spacje itp, to zrobiłem jak było w instrukcji, zrobiłem katalog, tam zrobiłem pliczek, wkleiłem, wszystko OK, zapisałem, katalog dodałem do configuration yaml, ale encje w HA się nie pojawiły. To co początkowo wkleiłem oczywiście wywaliłem z configuration.yaml. Zrobiłem to samo w innym HA na laptopie w virtualce, wszystko pojawiło się jak trzeba, zaczęło sczytywać z api Solax wszystkie dane. No to wróciłem do RP4 i configuration.yaml, przesuwałem, dodawałem spacje, w końcu udało mi się to zapisać bez błędów, zakomentowałem podczytywanie katalogów, restart, wszystko się pojawiło, z sensorów mogłem zbudować jakiś panel i widzę te dane na kartach HA.
No ale to taka proteza, bo plik się rozrasta, wolalbym odblokować widzenie podłączanych plików yaml. Może ktoś tu wypatrzy co mam nie tak:

# homeassistant:
# # In the packages directory you can store any number of packages in a YAML file but not subfolders (use: packages: !include_dir_merge_named packages/)
#   packages: !include_dir_named packages
# # List of folders that can be used as sources for sending files.  
#   allowlist_external_dirs:
#     - /config

 

# Loads default set of integrations. Do not remove.
default_config:


 


# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
switch: !include_dir_merge_list homeassistant/switches
# sensor: !include_dir_merge_list /homeassistant/sensor/
template: !include_dir_merge_list homeassistant/template/



sensor:
  - platform: foxess
    deviceID: blablablabla
    deviceSN: blablablabla
    apiKey: blablablabla
    
# platform:
#   - sensor:
#     - name: solax_today
#       state: "{{ states('sensor.solaxb_today') | float }}"
#       unit_of_measurement: "kWh"
#       state_class: total_increasing
#       device_class: energy
#       attributes:         
#         last_reset: '1970-01-01T00:00:00+00:00'    
    
    

      
  - platform: rest
    resource: https://global.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=blablablablabla&sn=blablablabla
    name: "SolaxG3"
    scan_interval: 300
    json_attributes_path: "$.result"
    json_attributes:
      - yieldtoday
      - yieldtotal
      - acpower
      - uploadTime
      - inverterStatus
    value_template: "1" # dummy value; not used; avoids error
  - platform: template
    sensors:
      solaxg3_today:
        friendly_name: "SolaxG3 today"
        value_template: "{{ state_attr('sensor.solaxg3', 'yieldtoday') }}"
        unit_of_measurement: "kWh"
      solaxg3_total:
        friendly_name: "SolaxG3 total"
        value_template: "{{ state_attr('sensor.solaxg3', 'yieldtotal') }}"
        unit_of_measurement: "kWh"
      solaxg3_now:
        friendly_name: "SolaxG3 now"
        value_template: "{{ state_attr('sensor.solaxg3', 'acpower') }}"
        unit_of_measurement: "W"
      solaxg3_upload_time:
        friendly_name: "SolaxG3 upload time"
        value_template: "{{ state_attr('sensor.solaxg3', 'uploadTime') }}"
      solaxg3_status:
        friendly_name: "SolaxG3 status"
        value_template: >
          {% if state_attr('sensor.solaxg3', 'inverterStatus') == '100' %}Wait
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '101' %}Check
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '102' %}Normal
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '103' %}Fault
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '104' %}Permanent Fault
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '105' %}Update
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '106' %}EPS Check
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '107' %}EPS
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '108' %}Self-test
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '109' %}Idle
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '110' %}Standby
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '111' %}Pv Wake Up Bat
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '112' %}Gen Check
          {% elif state_attr('sensor.solaxg3', 'inverterStatus') == '113' %}Gen Run
          {% else %}I dont know{% endif %}
  
      solaxb_today:
        friendly_name: "PVg3b today"
        unit_of_measurement: "kWh"
        device_class: energy      
        value_template: "{{ (states('sensor.solaxg3_today') | float) }}"



        
      

mqtt:
  sensor:
    - name: "ESP8266 Arduino Test"
      state_topic: home/esp8266ArdTest/temp/pub
      device_class: temperature
      unit_of_measurement: "°C"  
 
    - name: "ESP8266DSCWU"
      state_topic: home/esp8266/tempCWU/pub
      device_class: temperature
      unit_of_measurement: "°C"
 
    - name: "ESP8266DScoZ"
      state_topic: home/esp8266/tempCOz/pub
      device_class: temperature
      unit_of_measurement: "°C"
      
  switch:
    - name: "LED ESP8266 TEST2" # Choose an easy-to-recognize name
      state_topic: "34fdrghs22" # Topic to read the current state
      command_topic: "34fdrghs23" # Topic to publish commands
      qos: 0
      payload_on: "1" # or "on", depending on your MQTT device
      payload_off: "0" # or "off", depending on your MQTT device
      retain: true # or false if you want to wait for changes

Poczytaj przytoczony temat, bo jak trochę nie wiem czego nie widzisz, gdzie dokładasz itd.: Package w Home Assistant - Home Assistant / Konfiguracja HA - ArturHome

1 polubienie

Przyuszczalnie twój problem wynika z tego, że nie można mieszać starej składni homeassitantowego YAML i nowej składni YAML w jednym pliku.

Natomiast to co jest zakomentowane jako solax to raczej nie powinno wcale działać, bo to ani nowa ani stara składnia - jeśli coś jest jako samodzielna platforma której zabrakło nazwy (co sugeruje sensor w środku), to nie może być w sekcji sensor

to jest stara składnia

sensor:
  - platform: foxess
[…]
  - platform: jakas-inna-platforma
[…]
  - platform: jeszcze-inna-platforma
[…]

a mqtt masz już w nowej

mqtt:
  sensor:
    - <jakis sensor itd>

trochę można:


bo działa i nie chce mi się poprawiać.

Trochę można, a trochę nie, lepiej poprawić… wiadomo, że HA to WIP więc któregoś dnia budzimy się z ręką w nocniku.

OK, to zakomentowane to miał być czujnik, który mogę użyć w panelu energia chyba, rozwiązałem to robiąc pomocnika. Ciągle w tym raczkuje, choć coraz więcej rzeczy mi działa, nie tak to inaczej.
No to mqtt z sensorami działa OK, gdy jest wklejone tutaj, zrobiłem katalog sensor, tam mam plik /homeassistant/sensor/dsTemp.yaml, w środku to samo:


mqtt:
  sensor:
    - name: "ESP8266 Arduino Test"
      state_topic: home/esp8266ArdTest/temp/pub
      device_class: temperature
      unit_of_measurement: "°C"  
 
    - name: "ESP8266DSCWU"
      state_topic: home/esp8266/tempCWU/pub
      device_class: temperature
      unit_of_measurement: "°C"
 
    - name: "ESP8266DScoZ"
      state_topic: home/esp8266/tempCOz/pub
      device_class: temperature
      unit_of_measurement: "°C"

a czujnik zniknął.
image
Po przeniesieniu do tych osobnych plikow zniknęło mi wszystko z SOLAX, DS, ale foxess działa.
Tak samo template gdzie sumuje i odejmuje kilka odczytów mocy z gniazdek, wklejony tutaj działał, teraz zniknął, /homeassistant/template/templatki.yaml.

 - platform: template
   sensors:
     odejmowankoencji:
       friendly_name: "RoznicowanieEncji"
       value_template: >- 
           {% set sa = states('sensor.esphomelicznikapv_esp_apv_moc_chwilowal1') | float %} 
           {% set sb = states('sensor.socz11_lodowkaduza_moc') | float %} 
           {% set sc = states('sensor.socz9_orangelodowka_moc') | float %} 
           {{ ((sa - sb - sc)) | round(2) }}
       unit_of_measurement: 'W'
       device_class: power
      

przeczytałeś temat który Ci znalazłem ? W zasadzie wystarczy pierwszy wpis @macek ,
System musi wiedzieć co i gdzie szukać, czyli musisz mu podać “ścieżkę dostępu”. Nawet w swoim configuration.yaml podałeś, że ma szukać w katalogu “packages”, ale tam nie wrzucasz.

No tak automatyzacje też można używać po staremu i po nowemu, ale raczej nikt nie zapisuje daty kiedy przestaną działać, widać że HA Devs, poszli po rozum do głowy i w ostatniej aktualizacji wszystkie stare wpisy w automatyzacjach zostały zmienione do nowej wersji.

Dziękuję za wskazówki, jednak tak jak tu pokazałem podaję ścieżki

switch: !include_dir_merge_list homeassistant/switches

A to do packages zacząłem robić, ale przecież jest zakomentowane, tak robię jak coś testuję, wklejam, komentuję, następnie kopiuję do odpowiednich linii. Potem postawiłem HA na virtualce do testów, przekleiłem tak jak chciałem to zrobić na RP4 i ruszylo od strzału, te same generalnie rzeczy, tam nie miałem tych sensorów mqtt i ESP tylko, tak wygląda działający configuration.yaml:


# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include_dir_merge_list sensor/
template: !include_dir_merge_list template/

, tak to z jakis turiali na Youtube, chyba nawet ArturHome pokazywał, no i to faktycznie działa OK w innym Home Assistant, gdzie wkleiłem to do foxess i solax w katalogu odpowiednio sensor.
W tym HA na RP4 już robilem takie kombinacje, że zostawialem tylko te dołączone pliki dla foxess i solax, wywalalem templatki i sensory/switche mqtt, ale to nie pomoglo. Ten foxess to jest wprost z integracji, tu za bardzo nie pozmieniam raczej, a solax to tylko ten wpis, początkowy był dużo bardziej niedopracowany, odpytywał dla każdej opcji osobno solax api, co blokowało go bo jest limit zapytań, potem znalazłem przykłady jak to rozpisać z json i tak jest OK, dopóki nie przeniosłem do osobnego pliku.
Na razie rozgryzłem czujnik DS, dodałem go do testowego HA i też mi się nie pojawił, z głównego pliku pojawił mi się znowu ze znakiem F, przeklejałem mu różne kółeczka przez sporo czasu, zanim się zorientowałem, że on to wszystko ignoruje bo ma ustawione F łokcie i stopy w głównych ustawieniach, więc po co mu podawać pole ‘unit_of_measurement: “°C”’ skoro i tak wie lepiej jak mierzyć temperaturę?
W każdym bądź razie zadziałało to:
/homeassistant/configuration.yaml

mqtt: !include_dir_merge_named mqtt/

/homeassistant/mqtt/ds.yaml

  sensor:
    - name: "ESP8266 Arduino Test"
      state_topic: home/esp8266ArdTest/temp/pub
      device_class: temperature
      unit_of_measurement: "°C"  
 
    - name: "ESP8266DSCWU"
      state_topic: home/esp8266/tempCWU/pub
      device_class: temperature
      unit_of_measurement: "°C"
 
    - name: "ESP8266DScoZ"
      state_topic: home/esp8266/tempCOz/pub
      device_class: temperature
      unit_of_measurement: "°C"

Tak samo switch z mqtt ma być w tym samym katalogu, bez mqtt tylko pilik zaczyna się od switch:.
Więc dodawanie plików działa choć akurat w tutorialu HA nie było przykładu z mqtt.

Niestety, to co działa w configuration.yaml nie musi wcale działać po wycięciu do osobnych katalogów i plików. Templatka z powyżej zadziałała zapisana w osobnym pliku tak:

template: !include_dir_merge_list template/

/homeassistant/template/roznicowanko.yaml

- sensor:
  - name: "odejmowankoencji"
    state: >- 
            {% set sa = states('sensor.esphomelicznikapv_esp_apv_moc_chwilowal1') | float %} 
            {% set sb = states('sensor.socz11_lodowkaduza_moc') | float %} 
            {% set sc = states('sensor.socz9_orangelodowka_moc') | float %} 
            {{ ((sa - sb - sc)) | round(2) }}
    unit_of_measurement: 'W'
    device_class: power

Nie wystarczyło tropem mqtt wywalić platform, trzeba było jeszcze zmienić na “state” i parę innych drobiazgów, nie wiem czy koniecznie.
Nie dziwcie, że się miotam, skoro tu nie ma końcowego standardu, znalezione przykłady w sieci działają, a za chwile bez logicznego (dla mnie) związku już nie, bo tak.

Musi działać i działa na 100% tylko robisz jakiś “głupi” błąd. Na Github.com jest mnóstwo bardziej skoplikowanych konfiguracji i wszystkie działają, przeanalizuj jedną z takich bardziej skomplikowanych a zarazem bardzo logicznych GitHub - frenck/home-assistant-config: 🏠 My Home Assistant configuration, a bit different that others :) Be sure to 🌟 this repository for updates! . Sam osobiście od początku zabawy z HA korzystam z package i nigdy nie miałem żadnych problemów.

1 polubienie

Macek, ale ja zrobiłem CTR-C i CTR-V, nie wierzysz to może sprawdź u siebie z tym template, mój wkład to była podmiana na moje encje. Będę wdzięczny jak mi wskażesz, gdzie robiłem błąd. Użyłem pierwszego przykładu, który mi zadziałał, nie wiem czym się różni użycie state: >- od value_template: >-, ale to drugie nie chciało mi działać w osobnym pliku. Zresztą widać obie wersje w postach powyżej, zmieniałem więcej elementów aż zadziałało, to było ostatnie, może poprzednie nie były konieczne. Korzystałem z tego: Template - Home Assistant , przy sensor jak zrozumiałem jest konieczna opcja state, tak zmieniłem choć w pliku configuration.yaml działało jako value_template. No teraz widzę, że to poprzednie było wymagane przy ‘number’, a przy ‘sensor’ ma być state, choć przykłady również tu na forum są tak i tak: Template sensors - #2 przez artpc .
Ja raczej nie korzystam z packages tutaj? To miał być kolejny krok, na razie starałem się ogarnąć ten sposób.