Hi Leute,
kennt das wer von euch?
Falls ja, hätte ich ein paar Fragen:
Wie kann ich darauf code laden? Mit ESPHOME?
Habt ihr ein funktionierendes Beispiel in ESPHOME?
Kann mir wer Schritt für Schritt erklären, wie man ESPHOME Packages nutzt?
- Wo müssen die Files hin?
- Wie ist die Verzeichnisstruktur?
Dankeschön schon mal für eure Infos
NA dann antworte ich mir doch mal selbst.
Die Substitutions am Anfang kann man einfach nach eigenen Bedürfnisse anpassen.
Nachstehend der YAML Code für ein Uhr DEMO, basierend auf Arbeiten diese Leute:
Gingermist
DMonkey
Im YAML sind auch noch links zu den Beispielen etc. Sorry, wenn ich nicht alle Quellen aufliste.
Hier nochmal Danke an ALLE die zu dem Thema irgendwo was beigetragen haben und deren Infos ich mich mit bedient habe 
Grüße Franky
################################################################################
# Substitution Variables
################################################################################
substitutions:
device_internal_name: esphome21
device_wifi_name: esphome-21
device_friendly_name: ESPHome 21
device_ip_address: 192.168.1.199
device_sampling_time: 30s
################################################################################
# Globals
################################################################################
globals: ##to set default reboot behavior
- id: wifi_connection
type: bool
restore_value: no
initial_value: "false"
################################################################################
# Board Configuration
################################################################################
esphome:
name: esp32-s3-lcd-display
friendly_name: ${device_friendly_name}
platformio_options:
board_upload.maximum_ram_size: 524288
psram:
mode: octal
speed: 80Mhz
esp32:
variant: esp32s3
flash_size: 16MB
cpu_frequency: 240MHz
framework:
type: esp-idf
################################################################################
# Enable logging
################################################################################
logger:
logs:
component: ERROR
################################################################################
# Enable Home Assistant API
################################################################################
api:
reboot_timeout: 0s
encryption:
key: !secret api_encryption_key
on_client_connected:
- if:
condition:
lambda: 'return (0 == client_info.find("Home Assistant "));'
then:
- lvgl.page.show: main_page
################################################################################
# OTA
################################################################################
ota:
platform: esphome
password: !secret web_server_password
################################################################################
# WiFi
################################################################################
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: ${device_ip_address}
gateway: 192.168.1.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
# ssid: ${device_wifi_name}
password: !secret web_server_password
captive_portal:
################################################################################
# Web Server
################################################################################
web_server:
port: 80
version: 2
include_internal: true
auth:
username: !secret web_server_user
password: !secret web_server_password
local: true
################################################################################
# IO Extender
################################################################################
ch422g:
- id: ch422g_hub
################################################################################
# Switch
################################################################################
switch:
- platform: restart
name: "Restart"
id: device_restart
- platform: safe_mode
name: Use Safe Mode
id: device_safe_mode
- platform: gpio
id: lcdbacklight
name: lcdbacklight
pin:
ch422g: ch422g_hub
number: 2
mode:
output: true
inverted: false
restore_mode: ALWAYS_ON
################################################################################
# Interval
################################################################################
interval:
- interval: 10s
then:
- if:
condition:
wifi.connected:
then:
- lambda: |-
id(wifi_connection) = true;
else:
- lambda: |-
id(wifi_connection) = false;
time:
- platform: homeassistant
id: esptime
on_time:
- seconds: "*"
then:
- script.execute: clock_update
################################################################################
# Sensors
################################################################################
sensor:
# WiFi
- platform: wifi_signal
name: "WiFi Signal Sensor"
id: ${device_internal_name}_wifi_signal_sensor
update_interval: ${device_sampling_time}
# Uptime
- platform: uptime
name: "Uptime Sensor"
id: ${device_internal_name}_uptime_sensor
update_interval: ${device_sampling_time}
internal: true
on_raw_value:
then:
- text_sensor.template.publish:
id: ${device_internal_name}_uptime_human
state: !lambda |-
int seconds = round(id(${device_internal_name}_uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
(to_string(seconds) + "s")
).c_str();
################################################################################
# Text Sensors
################################################################################
text_sensor:
#-------------------------------------------------------------------------------
# ESP32 internal sensors
#-------------------------------------------------------------------------------
- platform: wifi_info
ip_address:
name: IP Address
id: ${device_internal_name}_ip_address
ssid:
name: Connected SSID
id: ${device_internal_name}_connected_ssid
mac_address:
name: Mac Wifi Address
id: ${device_internal_name}_mac_address
#-------------------------------------------------------------------------------
# Custom Text sensors
#-------------------------------------------------------------------------------
- platform: template
name: Uptime Human Readable
id: ${device_internal_name}_uptime_human
icon: mdi:clock-start
color:
- id: my_red
red: 100%
green: 0%
blue: 0%
- id: my_pink
red: 100%
green: 10%
blue: 40%
- id: my_yellow
red: 100%
green: 100%
blue: 0%
- id: my_green
red: 0%
green: 100%
blue: 0%
- id: my_blue
red: 0%
green: 0%
blue: 100%
- id: my_gray
red: 50%
green: 50%
blue: 50%
- id: my_white
red: 100%
green: 100%
blue: 100%
- id: my_black
red: 0%
green: 0%
blue: 0%
font:
- file: "gfonts://Roboto"
id: arial_98
size: 98
- file: "gfonts://Roboto"
id: arial_96
size: 96
- file: "gfonts://Roboto"
id: arial_134
size: 134
- file: "gfonts://Roboto"
id: arial_128
size: 128
- file: "gfonts://Roboto"
id: arial_48
size: 48
- file: "gfonts://Roboto"
id: arial_36
size: 36
- file: "gfonts://Roboto"
id: arial_24
size: 24
- file: "gfonts://Roboto"
id: arial_12
size: 12
script:
- id: clock_update
then:
- lvgl.indicator.update:
id: second_hand
value: !lambda |-
return id(esptime).now().second;
- lvgl.indicator.update:
id: minute_hand
value: !lambda |-
return id(esptime).now().minute;
- lvgl.indicator.update:
id: hour_hand
value: !lambda |-
auto now = id(esptime).now();
return std::fmod(now.hour, 12) * 60 + now.minute;
############################################ START OF VLGL
lvgl:
theme:
arc:
scroll_on_focus: true
#group: general
slider:
scroll_on_focus: true
#group: general
button:
scroll_on_focus: true
#group: general
border_width: 2
text_font: arial_24
outline_pad: 6
pressed:
border_color: my_yellow
checked:
border_color: my_blue
focused:
border_color: my_gray
style_definitions:
- id: header_footer
bg_color: 0x2F8CD8
bg_grad_color: 0x005782
bg_grad_dir: VER
bg_opa: COVER
border_opa: TRANSP
radius: 0
pad_all: 0
pad_row: 0
pad_column: 0
border_color: 0x0077b3
text_color: 0xFFFFFF
width: 100%
height: 30
log_level: INFO
color_depth: 16
# buffer_size: 25%
bg_color: my_black
text_font: arial_24
width: 800
height: 480
align: center
pages:
- id: main_page ############################## Main Page
widgets:
- obj: ######################################### Elegant Clock - https://community.home-assistant.io/t/esphome-elegant-lvgl-clock/772365
height: 480
width: 480
align: center
pad_all: 4
bg_opa: 0%
border_width: 0
widgets:
- meter:
height: 100%
width: 100%
align: center
bg_color: my_gray
scales:
# Minor ticks
- ticks:
width: 2
count: 61
length: 10
color: my_black
range_from: 0
range_to: 60
angle_range: 360
rotation: 270
# Minuite hand
indicators:
- line:
id: minute_hand
width: 3
color: my_black
r_mod: -1
# Major ticks
- angle_range: 330
rotation: 300
range_from: 1
range_to: 12
ticks:
width: 3
count: 12
length: 20
color: my_black
# Hour hand
- angle_range: 360
rotation: 270
range_from: 0
range_to: 720
indicators:
- line:
id: hour_hand
width: 4
color: my_black
r_mod: -40
# Second hand
- angle_range: 360
rotation: 270
range_from: 0
range_to: 60
indicators:
- line:
id: second_hand
width: 2
color: my_red
r_mod: -10
- label:
align: center
y: -180
text: "12"
text_color: my_black
- label:
align: center
y: 180
text: "6"
text_color: my_black
- label:
align: center
x: -180
text: "9"
text_color: my_black
- label:
align: center
x: 180
text: "3"
text_color: my_black
########################################################### END OF VLGL
i2c:
sda: GPIO08
scl: GPIO09
scan: True
id: bus_a
# Define display
display:
- platform: rpi_dpi_rgb
id: my_display
update_interval: never
auto_clear_enabled: false
color_order: RGB
pclk_frequency: 16MHZ
dimensions:
width: 800
height: 480
de_pin:
number: 5
hsync_pin:
number: 46
ignore_strapping_warning: true
vsync_pin:
number: 3
ignore_strapping_warning: true
pclk_pin: 7
pclk_inverted: true
reset_pin:
ch422g: ch422g_hub
number: 3
hsync_back_porch: 8
hsync_front_porch: 8
hsync_pulse_width: 4
vsync_back_porch: 16
vsync_front_porch: 16
vsync_pulse_width: 4
data_pins:
red:
- 1 #r3
- 2 #r4
- 42 #r5
- 41 #r6
- 40 #r7
blue:
- 14 #b3
- 38 #b4
- 18 #b5
- 17 #b6
- 10 #b7
green:
- 39 #g2
- 0 #g3
- 45 #g4
- 48 #g5
- 47 #g6
- 21 #g7
touchscreen:
platform: gt911
id: my_touch
interrupt_pin: GPIO4
reset_pin:
ch422g: ch422g_hub
number: 1
mode: OUTPUT
Hm, dann unterhalte ich mich mal mit mir selbst 
Inzwischen habe ich da einigen Fortschritt gemacht und ein nettes Tool gefunden,
den ESPHOME Designer, der die LVGL Geschichte und zugehörige Logik deutlich vereinfacht, da man das ohne YAML tun kann 
Und mit ein bisschen Lesen des ESPHOME Doku zu LVGL und die Tips und Tricks, scheint das Ganze bald ins produktive Stadium zu wechseln.
Wtwas was mir auch gut gefallen hat, ich jedoch mangels Fachkenntnisse nicht zu laufen gebracht habe, isr ein Projekt, das das Dashboard oder im Prinzip jede Webseite in einem Headless Chrome Browser rendern lässt, nur den Diff zum letzten render überträgt und auf dem ESP32-Display als Bild dargestellt wird, Touch der Anzaige wird dann zurückgegeben und vom Headless ausgeführt usw…
Würde das jemand in eine APP gießen, wäre ich Feuer und Flamme, das würde das doch sehr langwierige Designen in LVGL total ersetzen

Naja die Hoffnung stirbt zuletzt.
Cheers Franky