• Du musst dich registrieren, bevor du Beiträge verfassen kannst. Klicke auf Jetzt registrieren!, um den Registrierungsprozess zu starten. Registrierte User surfen werbefrei, können Suchen durchführen und sehen die volle Darstellung des Forums mit vielen anderen Unterforen!!!

Otto Wilde G32 | Smarthome

Wer das sehr schöne Gehäuse von Steffen (s.ochs) verwendet, der hätte es sicher auch gerne, wenn sich der Displayinhalt automatisch mit der 'Drehung' des Gehäuses (flach, aufrecht) mitdreht.
Ich habe mich gestern mal damit beschäftigt. Zuerst einen 'Tilt-Sensor' eingebaut (ein einfaches mechanisches Ding <1€ mit einer Kugel). Dann an die IOs 17 und 18 angeschlossen und den passenden Code eingebaut.
Die Detektion der Drehung klappt, der Zustand wird im Debug-Log ausgegeben.
ABER: der Stand der Dinge beim JC3248W535C Display und dem verwendeten Controller mit Quad-SPI Schnittstelle scheint zu sein, dass hierfür momentan noch kein Driver für eine Displaydrehung zur Laufzeit existiert und dieser anscheinend schwer zu realisieren ist!
Ich verstehe den Grund nicht so ganz, weil man ja (vor dem Kompilieren) die Drehung des Displays auf 90° oder 270° setzen kann und das Display auch dementsprechend den Inhalt korrekt gedreht darstellt. Aber 'on the fly' zur Laufzeit ist das wohl nicht möglich ...
Soviel zum Stand der Dinge.

Grüße, Jörg.
Könnte man das ganze auch evtl. auch so lösen das es statt zwei, vier Anzeigen zum wischen gibt ?
Zwei davon dann umgedreht?
 
Könnte man das ganze auch evtl. auch so lösen das es statt zwei, vier Anzeigen zum wischen gibt ?
Zwei davon dann umgedreht?
Das geht leider nicht. Wenn man sich für eine Orientierung entschieden hat, dann werden alle Widgets (Text, Arcs, etc.) auch in dieser Orientierung gerendert.
Bin bei meinen Versuchen jetzt so weit, dass der Touchscreen gedreht wird! Aber leider nicht der (Anzeige-)Screen 😐
 
Soviel zum Stand der Dinge
@JBecker der Parameter "rotation" dürfte ein Compiler Parameter sein. Vermutlich muss man alle angebenen Koordinaten in den Objekten transformieren. Hast du sowas schon versucht? Ich habe deinen Code leider bisher nur überflogen (ist schon ordentlich groß geworden). Als mögliche Idee:

Eine globale Variable mit dem Inhalt der Drehrichtung. Diese veränderst du durch den GPIO.
Code:
globals:
  - id: rotation_mode
    type: int
    restore_value: yes
    initial_value: '90'

Jedes grafische Objekt bekommt dann variable x/y-Werte:
Code:
lambda: |-
      auto rot = id(rotation_mode);

      // Hilfsfunktion für Koordinaten-Umrechnung
      auto transform = [&](int x, int y) -> std::pair<int,int> {
        if (rot == 90) {
          return {x, y};
        } else { // 270°
          return {320 - x, 480 - y};
        }
      };

      // Beispielausgaben
      {
        auto [tx, ty] = transform(40, 40);
        it.print(tx, ty, id(my_font), "Text oben links");
      }

Allerdings weiß ich nicht, wie sich das auf die Touch-Objekte auswirkt. Eventuell müssen die auch gedreht werden.
 
@JBecker der Parameter "rotation" dürfte ein Compiler Parameter sein. Vermutlich muss man alle angebenen Koordinaten in den Objekten transformieren. Hast du sowas schon versucht? Ich habe deinen Code leider bisher nur überflogen (ist schon ordentlich groß geworden). Als mögliche Idee:

Eine globale Variable mit dem Inhalt der Drehrichtung. Diese veränderst du durch den GPIO.
Code:
globals:
  - id: rotation_mode
    type: int
    restore_value: yes
    initial_value: '90'

Jedes grafische Objekt bekommt dann variable x/y-Werte:
Code:
lambda: |-
      auto rot = id(rotation_mode);

      // Hilfsfunktion für Koordinaten-Umrechnung
      auto transform = [&](int x, int y) -> std::pair<int,int> {
        if (rot == 90) {
          return {x, y};
        } else { // 270°
          return {320 - x, 480 - y};
        }
      };

      // Beispielausgaben
      {
        auto [tx, ty] = transform(40, 40);
        it.print(tx, ty, id(my_font), "Text oben links");
      }

Allerdings weiß ich nicht, wie sich das auf die Touch-Objekte auswirkt. Eventuell müssen die auch gedreht werden.
Sehr gut, probiere ich nachher mal aus!
Der Touchscreen 'dreht' sich schon!
 
Erst einmal vielen Dank an alle, die sich mit der Entwicklung und Ausarbeitung hier beschäftigen :respekt::respekt:
Habe mir jetzt auch alles bestellt, was benötigt wird, Display sollte die nächste Woche kommen, Akku , Summer und Kabel kommen am Samstag.
Mir fehlt dann nur noch das Gehäuse. Leider hat mein Nachbar seinen Drucker gehimmelt und fällt somit für den Druck raus.
Gibts hier jemanden, der mir das gegen eine Aufwandsentschädigung drucken könnte?
VG
Thomas
 
Erst einmal vielen Dank an alle, die sich mit der Entwicklung und Ausarbeitung hier beschäftigen :respekt::respekt:
Habe mir jetzt auch alles bestellt, was benötigt wird, Display sollte die nächste Woche kommen, Akku , Summer und Kabel kommen am Samstag.
Mir fehlt dann nur noch das Gehäuse. Leider hat mein Nachbar seinen Drucker gehimmelt und fällt somit für den Druck raus.
Gibts hier jemanden, der mir das gegen eine Aufwandsentschädigung drucken könnte?
VG
Thomas
@s.ochs kann ich nur empfehlen. Hab die Gehäuse bestellt, besser können die gar nicht passen, superschnell und der Kontakt war echt gut

VG

Thomas
 
@JBecker der Parameter "rotation" dürfte ein Compiler Parameter sein. Vermutlich muss man alle angebenen Koordinaten in den Objekten transformieren. Hast du sowas schon versucht? Ich habe deinen Code leider bisher nur überflogen (ist schon ordentlich groß geworden). Als mögliche Idee:

Eine globale Variable mit dem Inhalt der Drehrichtung. Diese veränderst du durch den GPIO.
Code:
globals:
  - id: rotation_mode
    type: int
    restore_value: yes
    initial_value: '90'

Jedes grafische Objekt bekommt dann variable x/y-Werte:
Code:
lambda: |-
      auto rot = id(rotation_mode);

      // Hilfsfunktion für Koordinaten-Umrechnung
      auto transform = [&](int x, int y) -> std::pair<int,int> {
        if (rot == 90) {
          return {x, y};
        } else { // 270°
          return {320 - x, 480 - y};
        }
      };

      // Beispielausgaben
      {
        auto [tx, ty] = transform(40, 40);
        it.print(tx, ty, id(my_font), "Text oben links");
      }

Allerdings weiß ich nicht, wie sich das auf die Touch-Objekte auswirkt. Eventuell müssen die auch gedreht werden.
Habe noch einmal darüber nachgedacht.
Das wird nicht funktionieren. Wie ich schon in meiner Antwort an Marc geschrieben habe, behalten alle Widgets ihre Orientierung bei! Sie einfach auf 'gespiegelten' Koordinaten zu platzieren ändert daran nichts.
Nein, die Drehung muss direkt im Treiber stattfinden und da ist es momentan scheinbar noch nicht funktionierend implementiert!
Grüße, Jörg.
 
Hallo zusammen,

wollte mal meine alternative zum 3D Druck Gehäuse kurz zeigen. Hab hinten ans Display eine Magsafe Folie geklebt und mit einer Handyhalterung als Arm nutze ich es als festes Temperatur Display. Hab vor das ich es langfristig an die Rückwand der Module fixiere, sobald ich den perfekten Ort gefunden habe.
Als Stromzufuhr habe ich ein 4m usb-c Kabel verwendet das in den Modulen mit verlegt ist.
Danke an @JBecker hinsichtlich der Programmierung.
🍻
 

Anhänge

  • 1000069691.jpg
    1000069691.jpg
    195,1 KB · Aufrufe: 119
  • IMG_20250912_151811.jpg
    IMG_20250912_151811.jpg
    425,4 KB · Aufrufe: 132
  • IMG_20250912_125730.jpg
    IMG_20250912_125730.jpg
    564 KB · Aufrufe: 126
Ich lese hier schon immer still und heimlich mit. Mega was hier z.T. in Zusammenarbeit entwickelt wurde. Bei mir stand schon lange fest, dass es diese Lösung wird. Mit dem Smartphone ist mir irgendwie zu lästig. Ich werde sicherlich die Tage/Wochen mir mal alle möglichen Komponenten besorgen.
@Gludo : Da du mehr oder weniger am aktuellsten die Sachen geordert hast, würdest Du uns teilhaben lassen welche Komponenten es waren und wo bestellt ?
@s.ochs : Höre ich heraus, dass Du ein Retter in der Not bist, wenn es um fehlenden 3D Drucker geht ? :)
 
Das Display bekommst Du von Ali Express oder Amazon. Bei Amazon ist es halt um einiges Teurer, bei Ali dauert es etwas länger.
3D Drucken ist nicht das Problem, das Gehäuse passt perfekt, zur Not kann ich auch dazu beitragen.
Den, die Akkus habe ich bei Ama..... gekauft, Link anbei https://www.amazon.de/dp/B0F18ST3K5?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_1&th=1
Sollte der Link gegen irgendwas verstoßen dann bitte entfernen.
Habe mir den Link vom Display mal rausgesucht: https://de.aliexpress.com/item/1005...st_main.4.7ed05c5f6fh8WI&gatewayAdapt=glo2deu
Und von Amazon: https://www.amazon.de/dp/B0DGXRZ58V?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_2
Preis wenn wieder lieferbar bei Ama... ist 35,99€
 
@dan0r
klar gerne
Wobei noch nix geliefert ist, kann also nicht sagen, ob ok oder nicht.
Display
Akku: https://www.amazon.de/dp/B0F18B2DDW?ref=ppx_yo2ov_dt_b_fed_asin_title&th=1
Piepser: https://www.amazon.de/dp/B09RFH1T8J?ref=ppx_yo2ov_dt_b_fed_asin_title
Kabel: https://www.amazon.de/dp/B0DX26RJQB?ref=ppx_yo2ov_dt_b_fed_asin_title
Es gab die Kabel und Piepser nur in den großen Mengen 🫣
Wenn einer noch was davon braucht, kann ich das gerne zum Selbstkostenpreis plus Porto verschicken
Aber wie gesagt, alles noch nicht geliefert
 
@s.ochs : Höre ich heraus, dass Du ein Retter in der Not bist, wenn es um fehlenden 3D Drucker geht ? :)
Wer in seinem Umfeld niemanden mit 3D-Drucker hat, kann sich gerne einfach bei mir melden.
 
Habe noch einmal darüber nachgedacht.
Das wird nicht funktionieren. Wie ich schon in meiner Antwort an Marc geschrieben habe, behalten alle Widgets ihre Orientierung bei! Sie einfach auf 'gespiegelten' Koordinaten zu platzieren ändert daran nichts.
Nein, die Drehung muss direkt im Treiber stattfinden und da ist es momentan scheinbar noch nicht funktionierend implementiert!
Grüße, Jörg.
Hallo Jörg, könnte man einen zweiten gedrehten Screen anlegen? Und dann einfach nur zwischen den Screens wechseln. So wie du es jetzt auch schon machst, mit den beiden Anzeigemöglichkeiten. Hier würde man statt zu wischen, über den Lagesensor umschalten. Macht den Code aber leider noch größer, da man in Summe ja auch vier Screens bräuchte (2x2).
 
Das geht leider nicht. Wenn man sich für eine Orientierung entschieden hat, dann werden alle Widgets (Text, Arcs, etc.) auch in dieser Orientierung gerendert.
Bin bei meinen Versuchen jetzt so weit, dass der Touchscreen gedreht wird! Aber leider nicht der (Anzeige-)Screen 😐
Ich sehe gerade, das hast du wohl schon versucht.
 
Display
Akku
Piepser
Kabel
Es gab die Kabel und Piepser nur in den großen Mengen 🫣
Wenn einer noch was davon braucht, kann ich das gerne zum Selbstkostenpreis plus Porto verschicken
Ja, das ist ärgerlich, dass man die Sachen nur in relativ großen Mengen bekommt. Hatte schon mal überlegt, einen 'Bausatz' anzubieten, aber ich bin eben häufig im Urlaub und möchte auch kein Geld damit verdienen. Und dann wird das schnell zu einer Belastung.
Finde ich sehr gut, dass Du so etwas in der Art anbietest!
Grüße, Jörg.
 
Ich sehe gerade, das hast du wohl schon versucht.
Ja, leider. Im Augenblick gibt es keine Lösung.
Habe schon im Sourcecode von ESPHome nachgesehen. Dort ist die Software-Drehung eigentlich korrekt implementiert. Keine Ahnung, warum das dann nicht funktioniert ... ???
 
Ich habe soeben eine neue V1.3.0 auf Github abgelegt (für beide Versionen BT und HACS).
In dieser Version sind mal wieder Fehler beseitigt (jetzt wirklich die aller-allerletzten! :pfeif:) und ich habe einen Timer eingefügt. Hier können Zeiten bis zu 24 Stunden gesetzt werden. Nach Ablauf des Timers wird ein akustischer Alarm ausgelöst und der Timer (dann 00:00:00) wird rot angezeigt. Zum Setzen des Timers und Löschen des Alarms auf den Timerwert tippen, es öffnet sich eine Seite zum Setzen des Timers. Mit OK wird der angezeigte Timerwert übernomen. Mit CLR wird sowohl der Timer gelöscht als auch ein anstehender Alarm.
Ich bitte um Feedback, ob das Ding in dieser Art brauchbar ist!

Grüße, Jörg Becker.

PS: der Touchscreen wurde auch leicht verbessert und man kann nun die 'aktiven' Bereiche besser treffen. Ich habe die Kalibrierung geändert, hatte die Funktion bisher falsch verstanden!

PPS: Achtung: der Timer funktioniert momentan nur mit Home Assistant, da er die Uhrzeit von HA holt ind damit auch den Takt! Da muss ich mir für diejenigen ohne HA noch etwas überlegen ...
Habe heute V1.3.1 länger getestet, funktioniert sehr gut 👍
Besonders gut gefällt mir der neue Timer.
Vielen Dank an Jörg !
 
Zurück
Oben Unten