Buitentemperatuurkastje
24-12-2025
Kastje dat de actuele buitentemperatuur laat zien, op basis van officiƫle actuele meteorologische gegevens.
Lifehack
Dit kastje haalt elke 10 minuten de buitentemperatuur op, van de site van Open Meteo. Je kunt daar namelijk gratis alle data ophalen zoals een JSON waar de temperatuur van jouw eigen locatie in staat.

Benodigdheden
D1 Mini ESP32
TFT Display 1.8 inch
Code
Download
Behuizing (zelf 3d-printen)
Lifehack
Dit kastje haalt elke 10 minuten de buitentemperatuur op, van de site van Open Meteo. Je kunt daar namelijk gratis alle data ophalen zoals een JSON waar de temperatuur van jouw eigen locatie in staat.

Benodigdheden
D1 Mini ESP32
TFT Display 1.8 inch
Code
#include
#include
#include
#include
// Pin-definities
#define TFT_CS 26
#define TFT_DC 19
#define TFT_RST 16
#define TFT_SCLK 18
#define TFT_SDA 23
#define SSID "Wifi"
#define PASS "Wifi Wachtwoord"
U8G2_SSD1309_128X64_NONAME0_F_4W_SW_SPI OLED(U8G2_R0, /* clock=*/TFT_SCLK, /* data=*/ TFT_SDA, /* cs=*/ TFT_CS, /* dc=*/ TFT_DC, /* reset=*/ TFT_RST);
void setup() {
Serial.begin(115200);
OLED.begin();
OLED.clearBuffer();
OLED.setFont(u8g2_font_spleen32x64_mf);
WiFi.begin(SSID,PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi verbonden");
// Display update
OLED.clearBuffer();
OLED.drawStr(0, 8, "WiFi verbonden");
OLED.sendBuffer();
}
void loop() {
const char* url =
"https://api.open-meteo.com/v1/forecast"
"?latitude=51.53" // Wellerlooi
"&longitude=6.08"
"&t_weather=true";
static int PrevTemp=-100;
String temp2="";
float temp;
if(WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(url);
int code = http.GET();
if(code == 200) {
String payload = http.getString();
StaticJsonDocument<512> doc;
DeserializationError err = deserializeJson(doc, payload);
if(!err) {
temp = doc["current_weather"]["temperature"];
Serial.print("Temperatuur Wellerlooi: ");
Serial.print(temp);
Serial.println(" C");
int x=random(3);
if(temp<10) x=random(4)+18; // Soort van centreren
temp2 = String((int)round(temp))+String((char)176)+"C"; // 176 = graden-symbool (klein nulletje)
if(round(temp)!=PrevTemp) {
// Tegen inbranden
OLED.clearBuffer();
PrevTemp=temp;
OLED.drawStr(x,50,temp2.c_str());
OLED.sendBuffer();
delay(10000);
}
}
}
http.end();
long t=millis();
// Paar technieken om inbranden te voorkomen (andere x en af en toe even uit):
while(millis()-t<6000 * 10 ) { // elke 10 minuten
if(t%12000==0){
OLED.clearBuffer();
OLED.sendBuffer();
delay(300);
OLED.clearBuffer();
int x=random(3);
if(temp<10) x=20;
OLED.drawStr(x,50,temp2.c_str());
OLED.sendBuffer();
delay(10000);
}
}
}
delay(30000);
}
Download
Behuizing (zelf 3d-printen)