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
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)
# 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?