WS2812 Matrix 8x8x4 als Wetterstation mit Uhrzeit und Datum auf einem ESP8266 DEV

Ich komme nicht weiter bei dem Sketch den ich habe leuchtet immer nur die erste LED links oben.
Wer kann mir weiterhelfen ?

#include <WiFi.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

// WLAN-Zugangsdaten
const char* ssid = "";
const char* password = "";

// OpenWeatherMap API
const String apiKey = "";
const String city = "";
const String countryCode = "DE";  // Ländercode (z. B. DE für Deutschland)

// LED-Matrix Einstellungen
const int pinCS = 16;
const int numberOfHorizontalDisplays = 4;
const int numberOfVerticalDisplays = 1;

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

// NTP-Client für die Zeit
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 3600);

String weatherInfo = "Wetter laden...";
String timeInfo = "";

void setup() {
  Serial.begin(115200);

  // WLAN verbinden
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Verbindet mit WLAN...");
  }
  Serial.println("Verbunden mit WLAN!");

  // Matrix initialisieren
  matrix.setIntensity(5);    // Helligkeit (0-15)
  matrix.setRotation(0, 1);  // Rotation für jede Anzeige

  // NTP-Client starten
  timeClient.begin();

  // Wetterdaten laden
  updateWeather();
}

void loop() {
  timeClient.update();
  timeInfo = timeClient.getFormattedTime();

  // Zeit und Wetter anzeigen
  showScrollingText("Zeit: " + timeInfo + " | " + weatherInfo);

  delay(10000);  // Aktualisierungsrate der Matrix
  updateWeather();
}

void updateWeather() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    String url = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "," + countryCode + "&appid=" + apiKey + "&units=metric&lang=de";
    http.begin(url);
    int httpResponseCode = http.GET();

    if (httpResponseCode == 200) {
      String payload = http.getString();
      StaticJsonDocument<1024> doc;
      DeserializationError error = deserializeJson(doc, payload);

      if (!error) {
        String temperature = doc["main"]["temp"];
        String description = doc["weather"][0]["description"];
        weatherInfo = "Temp: " + temperature + " C, " + description;
      } else {
        weatherInfo = "JSON-Fehler";
      }
    } else {
      weatherInfo = "Fehler beim Laden";
    }

    http.end();
  } else {
    weatherInfo = "Keine Verbindung";
  }
}
void showScrollingText(String text) {
  int textWidth = text.length() * 6;
  for (int x = matrix.width(); x >= -textWidth; x--) {
    matrix.fillScreen(LOW);
    matrix.setCursor(x, 0);
    matrix.print(text);
    matrix.write();
    delay(50);
  }
}

Bitte packe Dein Programm in code-Tags, damit es lesbar wird. Wie das geht, steht hier: Wie man dieses Forum benutzt - bitte lesen.

Und woher hast du den Sketch ?
Ich vermute, der läuft nicht auf einem ESP8266. Daher zeige bitte auch deine Fehlermeldung (in Code-Tags).

Ich würde auch empfehlen, bei Openweathermap nochmal nachzuschauen.
API Version 2.5 ist veraltet, aktuell ist Version 3.0.

Was hast Du für ein Pannel??

LED Matrix mit einem MAX7219 also sowas


oder WS2812.

Grüße Uwe

Es ist eine WS2812B Matrix ! auf einem ESP8266

Doch es ist ein ESP8266 mit einer WS2812B Matrix und den sketch habe ich mir generieren lasen von ChatGPT weil ich noch ein Anfänger in sachen Programieren bin !

Dann hast Du die falsche Bibliothek.
Du brauchst Neopixel nicht Max72xxPanel.h

Außerdem solltest Du auf delay() verzichten. Schau Dir mal das Beispiel "blink without delay".
Grüße Uwe

Danke werde ich machen

Einfach ChatGPT so lange fragen, bis es funktioniert.
Und wir sind hier nicht das Repaircafè von ChatGPT. :wink:

Und damit lernst du es auch nicht, da selbst ChatGPT viele Fehler macht.
Denn auch die wifi.h ist falsch.
Aber auch das ist egal.
Dich scheint ja nicht mal zu interessieren, wenn man dich bittet, den Sketch hier richtig rein zu stellen.

2 Likes

Wenn ChatGPT keine Antworten mehr hat erfindet sie neue. Wenn Du nichts von der Materie verstehst, kannst Du nicht einordnen, ob eine Antwort wahr ist oder erfunden ist.

Zur Programmierung:
Teile ad Projekt in kleine Schritte und programmiere den Sketch. Wenn alle einzelnen Teile funktionieren fügst Du sie zusammen.

Grüße Uwe

1 Like

Um nicht zu sagen, das ist der größte Schrott, den ChatGPT hier wieder einmal liefert.

1 Like

Das kann ChatGPT auch nicht, und ist ihr auch egal. Sie liefert dir die Antwort, die sie für die passendste hält. Wenn man bedenkt, dass sie überhaupt keine Ahnung hat, ist sie da super gut.

1 Like

Dann hast Du 2 Möglichkeiten:

  1. Du lernst es, wobei Du dazu hier Hilfe bekommst
  2. Du fragst weiterhin ChatGPT bis Du
    a) ein funktionierendes Ergebnis bekommst
    b) an Altersschwäche gestorben bist.

Ich halte 1 für die günstigste Variante und bei 2 das Ergebnis b) für am wahrscheinlichsten.

Gruß Tommy

2 Likes

Ich auch - und das sogar mit Begründung für @winnetou109 :

Viel Text...

Wir haben uns hier im Forum an verschiedenen Stellen mit der Tankerkönig-API beschäftigt. Das ist sowas Ähnliches wie Openweathermap, nur halt für aktuelle Spritpreise an Tankstellen. Das habe ich (wohl erfolgreich, denn es funktioniert noch immer) in einem Projekt eingebaut.

Als der ChatGPT-Hype losging, habe ich mir mal den Spaß gemacht und die sog. KI Code für exakt den Anwendungsfall erzeugen lassen. Ich wusste ja bei den Ergebnissen ja aus Erfahrung, wo die Fehler liegen. Trotzdem habe ich durch immer weiter verfeinerte Prompts einen ganzen Abend (fast drei Stunden) gebraucht, bis das erste Mal ein kompilierbares und funktionierendes Programm dabei herausgekommen ist.

Fazit des AWM:
ChatGPT geht bei mir durch als Tipphilfe, aber man muss eigentlich die Implementierung schon (mindestens) im Kopf haben um damit ein Problem zu lösen.

Ne das ist mir nicht egal aber nicht jeder macht so etwas jeden Tag also bitte etwas mehr zeit geben danke

Gerne...aber wie viel Tage noch ?
Du brauchst doch nur den verlinkten Text durchlesen und entsprechend deinen Sketch im Posting anpassen.

Ich werde Nr. 1 nemen !

Ist es jetzt besser ?

Ja, prima....es fehlen aber noch die Fehlermeldungen.