POC - TouchDisplay ohne ClosedSource

Hi,

Ich bin gerade am “POC”en eines Displays. Hatte da ein interessantes in einigen Stores gefunden

Waveshare ESP32S3 - 7Inch TouchDisplay - mit UART, CAN, I2C, BT, WiFi, LVGL

Da ich, im moment, “nur” ein CM5 habe, habe ich Anbindung an, 1Wire, CAN ( MCP2515 ) , LageSensor MPU6050 ) manuell nachgerüstet ( alles erstmal nur zum evaluieren und testen ).

Das Display hab ich aktuell mit esphome aufgesetzt, die Connection zum PKW-mqtt steht bereits.

Ziel ist es, ein Display zu bekommen, welches ohne ClosedSource funktioniert, einfach modifiziert werden kann und ohne “LAN” agieren kann.

Dafür läuft bereits auf dem PI ein zweiter komplett getrennter NR, in dem dann mein kompletter Stack, getrennt von PKW NR laufen wird.

Sollte Interesse bestehen, kann ich gerne meinen aktuellen Stand hier regelmäßig zur Verfügung stellen.

Grüße

Chris

4 Likes

Hallo Chris,

das hört sich interesannt an,

Wir bekommem demnächst unser (closedsource)Display, das wollen wir auf jeden fall verbauen.

Aber ich möchte an diversen Stellen noch weitere kleine verbauen. Zb. eins vorne am Armaturenbrett z.b. das von @WulleOnTour und eins hinten im Technikkeller.

Das von @WulleOnTour ist auch ein sehr interessantes Projekt!!! Hast dir das mal angeschaut?

Gruß

Roland

Hi,

Nachdem ich es etwas holprig in Betrieb genommen habe ( aufgrund der canbus/Display und Touch config des Displays). Hab ich es per Esphome komplett zum laufen bekommen.

Hier n Bild vom aktuellen Stand des Displays:

Die Daten hier aktuell kommen direkt noch per mqtt subscribe rein

  • Temp2 vom PKW MQTT ( Außen ( aktuell nur per #mosquitto_pub -h 127.0.0.1 -t “pkw/temp2/temp” -m “-2”)
  • Temp1 vom PKW MQTT ( Innen; ds18b20 - Sensor 1 )

Die picons rechts oben sind aktuell noch statisch ohne Logik

  • WeltMurmel → Ist das böse Internet verbunden
  • LAN - ist der CANBus verbunden, bzw kommen Nachrichten an
  • WiFi - ( Ja ) / ( Nein ) / ( vllt )

Das Display bekommt bereits alle Daten per eigenen NR über can

Als Alternative, wüde auch jegliche Komm über UART gehen, Connector wäre auf dem Board.

Initialisierung ist sehr schnell.

Füge gleich noch n Screenshot vom NR Flow dazu.

p.s.

bitte habt Nachsicht, ich bin nicht mit Farbgeschmack oder grafischer Kreativität gesegnet

Es gibt ein LVGL “Designer”:

Designer den ich verwendet habe

man kann auch die lvgl.yaml Datei dort importieren und “weiter” desig”nieren”.

Wenn jemand “bock” hat, sich den - meinen - halb-zusammen gesuchten esp-home Code

man anzuschauen:

Hier der Griff auf mein GIT-Repo; bitte im Branch - Devel - schauen

[14:22:04.335][I][app:215]: ESPHome version 2026.2.1 compiled on 2026-03-06 13:42:59 +0100
[14:22:04.338][I][app:222]: ESP32 Chip: ESP32-S3 rev0.2, 2 core(s)
[14:22:04.338][C][ch422g:036]: CH422G:
[14:22:04.341][C][ch422g:037]:   Address: 0x00
[14:22:04.345][C][logger:237]: Logger:
[14:22:04.345][C][logger:237]:   Max Level: DEBUG
[14:22:04.345][C][logger:237]:   Initial Level: DEBUG
[14:22:04.345][C][logger:244]:   Log Baud Rate: 115200
[14:22:04.345][C][logger:244]:   Hardware UART: USB_SERIAL_JTAG
[14:22:04.348][C][logger:254]:   Task Log Buffer Size: 768 bytes
[14:22:04.371][C][i2c.idf:093]: I2C Bus:
[14:22:04.371][C][i2c.idf:094]:   SDA Pin: GPIO8
[14:22:04.371][C][i2c.idf:094]:   SCL Pin: GPIO9
[14:22:04.371][C][i2c.idf:094]:   Frequency: 400000 Hz
[14:22:04.372][C][i2c.idf:104]:   Recovery: bus successfully recovered
[14:22:04.372][C][i2c.idf:114]: Results from bus scan:
[14:22:04.372][C][i2c.idf:120]: Found device at address 0x20
[14:22:04.378][C][i2c.idf:120]: Found device at address 0x21
[14:22:04.378][C][i2c.idf:120]: Found device at address 0x22
[14:22:04.378][C][i2c.idf:120]: Found device at address 0x23
[14:22:04.380][C][i2c.idf:120]: Found device at address 0x24
[14:22:04.384][C][i2c.idf:120]: Found device at address 0x25
[14:22:04.384][C][i2c.idf:120]: Found device at address 0x26
[14:22:04.386][C][i2c.idf:120]: Found device at address 0x27
[14:22:04.389][C][i2c.idf:120]: Found device at address 0x30
[14:22:04.389][C][i2c.idf:120]: Found device at address 0x31
[14:22:04.392][C][i2c.idf:120]: Found device at address 0x32
[14:22:04.395][C][i2c.idf:120]: Found device at address 0x33
[14:22:04.395][C][i2c.idf:120]: Found device at address 0x34
[14:22:04.397][C][i2c.idf:120]: Found device at address 0x35
[14:22:04.401][C][i2c.idf:120]: Found device at address 0x36
[14:22:04.401][C][i2c.idf:120]: Found device at address 0x37
[14:22:04.404][C][i2c.idf:120]: Found device at address 0x38
[14:22:04.407][C][i2c.idf:120]: Found device at address 0x39
[14:22:04.407][C][i2c.idf:120]: Found device at address 0x3A
[14:22:04.410][C][i2c.idf:120]: Found device at address 0x3B
[14:22:04.412][C][i2c.idf:120]: Found device at address 0x3C
[14:22:04.412][C][i2c.idf:120]: Found device at address 0x3D
[14:22:04.414][C][i2c.idf:120]: Found device at address 0x3E
[14:22:04.416][C][i2c.idf:120]: Found device at address 0x3F
[14:22:04.416][C][i2c.idf:120]: Found device at address 0x5D
[14:22:04.435][C][:129]: RPI_DPI_RGB LCD
[14:22:04.438][C][rpi_dpi_rgb:130]:   Height: 480
[14:22:04.438][C][rpi_dpi_rgb:130]:   Width: 800
[14:22:04.438][C][rpi_dpi_rgb:152]:   DE Pin: GPIO5
[14:22:04.442][C][rpi_dpi_rgb:152]:   Reset Pin: EXIO3 via CH422G
[14:22:04.443][C][rpi_dpi_rgb:141]:   Data pin 0: GPIO48
[14:22:04.443][C][rpi_dpi_rgb:141]:   Data pin 1: GPIO47
[14:22:04.446][C][rpi_dpi_rgb:141]:   Data pin 2: GPIO21
[14:22:04.449][C][rpi_dpi_rgb:141]:   Data pin 3: GPIO1
[14:22:04.449][C][rpi_dpi_rgb:141]:   Data pin 4: GPIO2
[14:22:04.454][C][rpi_dpi_rgb:141]:   Data pin 5: GPIO42
[14:22:04.469][C][rpi_dpi_rgb:141]:   Data pin 6: GPIO41
[14:22:04.469][C][rpi_dpi_rgb:141]:   Data pin 7: GPIO40
[14:22:04.474][C][rpi_dpi_rgb:141]:   Data pin 8: GPIO14
[14:22:04.474][C][rpi_dpi_rgb:141]:   Data pin 9: GPIO38
[14:22:04.474][C][rpi_dpi_rgb:141]:   Data pin 10: GPIO18
[14:22:04.474][C][rpi_dpi_rgb:141]:   Data pin 11: GPIO17
[14:22:04.475][C][rpi_dpi_rgb:141]:   Data pin 12: GPIO10
[14:22:04.475][C][rpi_dpi_rgb:141]:   Data pin 13: GPIO39
[14:22:04.475][C][rpi_dpi_rgb:141]:   Data pin 14: GPIO0
[14:22:04.475][C][rpi_dpi_rgb:141]:   Data pin 15: GPIO45
[14:22:04.475][C][uptime.sensor:017]: Uptime Sensor 'Uptime Sensor'
[14:22:04.475][C][uptime.sensor:017]:   State Class: 'total_increasing'
[14:22:04.475][C][uptime.sensor:017]:   Unit of Measurement: 's'
[14:22:04.475][C][uptime.sensor:017]:   Accuracy Decimals: 0
[14:22:04.475][C][uptime.sensor:163]:   Device Class: 'duration'
[14:22:04.475][C][uptime.sensor:157]:   Icon: 'mdi:timer-outline'
[14:22:04.475][C][uptime.sensor:033]:   Type: Seconds
[14:22:04.502][C][canbus:020]: config standard id=0x001
[14:22:04.502][C][switch.gpio:092]: GPIO Switch 'backlight'
[14:22:04.502][C][switch.gpio:092]:   Restore Mode: always ON
[14:22:04.502][C][switch.gpio:152]:   Pin: EXIO2 via CH422G
[14:22:04.506][C][switch.gpio:092]: GPIO Switch 'en_display'
[14:22:04.506][C][switch.gpio:092]:   Restore Mode: always ON
[14:22:04.545][C][switch.gpio:152]:   Pin: EXIO5 via CH422G
[14:22:04.545][C][light:091]: Light 'Display Backlight'
[14:22:04.547][C][light:094]:   Default Transition Length: 1.0s
[14:22:04.547][C][light:094]:   Gamma Correct: 2.80
[14:22:04.560][C][psram:016]: PSRAM:
[14:22:04.560][C][psram:019]:   Available: YES
[14:22:04.574][C][psram:021]:   Size: 8192 KB
[14:22:04.574][C][gt911.touchscreen:139]: GT911 Touchscreen:
[14:22:04.574][C][gt911.touchscreen:140]:   Address: 0x5D
[14:22:04.581][C][gt911.touchscreen:152]:   Interrupt Pin: GPIO4
[14:22:04.581][C][gt911.touchscreen:152]:   Reset Pin: EXIO1 via CH422G
[14:22:04.581][C][copy.sensor:017]: Copy Sensor 'Wifi Strength'
[14:22:04.581][C][copy.sensor:017]:   State Class: 'measurement'
[14:22:04.581][C][copy.sensor:017]:   Unit of Measurement: '%'
[14:22:04.581][C][copy.sensor:017]:   Accuracy Decimals: 0
[14:22:04.583][C][copy.sensor:157]:   Icon: 'mdi:wifi'
[14:22:04.605][C][status:016]: Status Binary Sensor 'Online'
[14:22:04.605][C][status:163]:   Device Class: 'connectivity'
[14:22:04.621][C][wifi_info:017]: IP Address 'IP Address'
[14:22:04.633][C][wifi_info:157]:   Icon: 'mdi:ip-network'
[14:22:04.633][D][binary_sensor:044]: 'Online' >> ON
[14:22:04.653][C][lvgl:103]: LVGL:
[14:22:04.653][C][lvgl:103]:   Display width/height: 800 x 480
[14:22:04.653][C][lvgl:103]:   Buffer size: 100%
[14:22:04.653][C][lvgl:103]:   Rotation: 0
[14:22:04.653][C][lvgl:103]:   Draw rounding: 2
[14:22:04.676][C][captive_portal:134]: Captive Portal:
[14:22:04.676][C][wifi:1450]: WiFi:
[14:22:04.676][C][wifi:1450]:   Local MAC: 20:6E:F1:A9:9F:BC
[14:22:04.676][C][wifi:1450]:   Connected: YES
[14:22:04.678][C][wifi:1202]:   IP Address: 192.168.220.66
[14:22:04.678][C][wifi:1213]:   SSID: 'cimp-wifi'
[14:22:04.678][C][wifi:1213]:   BSSID: 70:A7:41:D2:B2:11
[14:22:04.678][C][wifi:1213]:   Hostname: '7itouchdisplay'
[14:22:04.678][C][wifi:1213]:   Signal strength: -49 dB ▂▄▆█
[14:22:04.678][C][wifi:1213]:   Channel: 6
[14:22:04.678][C][wifi:1213]:   Subnet: 255.255.255.0
[14:22:04.678][C][wifi:1213]:   Gateway: 192.168.220.1
[14:22:04.678][C][wifi:1213]:   DNS1: 192.168.220.1
[14:22:04.678][C][wifi:1213]:   DNS2: 0.0.0.0
[14:22:04.692][C][web_server:424]: Web Server:
[14:22:04.692][C][web_server:424]:   Address: 7itouchdisplay.local:80
[14:22:04.697][C][sntp:059]: SNTP Time:
[14:22:04.700][C][sntp:062]:   Server 0: '0.pool.ntp.org'
[14:22:04.700][C][sntp:062]:   Server 1: '1.pool.ntp.org'
[14:22:04.702][C][sntp:062]:   Server 2: '2.pool.ntp.org'
[14:22:04.706][C][time:028]: Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[14:22:04.706][C][time:031]: Current time: 2026-03-06 14:22:04
[14:22:04.712][C][esphome.ota:075]: Over-The-Air updates:
[14:22:04.712][C][esphome.ota:075]:   Address: 7itouchdisplay.local:3232
[14:22:04.712][C][esphome.ota:075]:   Version: 2
[14:22:04.726][C][esphome.ota:082]:   Password configured
[14:22:04.726][C][safe_mode:022]: Safe Mode:
[14:22:04.726][C][safe_mode:022]:   Successful after: 60s
[14:22:04.726][C][safe_mode:022]:   Invoke after: 10 attempts
[14:22:04.726][C][safe_mode:022]:   Duration: 300s
[14:22:04.729][C][safe_mode:039]:   Bootloader rollback: supported
[14:22:04.729][D][canbus:033]: send standard id=0x001 rtr=FALSE size=3
[14:22:04.733][C][web_server.ota:238]: Web Server OTA
[14:22:04.748][C][api:237]: Server:
[14:22:04.748][C][api:237]:   Address: 7itouchdisplay.local:6053
[14:22:04.748][C][api:237]:   Listen backlog: 4
[14:22:04.748][C][api:237]:   Max connections: 8
[14:22:04.752][C][api:244]:   Noise encryption: YES
[14:22:04.752][C][mqtt:182]: MQTT:
[14:22:04.752][C][mqtt:182]:   Server Address: 192.168.220.86:1883 (192.168.220.86)
[14:22:04.752][C][mqtt:182]:   Username: ''
[14:22:04.752][C][mqtt:182]:   Client ID: '7itouchdisplay'
[14:22:04.752][C][mqtt:182]:   Clean Session: NO
[14:22:04.754][C][mqtt:193]:   Discovery IP enabled
[14:22:04.757][C][mqtt:196]:   Discovery prefix: 'homeassistant'
[14:22:04.757][C][mqtt:196]:   Discovery retain: NO
[14:22:04.757][C][mqtt:201]:   Topic Prefix: '7itouchdisplay'
[14:22:04.761][C][mqtt:203]:   Log Topic: '7itouchdisplay/debug'
[14:22:04.779][C][mqtt:206]:   Availability: '7itouchdisplay/status'
[14:22:04.779][C][wifi_signal.sensor:017]: WiFi Signal 'Wifi Signal dB'
[14:22:04.779][C][wifi_signal.sensor:017]:   State Class: 'measurement'
[14:22:04.779][C][wifi_signal.sensor:017]:   Unit of Measurement: 'dBm'
[14:22:04.779][C][wifi_signal.sensor:017]:   Accuracy Decimals: 0
[14:22:04.781][C][wifi_signal.sensor:163]:   Device Class: 'signal_strength'
[14:22:04.781][C][mdns:177]: mDNS:
[14:22:04.781][C][mdns:177]:   Hostname: 7itouchdisplay
[14:22:04.797][C][mqtt_subscribe.sensor:017]: MQTT Subscribe 'PKW_Temp3'
[14:22:04.797][C][mqtt_subscribe.sensor:017]:   State Class: ''
[14:22:04.797][C][mqtt_subscribe.sensor:017]:   Unit of Measurement: ''
[14:22:04.797][C][mqtt_subscribe.sensor:017]:   Accuracy Decimals: 1
[14:22:04.800][C][mqtt_subscribe.sensor:032]:   Topic: pkw/temp3/temp
[14:22:04.822][C][mqtt_subscribe.sensor:017]: MQTT Subscribe 'PKW_Temp4'
[14:22:04.822][C][mqtt_subscribe.sensor:017]:   State Class: ''
[14:22:04.822][C][mqtt_subscribe.sensor:017]:   Unit of Measurement: ''
[14:22:04.822][C][mqtt_subscribe.sensor:017]:   Accuracy Decimals: 1
[14:22:04.822][C][mqtt_subscribe.sensor:032]:   Topic: pkw/temp4/temp
[14:22:04.842][C][mqtt.sensor:027]: MQTT Sensor 'Wifi Strength':
[14:22:04.885][C][mqtt.sensor:043]:   State Topic: '7itouchdisplay/sensor/wifi_strength/state'
[14:22:04.885][C][mqtt.light:088]: MQTT Light 'Display Backlight':
[14:22:04.885][C][mqtt.light:043]:   State Topic: '7itouchdisplay/light/display_backlight/state'
[14:22:04.885][C][mqtt.light:045]:   Command Topic: '7itouchdisplay/light/display_backlight/command'
[14:22:04.885][C][mqtt.binary_sensor:021]: MQTT Binary Sensor 'Online':
[14:22:04.900][C][mqtt.binary_sensor:043]:   State Topic: '7itouchdisplay/status'
[14:22:04.900][C][mqtt.text_sensor:030]: MQTT Text Sensor 'IP Address':
[14:22:04.900][C][mqtt.text_sensor:043]:   State Topic: '7itouchdisplay/sensor/ip_address/state'
[14:22:04.920][C][mqtt_subscribe.sensor:017]: MQTT Subscribe 'PKW_Temp1'
[14:22:04.920][C][mqtt_subscribe.sensor:017]:   State Class: ''
[14:22:04.920][C][mqtt_subscribe.sensor:017]:   Unit of Measurement: ''
[14:22:04.920][C][mqtt_subscribe.sensor:017]:   Accuracy Decimals: 1
[14:22:04.943][C][mqtt_subscribe.sensor:032]:   Topic: pkw/temp1/temp
[14:22:04.943][C][mqtt_subscribe.sensor:017]: MQTT Subscribe 'PKW_Temp2'
[14:22:04.943][C][mqtt_subscribe.sensor:017]:   State Class: ''
[14:22:04.943][C][mqtt_subscribe.sensor:017]:   Unit of Measurement: ''
[14:22:04.943][C][mqtt_subscribe.sensor:017]:   Accuracy Decimals: 1
[14:22:04.946][C][mqtt_subscribe.sensor:032]:   Topic: pkw/temp2/temp
[14:22:05.511][D][canbus:078]: received can message (#1) std can_id=0x701 size=1
[14:22:05.514][D][sensor:118]: 'PKW_Temp1' >> 22.4
[14:22:09.728][D][canbus:033]: send standard id=0x001 rtr=FALSE size=3
[14:22:14.730][D][canbus:033]: send standard id=0x001 rtr=FALSE size=3
[14:22:19.732][D][canbus:033]: send standard id=0x001 rtr=FALSE size=3
[14:22:21.217][D][canbus:078]: received can message (#1) std can_id=0x601 size=1
[14:22:21.226][D][canbus:078]: received can message (#1) std can_id=0x602 size=1
[14:22:21.228][D][canbus:078]: received can message (#2) std can_id=0x603 size=1
[14:22:21.237][D][canbus:078]: received can message (#1) std can_id=0x604 size=1
[14:22:21.330][D][canbus:078]: received can message (#1) std can_id=0x701 size=1
[14:22:21.381][D][sensor:118]: 'PKW_Temp1' >> 22.4
[14:22:24.734][D][canbus:033]: send standard id=0x001 rtr=FALSE size=3
[14:22:25.489][D][sensor:118]: 'Wifi Signal dB' >> -50 dBm
[14:22:25.490][D][sensor:118]: 'Wifi Strength' >> 100 %
[14:22:26.920][D][sensor:118]: 'Uptime Sensor' >> 2284 s
[14:22:29.731][D][canbus:033]: send standard id=0x001 rtr=FALSE size=3

Wenn jemand kein CAN möchte, nur über mqtt würde es auch gehen..

Grüße

Chris

1 Like

Noch als Info.

Das Display kostet

bei Ali < 42€

Beim auktionshaus des vertrauens 60€

Beim Fluss-OnlineHandel < 55 €

Sorry @Pekaway aber günstiger und flexibler als das von euch angebotene.

Hi,

dafür brauchst du dich wirklich nicht zu entschuldigen. Ganz im Gegenteil – wir freuen uns über solche Projekte sehr. Genau aus diesem Grund haben wir den offenen Ansatz gewählt: damit Leute Dinge ausprobieren, eigene Ideen umsetzen und ihre Ergebnisse teilen können.

Solche Experimente und Proof-of-Concepts bringen oft spannende Perspektiven rein und helfen der ganzen Community weiter. Also gerne weitermachen und viel Erfolg bei deinen Entwicklungen – das sieht auf jeden Fall schon sehr vielversprechend aus.

Wir selbst haben auch schon in eine ähnliche Richtung geschaut und finden zum Beispiel den ESP32-P4 mit seinen Möglichkeiten für Displays und HMIs ziemlich spannend. Allerdings haben wir aktuell ein paar andere Themen im Fokus und stecken gerade mitten in den Vorbereitungen für unsere nächste Keynote im April, deshalb fehlt uns im Moment leider etwas die Zeit, da tiefer einzusteigen.

Aber solche Ansätze sehen wir wirklich gerne – also unbedingt weiter experimentieren und uns auf dem Laufenden halten. Danke :+1: :folded_hands:

Viele Grüße

Hi Karl,

OpenSource lebt durch das Wort open ..

Wenn ihr mir n Tipp gebt, welches Board/Display das ist, kann ich ja mal schnuppern und auch hier mal n poc starten. Jedes Display, was man sich selber anpassen kann, ist besser als jede closed source.

( ein p4 mit 10” Display hab ich gefunden, kann ja mal probieren das direkt einzubinden )

Vllt noch ein kleiner “request”. Ein pi-hat, das die wichtigsten Pins nach außen führt, um einfach eine Entwicklungsumgebung zu bekommen ( ohne Chips, also nur die sockel.. z.b mpu6050 ( inkl jumper für die adressänderung ) , ds1820, tanksensor etc steck- oder schraubbar). Zusätzlich 300€ für’n core pcb plus pi muss man auch mal locker haben. Bin zwar mit meiner aktuellen Lösung recht gut aufgestellt und update sicher. Etwas originales aber gibt mit die Sicherheit das keine Kollisionen entstehen.

Grütze

Chris