đŸ“ș GeekMagic SmartTV-Ultra als ESPHome-Statusmonitor (Glances / Home Assistant)

Hab gerade auf Github deinen Workaround gelesen. Sehr schön :+1:

1 „GefĂ€llt mir“

So, zusammen mit “Clyde Stubbs” von ESP Home haben wir eine Lösung gefunden!
(Danke Clyde! :folded_hands:)

So muss die display section nun aussehen!

display:
  - platform: mipi_spi
    model: ST7789V
    dimensions: { width: 240, height: 240 }
    cs_pin: GPIO39
    dc_pin: GPIO38
    reset_pin: GPIO42
    show_test_card: true
    spi_mode: mode0
    data_rate: 40000000
    buffer_size: 50% # nur mit PSRAM sonst 25%
    invert_colors: true    
    
    transform:
      swap_xy: false
      mirror_x: false 
      mirror_y: true
        
    init_sequence:
      - [0x37, 0x00, 0x50]   # 0x50 = 80 Pixel

Die Lösung sind diese 3 Zeilen!

      mirror_y: true

Erzeugt die 180 Grad Rotation und Spiegelung der X-Achse in einem!
Und

    init_sequence:
      - [0x37, 0x00, 0x50]   # 0x50 = 80 Pixel

Korrigiert einen Versatz von 80 Pixeln die das Display mitzubringen scheint!

Viel Spass am “Holografieren” oder wie immer das heissen mag! :innocent::waving_hand:

Dann natĂŒrlich raus nehmen wenn es lĂ€uft!

1 „GefĂ€llt mir“

It works! :+1::wink:

esphome:
  name: esp32-s3-lcd-13
  friendly_name: 💡 ESP32-S3-LCD-1.3
  on_boot:
    priority: -10
    then:
      - delay: 2s
      - light.turn_on:
          id: status_led
          brightness: 100%
          red: 100%
          green: 0%
          blue: 0%
      - delay: 5s
      - light.turn_on:
          id: status_led
          brightness: 100%
          red: 0%
          green: 100%
          blue: 0%
      - delay: 5s
      - light.turn_on:
          id: status_led
          brightness: 100%
          red: 0%
          green: 0%
          blue: 100%
      - delay: 5s
      - light.turn_off: status_led


esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf
    sdkconfig_options:
      CONFIG_ESP32S3_SPIRAM_SUPPORT: "y"
      CONFIG_SPIRAM: "y"
      CONFIG_SPIRAM_USE_MALLOC: "y"
      # optional, oft hilfreich:
      CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: "y"

psram:
  mode: octal
  speed: 80MHz

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_key

ota:
  - platform: esphome
    password: !secret ota_password

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-S3-Lcd-13 Fallback Hotspot"
    password: "ablzWDoDL62f"

esp32_ble_tracker:

light:
  - platform: esp32_rmt_led_strip
    id: status_led
    pin: GPIO15
    num_leds: 1
    chipset: ws2812
    rgb_order: GRB
    default_transition_length: 0s
    gamma_correct: 1.0


i2c:
  sda: GPIO47
  scl: GPIO48
  scan: true
  frequency: 100kHz  


captive_portal:
    

font:
  - file: "gfonts://Roboto"
    id: font_big
    size: 40

  - file: "gfonts://Roboto"
    id: font_small
    size: 22


spi:
  clk_pin: GPIO40
  mosi_pin: GPIO41


display:
  - platform: mipi_spi
    model: ST7789V
    dimensions: { width: 240, height: 240 }
    cs_pin: GPIO39
    dc_pin: GPIO38
    reset_pin: GPIO42
    show_test_card: false
    spi_mode: mode0
    data_rate: 40000000
    buffer_size: 50% # Nur mit PSRAM sonst 25%
    invert_colors: true    
    
    transform:
      swap_xy: false
      mirror_x: false 
      mirror_y: true
    # Fix panel vertical offset (ST7789VW panel)    
    init_sequence:
      - [0x37, 0x00, 0x50]   # 0x50 = 80 Pixel

    update_interval: 1s
    auto_clear_enabled: true

    lambda: |-
      it.fill(Color::BLACK);

      // Rahmen
      it.rectangle(0, 0, 240, 240, Color(255,255,255));
      it.rectangle(3, 3, 234, 234, Color(80,80,80));

      // Fun-Text in der Mitte
      it.printf(120, 90, id(font_big), Color(255,255,255),
                TextAlign::CENTER, "Have Fun!");

      // Smiley
      int sx = 170;
      int sy = 150;

      it.filled_circle(sx, sy, 18, Color(255,255,0));   // Gesicht
      it.filled_circle(sx - 7, sy - 5, 2, Color(0,0,0)); // Auge links
      it.filled_circle(sx + 7, sy - 5, 2, Color(0,0,0)); // Auge rechts
      it.line(sx - 7, sy + 7, sx + 7, sy + 7, Color(0,0,0)); // Mund

      // Mini Signatur
      it.printf(10, 180, id(font_small), Color(0,200,255),
                TextAlign::LEFT, "powered by ESPHome");
2 „GefĂ€llt mir“

Eigentlich habe ich momentan gar keine Zeit fĂŒr sowas
 :joy:

3 „GefĂ€llt mir“

“Ein bisschen Spaß muss sein
.” :rofl::+1:

1 „GefĂ€llt mir“

der Anfang ist gemacht :v:

Edit:
bei der zweiten Seite musste ich erst mal zwei Sensoren aktivieren und einen suchen

2 „GefĂ€llt mir“

Mein neuer ist gestern angekommen. Dachte eigentlich wĂ€re die Touch Version, ist aber doch nur ein esp8266. Naja fĂŒr meine Zwecke reicht das auch und konnte so auch gleich meinen code vom cubic nutzen.

3 „GefĂ€llt mir“

etwas OT

der kleine GeekMagic ist jetzt aber nicht sehr sparsam mit der Leistungsaufnahme

Mein anderes Projekt liegt ja hier noch rum

OT
Ich werfe jetzt mal diesen hier mit rein
Display 8,6cm mit touch

1 „GefĂ€llt mir“

Coole Sache, das habe ich mir auch schon ein paar mal angeschaut! Wirst ja sicher berichten. :slight_smile:

nun gut :grinning: ist bestellt

1 „GefĂ€llt mir“

Ich habe die gm32-n16 n4xx Pro Version. Dazu findet man mit Google leider nicht wirklich viel.

Wie habt ihr die Firmware da rauf bekommen ? Bei der 8266er Ultra Version geht das ja ĂŒbers Webinteface. hier bei der ESP32er Version, geht es weder mit der kompilierten OTA noch mit der Factory Version.

Mit der OTA bootet er zwar, aber dann in die originale FW. Mit der Factory Version macht der ESP gar nichts.

esphome:
  name: espminidisplay2
  friendly_name: ESP MiniDisplay 2

esp32:
  board: esp32dev
  framework:
    type: esp-idf

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

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

captive_portal:


#enable HA API
api:

ota:
  - platform: esphome

#enable logger
logger:

Habe es statt esp-idf auch mit arduino versucht, aber selbes Problem.

Ja, kenne ich!
.

Geht das erste Mal nur „Mit Kabel“ zu flashen. Hast du einen entsprechenden USB-TTL Adapter? So etwas zB.!?

ich nehme da nur eine Stiftleiste und stecke die Pins nur lose in die Löcher und halte wÀhrend des flashens das nur auf Spannung/Kontakt!

schwarz ↔ GND, gelb ↔ RX, orange ↔ TX, rot ↔ 3,3V
am freien pin (unten) muss bis zum start des flashens GND anliegen!

Das braucht es nur das erste Mal, dann geht es auch mit OTA!
Bei Fragen melde dich!

2 „GefĂ€llt mir“

Danke fĂŒr die Antwort, hatte es inzwischen schon hinbekommen und wollte gerade die Lösung posten. Hier mein Copy & Paste aus Simons Forum

####### START #######

Habe die Info dann hier gefunden:

Da steht unten die Belegung fĂŒr den Adapter.

PINs on header (verified with multimeter, WROOM module pin number in parens):

    1 GND square
    2 TX (35)
    3 RX (34)
    4 3V3
    5 GPIO0 (25) - must be held low on reset
    6 RST (3)

To let the programmer automatically reset the board: Connect pad 1 (GND) to pad 5 (GPIO0).

Geflashed dann mit ESPHome Webinstaller:

Beim Verbinden mit dem PC muss man dabei den GPIO0 auf GND legen und dann auf Prepare for first use klicken. Danach kann man die Verbindung zu GND wieder lösen, also sobald man sieht das die FW geschrieben wird.

WiFi war etwas triggy, da musste ich mehrmals verbinden, da sonst immer der Fehler An error occurred. Improv Wi-Fi Serial not detected kam.

Danach wurde das GerĂ€t in HA gefunden, ich konnte es hinzufĂŒgen. In ESPHome wurde es auch gefunden und auch dort konnte ich es wie gewohnt hinzufĂŒgen.

So, jetzt geht es dann ans Eingemachte.

############ ENDE #############

Also im Endeffekt so wie Du es auch gesagt hattest @Dr.Big

Danke trotzdem fĂŒr die MĂŒhe, wird sicherlich noch anderen helfen. :slight_smile:

1 „GefĂ€llt mir“

Hier weise ich nochmal auf „ESP-Connect“ hin.

Damit geht das auch und es gibt noch wesentlich mehr Infos zum verwendeten ESP !

Wirklich „geiles“ Tool! :+1:

3 „GefĂ€llt mir“

Wie schön, dass jetzt diese Infos auch noch in diesem Thema sind. So wird es richtig rund und hilft weiter.

1 „GefĂ€llt mir“

Das ist wirklich ein cooler Tipp! Das Tool merke ich mir! :slight_smile:

Hey,
ich finde deine Anordnung einfach ĂŒbersichtilich und simpel.

Da ich zwei “separate” Akkuspeicher zu Hause habe, wĂŒrde ich gerne beide als “Balkenanzeige” untereinander anzeigen lassen.

Hab schon ein bisschen selber probiert, bekomme aber keine zweite SOC Anzeige hin.

Ich wÀre die so dankbar, wenn du mir bei dem code helfen könntest.

Meine Wunschvorstellung wÀre folgende:

Oben links und oben rechts in den Ecken jeweils die Temperaturanzeige (fĂŒr die beiden Speicher)

Dazwischen (also auch ganz oben / mittig zwischen beiden Temps) die WLAN Balken

Uhrzeit kann weg

SOC 1
darunter
SOC2

Und dann zwei oder drei Zeilen fĂŒr weitere Parameter

WĂ€re das ein großer Aufwand fĂŒr dich ?

Danke und Gruß

Hi, sollte eigentlich nicht so schwer sein. Du musst nur im lambda Teil die Anzeige von Soc1 duplizieren, dann hast du sozusagen zwei StĂŒck. Beim zweiten mĂŒssen dann natĂŒrlich die Koordinaten angepasst werden, so dass sie ĂŒbereinander dargestellt werden.

Ich schaue mir das mal an.

Ich habe natĂŒrlich vorher schon etwas probiert.

Die Position von der ersten SOC Anzeige hab ich nach oben verschoben bekommen. Die Zweite (mit der duplizierung im Lambda Teil) bekomme ich einfach nicht hin. Hatte den gleichen Gedanken, aber bekomme leider keine zweite Anzeige hin. Ich weiß nicht woran es scheitert