Dodawanie encji do ESP8266 z LCD

Witam
Po roku czasu wpadłem na pomysł (w celach naukowych oczywiści) aby dołączyć ESP8266 z LCD oraz z DS18B20. Ale to nuda więc dzięki YT smart_jack dodałem jeszcze na wyświetlaczu godzinę z HA i Adres IP. I teraz chciałem dodać jakąś encje np z Airly sensor.dom_pm2_5??

Zrób to analogicznie do tego (przykład na eksport encji temperatury z HA do ESPHome) to fragment YAMLa w ESPHome oczywiście, wyświetlać już umiesz, więc dasz radę (dostępne funkcje wizualizacji zależą od wyświetlacza)

sensor:
  - platform: homeassistant
    id: balkon_temperatura_do_esp
    name: "Temperatura Balkon podłoga (From HA)"
    entity_id: sensor.ble_temperature_balkon_podloga
    internal: false
    unit_of_measurement: "°C"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 1

A generalnie, to polecam podpierać się coraz lepszą dokumentacją ESPHome

1 Like

Dzięki za radę jednak to nie działa.
Dalej próbuje dodać encje z Airly, choć to tylko przykład aby pobierać inne informacje z HA
Prośba jak by ktoś zobaczył gdzie robie błąd

sensor:
  - platform: dallas
    address: 0x6e00000056046c28
    id: GZ
  - platform: homeassistant
    id: airly
    #name: "Dom PM2_5"
    entity_id: sensor.dom_pm2_5
    internal: false

Nie widzę tu błędu, wrzuć całego YAMLa oraz logi od momentu OTA przynajmniej do czasu jakiejkolwiek aktualizacji (zmiany) wskazania w Airly

Tak się dokładnie nazywa identyfikator tej encji w HA?

przykładowo u mnie by to było sensor.airly_minska_pm2_5

PS

    internal: false

zwraca wartość encji z powrotem do HA (to ustawienie jest tylko w celu debugowania, gdy już zadziała, aby nie mnożyć kopii “tych samych” encji można przestawić na false i dodać urządzenie ponownie do Integracji (w ogóle to sugeruję usuwać+dodawać ponownie urządzenie z/do Integracji po dużych zmianach w YAMLu)

image

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Dsp1 Fallback Hotspot"
    password: "v3SaB9mcNYBy"
font: 
  - file: "fonts/arial.ttf"
    id: font1
    size: 12
  - file: "fonts/Radio Space.ttf"
    id: font2
    size: 24    

time:
  - platform: homeassistant
    id: esptime  



color:
  - id: cl_blue
    red: 0%
    green: 0%
    blue: 100%
    white: 0%
  - id: cl_green
    red: 0%
    green: 100%
    blue: 0%
    white: 0%
dallas:
  - pin: D4
    update_interval: 5s
sensor:
  - platform: dallas
    address: 0x6e00000056046c28
    id: GZ
  - platform: homeassistant
    id: airly2
    #name: "Dom PM2_5"
    entity_id: sensor.dom_pm2_5
    internal: false
    #unit_of_measurement: "µg/m³"
   # device_class: "temperature"
    #state_class: "measurement"
    #accuracy_decimals: 1
  

spi:
  clk_pin: D6 #SCL
  mosi_pin: D7 #SDA
display:
  - platform: st7735
    model: "INITR_GREENTAB"
    reset_pin: D8 #RES
    cs_pin: D0 #CS
    dc_pin: D5 #DC
    rotation: 90
    device_width: 128
    device_height: 160
    col_start: 0
    row_start: 0
    eight_bit_color: True
    update_interval: 5s
    
    lambda: |-
     it.printf(20, 120, id(font1), id(cl_blue), TextAlign::BASELINE_LEFT, "Temperature: %.1f°C", id(GZ).state);
     it.strftime(60, 38, id(font2), TextAlign::BASELINE_LEFT, "%H:%M",id(esptime).now());
     it.printf(30, 90,  id(font1), "pyl: %.1f", id(airly2).state);
    
captive_portal:
    wpisz lub wklej tutaj kod

To NIE jest cały YAML (a jeśli jest to ma spore braki, więc jestem pewien, że nie wrzuciłeś całości).

Swoje hasła/tokeny jeśli są jawnie zamień np. na iksy, ale wrzuć naprawdę cały (a tak powinny być zdefiniowane, by wykorzystywać plik z sekretami)

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

No i ogólnie jest w nim straszny bałagan, to się nie powinno skompilować…

esphome:
  name: dsp1

esp8266:
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xmqDRiqAGcLSF49RfsBTxPVQ82KLoRDi3l3FtQYiJ3k="

ota:
  password: "62a4891ceee3c5319d75d29fb7cef07e"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Dsp1 Fallback Hotspot"
    password: "v3SaB9mcNYBy"
font: 
  - file: "fonts/arial.ttf"
    id: font1
    size: 12
  - file: "fonts/Radio Space.ttf"
    id: font2
    size: 24    

time:
  - platform: homeassistant
    id: esptime  



color:
  - id: cl_blue
    red: 0%
    green: 0%
    blue: 100%
    white: 0%
  - id: cl_green
    red: 0%
    green: 100%
    blue: 0%
    white: 0%
dallas:
  - pin: D4
    update_interval: 5s
sensor:
  - platform: dallas
    address: 0x6e00000056046c28
    id: GZ
  - platform: homeassistant
    id: airly2
    #name: "Dom PM2_5"
    entity_id: sensor.dom_pm2_5
    internal: false
    #unit_of_measurement: "µg/m³"
   # device_class: "temperature"
    #state_class: "measurement"
    #accuracy_decimals: 1
  

spi:
  clk_pin: D6 #SCL
  mosi_pin: D7 #SDA
display:
  - platform: st7735
    model: "INITR_GREENTAB"
    reset_pin: D8 #RES
    cs_pin: D0 #CS
    dc_pin: D5 #DC
    rotation: 90
    device_width: 128
    device_height: 160
    col_start: 0
    row_start: 0
    eight_bit_color: True
    update_interval: 5s
    
    lambda: |-
     it.printf(20, 120, id(font1), id(cl_blue), TextAlign::BASELINE_LEFT, "Temperature: %.1f°C", id(GZ).state);
     it.strftime(60, 38, id(font2), TextAlign::BASELINE_LEFT, "%H:%M",id(esptime).now());
     it.printf(30, 90,  id(font1), "pyl: %.1f", id(airly2).state);
    
captive_portal:
    

To jest wciaz pilik do testów, probuje umieścić multum info na wyświetlaczu, wraz z graficzką, ale utknąłem na tym że nie wczytuje mi encji ani z Airly ani z AccuWeather

Po pierwsze brakuje dyrektywy api: więc to urządzenie nie łączy się z HA (jest obecnie w pełni autonomiczne).

sugeruję taką wstawkę gdzieś w miarę na początku (dodałem brak timeoutu, więc urządzenie nie będzie sie restartować nawet jeśli nie dodasz go do Integracji, ani gdy straci kontakt z HA z jakiejś przyczyny - np. wyłączysz HA)

# Enable Home Assistant API
api:
  reboot_timeout: 0s

Edit - jednak masz tam sekcję api z szyfrowaniem (więc dodając sprzęt do HA w Integracji musisz podać klucz:

xmqDRiqAGcLSF49RfsBTxPVQ82KLoRDi3l3FtQYiJ3k=

więc dla uproszczenia życia wywalił (zakomentował) bym to szyfrowanie zostawiając w sekcji api tylko tyle ile pokazałem wyżej

Po drugie captive_portal: jest gdzieś na szarym końcu YAMLa, czyli swój kod dopisywałeś gdzieś w środku tego co otrzymałeś z kreatora i jak przypuszczam skasowałeś api: przypadkiem.

Generalnie używasz platformy czasu pobieranego z HA, więc jeśli zegar chodzi dobrze, to połączenie api działa (to tak najprościej bez debugowania), może powinieneś cierpliwie poczekać aż airly odświeży dane?

Byłoby znacznie łatwiej gdybyś ułożył sobie sekcje w/g zastosowania, czyli wszystkie “systemowe” miał na początku pliku - tak jest czytelniej, oczywiście to tylko propozycja, ale przez to, że “funkcjonalnie” nie były razem, to przeoczyłem, że masz w tym yamlu zdefiniowane api.

esphome:
  name: dsp1
  friendly_name: dsp1

esp8266:
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:
  reboot_timeout: 0s
  encryption:
    key: "xmqDRiqAGcLSF49RfsBTxPVQ82KLoRDi3l3FtQYiJ3k="

ota:
  password: "62a4891ceee3c5319d75d29fb7cef07e"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Dsp1 Fallback Hotspot"
    password: "v3SaB9mcNYBy"

captive_portal:

# dołożyłem platformę web-serwera, żebyś mógł odwiedzić urządzenie 
# bezpośrednio i zobaczyć czy eksponuje encje oraz jaki mają stan, przy okazji zobaczysz logi
web_server:
  port: 80

# teraz definujesz to co wykorzystasz sprzętowo - integracje spi i dallas 
# oraz platformę czasu - potraktujmy to jako "wirtualny sprzęt"

spi:
  clk_pin: D6 #SCL
  mosi_pin: D7 #SDA

dallas:
  - pin: D4
    update_interval: 5s

time:
  - platform: homeassistant
    id: esptime  

# sensory korzystają z powyższych i jeszcze wcześniejszego api, więc dałem je dalej

sensor:
  - platform: dallas
    address: 0x6e00000056046c28
    id: GZ
  - platform: homeassistant
    id: airly2
    #name: "Dom PM2_5"
    entity_id: sensor.dom_pm2_5
    internal: false
    #unit_of_measurement: "µg/m³"
   # device_class: "temperature"
    #state_class: "measurement"
    #accuracy_decimals: 1
  
# teraz powiedzmy definiujesz zasoby do wykorzystania przez wyświetlacz

font: 
  - file: "fonts/arial.ttf"
    id: font1
    size: 12
  - file: "fonts/Radio Space.ttf"
    id: font2
    size: 24    

color:
  - id: cl_blue
    red: 0%
    green: 0%
    blue: 100%
    white: 0%
  - id: cl_green
    red: 0%
    green: 100%
    blue: 0%
    white: 0%

display:
  - platform: st7735
    model: "INITR_GREENTAB"
    reset_pin: D8 #RES
    cs_pin: D0 #CS
    dc_pin: D5 #DC
    rotation: 90
    device_width: 128
    device_height: 160
    col_start: 0
    row_start: 0
    eight_bit_color: True
    update_interval: 5s
    
    lambda: |-
     it.printf(20, 120, id(font1), id(cl_blue), TextAlign::BASELINE_LEFT, "Temperature: %.1f°C", id(GZ).state);
     it.strftime(60, 38, id(font2), TextAlign::BASELINE_LEFT, "%H:%M",id(esptime).now());
     it.printf(30, 90,  id(font1), "pyl: %.1f", id(airly2).state);
    

W ostatniej linijce nie zdefiniowałeś koloru, więc do sprawdzenia czy w ogóle wyświetla “pyl:”

Wgrałem. Niestety dalej nic, “pyl” napis wyswietla.

A byłeś już zwiedzić webserwer?
Masz te logi, o których wspominałem wyżej?