Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. CYD Cheap Yellow Display (ESP32-2432S028) & MQTT Adapter

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    CYD Cheap Yellow Display (ESP32-2432S028) & MQTT Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • jayjojayson
      jayjojayson last edited by jayjojayson

      Hallo,

      ich habe mir vor einiger Zeit ein CYD bestellt und es funktioniert soweit auch. Mir gefallen die Teile echt gut und sind wirklich sehr billig. Da könnte man viele Möglichkeiten im Smarhomeinsatz finden und realisieren. Nun wollte ich es zum ersten richtigen Einsatz bringen und über MQTT Temperatur und Luftfeuchtigkeit anzeigen lassen. Dazu sollen noch drei Schalter integriert werden die ebenfalls über MQTT angesteuert werden.

      Also habe ich im iobroker erstmal sicherheitshalber eine neue mqtt Instanz angelegt.
      Screenshot 2024-07-01 015146.png

      Anschließend habe ich mir einen code erzeugen lassen und auf das CYD übertragen. Es verbindet sich auch mit meinem Wlan und im iobroker mit dem mqtt Broker. Dort wird mir das CYD angezeigt. Unter Objekte wird ebenfalls bei Informationen das CYD angezeigt. Das Display bleibt aber bis auf den Sicherheitstext (das man weiß, dass was angezeigt wird) dunkel.
      Screenshot 2024-07-01 014546.png

      Ich bekomme es nicht hin, dass mir weitere Werte auf dem Display angezeigt werden. Habe dann einfach mal zwei neue Variablen als String angelegt, weil das so im code gefordert ist, wenn ich es richtig verstehe und versuche diese Werte nun auf das Display zu projizieren. Irgendwas muss bei der Syntax zur Übertragung falsch sein, aber leider reicht mein Wissen dafür nicht aus. Habe heute schon den ganzen Nachmittag und Abend getestet, aber finde keine Lösung. Freue mich daher über jeden Ansatz der mir weiterhelfen könnte. Danke vorab und Grüße. Vielleicht ist das mit CYD auch für andere hier interessant.

      #include <SPI.h>
      #include <Wire.h>
      #include <TFT_eSPI.h>
      #include <XPT2046_Touchscreen.h>
      #include <WiFi.h>
      #include <PubSubClient.h>
      
      // Display and touch configuration
      #define XPT2046_IRQ 36
      #define XPT2046_MOSI 32
      #define XPT2046_MISO 39
      #define XPT2046_CLK 25
      #define XPT2046_CS 33
      
      SPIClass touchscreenSPI(VSPI);
      XPT2046_Touchscreen touchscreen(XPT2046_CS, XPT2046_IRQ);
      TFT_eSPI tft = TFT_eSPI();
      
      // WiFi and MQTT settings
      const char* ssid = "Home-J";
      const char* password = "xxx";
      const char* mqtt_server = "192.1xx.178.176";
      const int mqtt_port = 1889;
      const char* mqtt_topic = "mqtt.1.";
      const char* mqtt_device_name = "CYD";
      const char* mqtt_user = "MqttServiceBox";
      const char* mqtt_pass = "xxx";
      
      WiFiClient espClient;
      PubSubClient client(espClient);
      
      void setup() {
          // Initialize serial communication
          Serial.begin(115200);
          Serial.println("Starting setup...");
      
          // Initialize WiFi
          WiFi.begin(ssid, password);
          while (WiFi.status() != WL_CONNECTED) {
              delay(500);
              Serial.print(".");
          }
          Serial.println("Connected to WiFi");
      
          // Initialize MQTT
          client.setServer(mqtt_server, mqtt_port);
          client.setCallback(mqttCallback);
      
          // Initialize the display
          tft.init();
          tft.setRotation(1);
          tft.fillScreen(TFT_BLACK);
          tft.setTextColor(TFT_WHITE);
          tft.setTextSize(2);
      
          // Display header
          tft.drawString("Sicherheitstext", 10, 10);
      
          // Initialize touchscreen
          touchscreen.begin(touchscreenSPI);
          touchscreen.setRotation(1);
      
          Serial.println("Setup complete.");
      }
      
      void mqttCallback(char* topic, byte* payload, unsigned int length) {
          String message;
          for (int i = 0; i < length; i++) {
              message += (char)payload[i];
          }
          Serial.print("Message arrived: ");
          Serial.println(message);
          
          // Parse the message for temperature and humidity
          if (message.startsWith("Temperatur:")) {
              String temp = message.substring(11);
              tft.fillRect(0, 30, 240, 20, TFT_BLACK);
              tft.drawString("Temperatur: " + temp + " C", 10, 30);
          } else if (message.startsWith("Luftfeuchtigkeit:")) {
              String hum = message.substring(16);
              tft.fillRect(0, 50, 240, 20, TFT_BLACK);
              tft.drawString("Luftfeucht.: " + hum + " %", 10, 50);
          }
      }
      
      void loop() {
          if (!client.connected()) {
              reconnect();
          }
          client.loop();
      
          // Touchscreen handling (if needed)
          if (touchscreen.touched()) {
              // Handle touch events here
          }
      }
      
      void reconnect() {
          while (!client.connected()) {
              Serial.print("Attempting MQTT connection...");
              if (client.connect(mqtt_device_name, mqtt_user, mqtt_pass)) {
                  Serial.println("connected");
                  client.subscribe(mqtt_topic);
              } else {
                  Serial.print("failed, rc=");
                  Serial.print(client.state());
                  delay(5000);
              }
          }
      }
      
      
      geschild R 2 Replies Last reply Reply Quote 0
      • geschild
        geschild @jayjojayson last edited by geschild

        @jayjojayson said in CYD Cheap Yellow Display (ESP32-2432S028) & MQTT Adapter:

        Wie ich das sehe machst du in reconnect() ein subscribe mit mqtt_topic = "mqtt.1." , du muss aber das eigentliche topic, nämlich z.B. "Temperatur" oder "Luftfeuchtigkeit" angeben und für jedes einzelne ein subscribe machen.

        1 Reply Last reply Reply Quote 0
        • R
          rodnic @jayjojayson last edited by

          @jayjojayson Hallo, wie hast du dir den code erstellen lassen? Welche Entwicklungsumgebung hast du genutzt?

          D 1 Reply Last reply Reply Quote 0
          • D
            Dieter_P @rodnic last edited by Dieter_P

            @rodnic said in CYD Cheap Yellow Display (ESP32-2432S028) & MQTT Adapter:

            @jayjojayson Hallo, wie hast du dir den code erstellen lassen? Welche Entwicklungsumgebung hast du genutzt?

            Wenn man nicht so auf Codierumgebungen steht und bei Adam&Eva also mit zB den Display Treibern (justierung) starten möchte, habe ich gute Erfahrung mit OpenHASP gemacht für ein ESP32-3248S035C (https://www.openhasp.com/0.7.0/hardware/sunton/esp32-3248s035/) dass dort "out of the box" erstmal funktioniert und man sich direkt um seine Applikation kümmern kann. Ist zwar ein Nightly/Beta release aber läuft bei mir absolute stabil und gibt es hier komfortabel per Webinstaller (Sunton .......): https://nightly.openhasp.com/

            Da OpenHASP wohl keine IOB Integration besitzt ist die MQTT Integration recht aufwendig. Warnung vorab, der Mqtt-Adapter (Broker&Client) mag OpenHASP und seine Mqtt Kommunikation nicht. Zum Glück aber der Mqtt (Client only) Adapter. Insofern hab ich für das Display extra einen neuen Broker (Mosquitto) spendiert, aber so läuft es.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            671
            Online

            31.6k
            Users

            79.6k
            Topics

            1.3m
            Posts

            4
            4
            855
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo