2025-11-1300

This commit is contained in:
2025-11-13 18:09:59 +01:00
parent d21a0c0192
commit eb37980729
3 changed files with 56 additions and 114 deletions

View File

@@ -1,4 +1,4 @@
//#include <Wire.h> #include <Wire.h>
#include <Adafruit_Sensor.h> #include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h> #include <Adafruit_BME280.h>
@@ -20,7 +20,7 @@ struct {
} BME280Data; } BME280Data;
TwoWire I2CBME = TwoWire(1); //TwoWire I2CBME = TwoWire(1);
Adafruit_BME280 bme; Adafruit_BME280 bme;
unsigned long delayTime; unsigned long delayTime;
@@ -28,13 +28,13 @@ unsigned long delayTime;
void Init_BME280() { void Init_BME280() {
Serial.begin(115200); Serial.begin(115200);
Serial.println(F("BME280 test")); Serial.println(F("BME280 test"));
I2CBME.begin(I2C_SDA, I2C_SCL, 100000); //I2CBME.begin(I2C_SDA, I2C_SCL, 100000);
bool status; bool status;
// default settings // default settings
// (you can also pass in a Wire library object like &Wire2) // (you can also pass in a Wire library object like &Wire2)
status = bme.begin(0x76, &I2CBME); status = bme.begin(0x76);
if (!status) { if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!"); Serial.println("Could not find a valid BME280 sensor, check wiring!");
} else {Serial.println("BME280 Ok"); } else {Serial.println("BME280 Ok");
@@ -46,6 +46,8 @@ void Read_BME280(){
L_Druck = bme.readPressure(); L_Druck = bme.readPressure();
L_Druck = L_Druck + KorrekturLuftdruck; L_Druck = L_Druck + KorrekturLuftdruck;
Feuchte = bme.readHumidity(); Feuchte = bme.readHumidity();
Feuchte = Feuchte + KorrekturFeuchte;
Serial.printf("BME 280: Temperarur Innen %3.2f °C und\n Luftfeuchtigkeit %3.2f %%\n\n", Temp, Feuchte );
} }

View File

@@ -48,19 +48,23 @@ build_flags = ${env.build_flags}
-DHTU_Korrectur=0.00 -DHTU_Korrectur=0.00
-DBME_Korrectur=-2.30 -DBME_Korrectur=-2.30
-DKorrekturLuftdruck=0.00 -DKorrekturLuftdruck=0.00
-DKorrekturFeuchte=0.00
-DAKKU_GREZWERT=2.90
[env:hjk] ; Sulzfeld [env:hjk] ; Sulzfeld
build_flags = ${env.build_flags} build_flags = ${env.build_flags}
-DCO2Wert=\"hjk/devices/257923/telemetry/co2\" -DCO2Wert=\"hjk/devices/257923/telemetry/co2\"
-DAKKU=\"hjk/devices/WETTERSTATION/telemetry/battery\" -DAKKU=\"hjk/devices/WETTERSTATION2/telemetry/battery\"
-DWETTER=\"hjk/devices/WETTERSTATION/telemetry/temperature_Htu_21\" -DWETTER=\"hjk/devices/WETTERSTATION2/telemetry/temperature_Htu_21\"
-DLUFTDRUCK=\"hjk/devices/WETTERSTATION/telemetry/pressure\" -DLUFTDRUCK=\"hjk/devices/WETTERSTATION2/telemetry/pressure\"
-DFEUCHTIGKEIT=\"hjk/devices/WETTERSTATION/telemetry/humity\" -DFEUCHTIGKEIT=\"hjk/devices/WETTERSTATION2/telemetry/humity\"
-DHELL=\"hjk/devices/WETTERSTATION/telemetry/Lux\" -DHELL=\"hjk/devices/WETTERSTATION/telemetry/Lux\"
-DHTU_Korrectur=0.00 -DHTU_Korrectur=-0.75
-DBME_Korrectur=-1.55 -DBME_Korrectur=-0.00
-DKorrekturLuftdruck=0.00 -DKorrekturLuftdruck=0.00
-DKorrekturFeuchte=0.00
-DAKKU_GREZWERT=3.00

View File

@@ -114,6 +114,9 @@ uint8_t hell = 255;
u_int16_t StartderAbdunklung = 20; u_int16_t StartderAbdunklung = 20;
u_int16_t EndederAbdunklung = 7; u_int16_t EndederAbdunklung = 7;
//------ Speicher für Sekunden ------
uint8_t SekOld = 99;
// Wifi // Wifi
char ssid[] = "MagentaWLAN-RGDO"; // your network SSID (name) char ssid[] = "MagentaWLAN-RGDO"; // your network SSID (name)
char pass[] = "93329248424922704583"; // your network password char pass[] = "93329248424922704583"; // your network password
@@ -546,11 +549,11 @@ void ZeigeInnenFeuchtigkeit(float Luftfeuchtigkeit){
void ZeigeInnenCO(int Co2){ void ZeigeInnenCO(int Co2){
char szWetter[15]; char szWetter[15];
display.fillRect(0, 34-10, 64, 8, myBLACK); display.fillRect(0, 34-10, 64, 8, myBLACK);
Serial.println(Co2); //Serial.println(Co2);
if (Co2 > 0) if (Co2 > 0)
{ {
sprintf(szWetter, "%5d", Co2); sprintf(szWetter, "%5d", Co2);
Serial.print("CO = "); Serial.println(Co2); //Serial.print("CO = "); Serial.println(Co2);
display.setFont(); display.setFont();
display.setCursor(1, 35-10); display.setCursor(1, 35-10);
switch (Co2){ switch (Co2){
@@ -641,11 +644,11 @@ void ZeigeLuftdruck(float Pressure){
} }
void BlinkSec(bool blink){ void BlinkSec(bool blink){
if (blink) { if (blink) {
display.fillRect(32, 4, 2, 2, myGREEN); display.fillRect(31, 5, 2, 2, myWHITE);
display.fillRect(32, 10, 2, 2, myMAGENTA); display.fillRect(31, 9, 2, 2, myWHITE);
}else{ }else{
display.fillRect(32, 0, 2, 12, myBLACK); display.fillRect(31, 5, 2, 6, myBLACK);
} }
} }
@@ -654,7 +657,7 @@ void readHtu(){
FeuchteInnen = htu.readHumidity(); FeuchteInnen = htu.readHumidity();
TemparaturInnen = htu.readTemperature(); TemparaturInnen = htu.readTemperature();
TemparaturInnen = TemparaturInnen + HTU_Korrectur; TemparaturInnen = TemparaturInnen + HTU_Korrectur;
Serial.printf("\n\nTemperarur Innen %f °C und\nLuftfeuchtigkeit %f %%\n\n", TemparaturInnen, FeuchteInnen ); Serial.printf("Htu21D: Temperarur Innen %3.2f °C und\n Luftfeuchtigkeit %3.2f %%\n\n", TemparaturInnen, FeuchteInnen );
}else{ }else{
FeuchteInnen = 20.00; FeuchteInnen = 20.00;
TemparaturInnen = 30.00; TemparaturInnen = 30.00;
@@ -771,6 +774,7 @@ union single_double{
} this_single_double; } this_single_double;
unsigned long last_draw=0; unsigned long last_draw=0;
void scroll_text(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t colorR, uint8_t colorG, uint8_t colorB, boolean blink) void scroll_text(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t colorR, uint8_t colorG, uint8_t colorB, boolean blink)
{ {
uint16_t text_length = text.length(); uint16_t text_length = text.length();
@@ -782,7 +786,13 @@ void scroll_text(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t
// Asuming 5 pixel average character width // Asuming 5 pixel average character width
for (int xpos=matrix_width; xpos>-(matrix_width+text_length*5); xpos--) for (int xpos=matrix_width; xpos>-(matrix_width+text_length*5); xpos--)
{ {
if (millis() - lastTime >= 200) // getNTPtime(10);
// Serial.printf ("%D %D \n",SekOld,timeinfo.tm_sec);
// if (SekOld != timeinfo.tm_sec){
// SekOld = timeinfo.tm_sec;
// blinkSek = !blinkSek;
// }
if (millis() - lastTime >= (1000 - scroll_delay))
{ {
lastTime = millis(); lastTime = millis();
blinkSek = !blinkSek; blinkSek = !blinkSek;
@@ -792,7 +802,6 @@ void scroll_text(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t
} }
display.setTextColor(display.color565(colorR,colorG,colorB)); display.setTextColor(display.color565(colorR,colorG,colorB));
//display.clearDisplay();
display.fillRect(xpos, ypos-2, 64-xpos, 10, (myBLACK)); display.fillRect(xpos, ypos-2, 64-xpos, 10, (myBLACK));
display.setCursor(xpos,ypos); display.setCursor(xpos,ypos);
display.println(text); display.println(text);
@@ -811,7 +820,7 @@ void scroll_text(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t
} }
} }
void scroll_text2(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t colorR, uint8_t colorG, uint8_t colorB, boolean blink) /* void scroll_text2(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t colorR, uint8_t colorG, uint8_t colorB, boolean blink)
{ {
uint16_t text_length = text.length(); uint16_t text_length = text.length();
display.setTextWrap(false); // we don't wrap text so it scrolls nicely display.setTextWrap(false); // we don't wrap text so it scrolls nicely
@@ -828,11 +837,11 @@ void scroll_text2(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t
blinkSek = !blinkSek; blinkSek = !blinkSek;
} }
if (blinkSek && blink) { if (blinkSek && blink) {
display.fillRect(4 + 27, 20 - 3, 2, 2, myMAGENTA); display.fillRect(4 + 27, ypos - 3, 5, 5, myWHITE);
display.fillRect(4 + 27, 20 + 1, 2, 2, myMAGENTA); display.fillRect(4 + 27, ypos + 1, 5, 5, myWHITE);
}else{ }else{
display.fillRect(4 + 27, 20 - 3, 2, 2, myBLACK); display.fillRect(4 + 27, ypos -8, 2, 2, myYELLOW);
display.fillRect(4 + 27, 20 + 1, 2, 2, myBLACK); display.fillRect(4 + 27, ypos +1, 2, 2, myYELLOW);
} }
display.setTextColor(display.color565(colorR,colorG,colorB)); display.setTextColor(display.color565(colorR,colorG,colorB));
//display.clearDisplay(); //display.clearDisplay();
@@ -843,7 +852,7 @@ void scroll_text2(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t
yield(); yield();
} }
display.setTextSize(1); display.setTextSize(1);
} } */
void scroll_Grad(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t colorR, uint8_t colorG, uint8_t colorB, boolean blink) void scroll_Grad(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t colorR, uint8_t colorG, uint8_t colorB, boolean blink)
{ {
@@ -856,9 +865,8 @@ void scroll_Grad(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t
// Asuming 5 pixel average character width // Asuming 5 pixel average character width
for (int xpos=matrix_width; xpos>-(matrix_width+text_length*5); xpos--) for (int xpos=matrix_width; xpos>-(matrix_width+text_length*5); xpos--)
{ {
if (millis() - lastTime >= 200) if (SekOld != timeinfo.tm_sec){
{ SekOld = timeinfo.tm_sec;
lastTime = millis();
blinkSek = !blinkSek; blinkSek = !blinkSek;
} }
if (blink){ if (blink){
@@ -935,66 +943,46 @@ static void setup_wifi() {
void loop() { void loop() {
Serial1.println("Hallo Co2");
if (!client.connected()) { if (!client.connected()) {
reconnect(); reconnect();
} }
client.loop();
//client.loop();
getNTPtime(10); getNTPtime(10);
if (millis() - lastTime >= 1000) if (SekOld != timeinfo.tm_sec)
{ {
lastTime = millis(); SekOld = timeinfo.tm_sec;
blinkSek = !blinkSek; blinkSek = !blinkSek;
//ZeigeTestTime(timeinfo);
ZeigeZeit(timeinfo,1,8); ZeigeZeit(timeinfo,1,8);
if (akku < 2.85) if (akku < AKKU_GREZWERT)
{ {
AkkuAlarm(); AkkuAlarm();
} }
/* if ((timeinfo.tm_sec % 30) == 0)
{
if (readCo2Flag == true) //eadCo2Flag
{
CO2Wert = Co2;
Serial.print("CO = \t"); Serial.println(CO2Wert);
readCo2Flag = false;
}
}else{
readCo2Flag = true;
} */
if ((timeinfo.tm_min % 2) == 0) if ((timeinfo.tm_min % 2) == 0)
{ {
if (readHtuFlag == true) if (readHtuFlag == true)
{ {
readHtu(); readHtu();
Read_BME280();
readHtuFlag = false; readHtuFlag = false;
} }
}else{ }else{
readHtuFlag = true; readHtuFlag = true;
} }
Read_BME280();
/* if ((timeinfo.tm_hour >= StartderAbdunklung) && timeinfo.tm_hour < EndederAbdunklung)
{
display.setBrightness(dunkel);
#ifdef HELLIGKEIT
Serial.printf("Die Helligkeit wird von %0d Uhr bis %0d Uhr auf %00d reduziert\n", StartderAbdunklung, EndederAbdunklung, dunkel);
#endif
} else
{
display.setBrightness(hell);
} */
switch (timeinfo.tm_sec) switch (timeinfo.tm_sec)
{ {
case 0 ... 14: case 0 ... 14:
{ {
//ZeigeInnenTemp(TemparaturInnen); //ZeigeInnenTemp(TemparaturInnen);
ZeigeTemperatur(Temp, myGREEN); ZeigeTemperatur(TemparaturInnen, myGREEN);
ZeigeInnenFeuchtigkeit(Feuchte); ZeigeInnenFeuchtigkeit(Feuchte);
ZeigeInnenCO(Co2); ZeigeInnenCO(Co2);
break; break;
@@ -1009,7 +997,7 @@ void loop() {
} }
case 30 ... 44: case 30 ... 44:
{ {
ZeigeTemperatur(Temp, myGREEN); ZeigeTemperatur(TemparaturInnen, myGREEN);
ZeigeInnenFeuchtigkeit(Feuchte); ZeigeInnenFeuchtigkeit(Feuchte);
ZeigeInnenCO(Co2); ZeigeInnenCO(Co2);
break; break;
@@ -1024,53 +1012,6 @@ void loop() {
} }
} }
//ZeigeLuftdruck(Pressure);
/* if (Aussentemp > -99.9){
scroll_text(matrix_height-8,30,"Luftdruck: " + String(Pressure) + " hPa", 30,30,30, true);
char szWetter[10];
dtostrf(Aussentemp, 4, 1, szWetter);
//Serial.print(Aussentemp); Serial.print(" "); Serial.println(szWetter);
scroll_Grad(matrix_height-8,30,"Aussentemperatur: " + String(szWetter), 64,64,64, true);
dtostrf(Luftfeuchtigkeit, 4, 1, szWetter);
scroll_text(matrix_height-8,30,"Luftfeuchtigkeit: " + String(szWetter) + " %", 48,48,48, true);
} */
//ZeigeZeit(timeinfo, TimeX, TimeY);
//ZeigeZeit(timeinfo, 1,40);
/* ZeigeCO(1,CoY);
if ((timeinfo.tm_min % 10) == 0){
if (Covid19 != 0){
scroll_text(matrix_height-8,20,"Landkreis Heilbronn", 30,30,30, true);
if (Covid19 <= 500){
// ------------------------------------ \204 für ä
scroll_text(matrix_height-8,25,"Covid 19 F\204lle in den letzte 7 Tage pro 100000 EW: " + String(Covid19, 1), 40,40,40, true);
} else if (Covid19 <= 1000){
// ------------------------------------ \204 für ä
scroll_text(matrix_height-8,25,"Covid 19 F\204lle in den letzte 7 Tage pro 100000 EW: " + String(Covid19, 1), 64,64,0, true);
} else {
// ------------------------------------ \204 für ä
scroll_text(matrix_height-8,25,"Covid 19 F\204lle in den letzte 7 Tage pro 100000 EW: " + String(Covid19, 1), 64,0,0, true);
}
}
} else {
if (Aussentemp > -99.9){
scroll_text(matrix_height-8,30,"Luftdruck: " + String(Pressure) + " hPa", 30,30,30, true);
char szWetter[10];
dtostrf(Aussentemp, 4, 1, szWetter);
//Serial.print(Aussentemp); Serial.print(" "); Serial.println(szWetter);
scroll_Grad(matrix_height-8,30,"Aussentemperatur: " + String(szWetter), 64,64,64, true);
dtostrf(Luftfeuchtigkeit, 4, 1, szWetter);
scroll_text(matrix_height-8,30,"Luftfeuchtigkeit: " + String(szWetter) + " %", 48,48,48, true);
}
}
//scroll_text(matrix_height-16,20,"Temperatur: " + String(Wetter,1) +" °C", 128,30,30, true);
/* scroll_text2(matrix_height-24,20,"Liebe Frunde, liebe Nachbarn,", 128,128,0, true);
scroll_text2(matrix_height-24,20,"ich w\201nsche Euch allen ein", 128,128,0, true);
scroll_text2(matrix_height-24,20,"Frohes neues Jahr 2022.", 128,255,0, true); */
//ZeigeWetter(double(FlurTemp), WetterY,WetterX);
} }
client.loop(); client.loop();
} }
@@ -1085,15 +1026,10 @@ bool getNTPtime(int sec) {
//Serial.print("."); //Serial.print(".");
delay(10); delay(10);
} while (((millis() - start) <= (1000 * sec)) && (timeinfo.tm_year < (2016 - 1900))); } while (((millis() - start) <= (1000 * sec)) && (timeinfo.tm_year < (2016 - 1900)));
if (timeinfo.tm_year <= (2016 - 1900)) return false; // the NTP call was not successful if (timeinfo.tm_year <= (2016 - 1900)) return false; // the NTP call was not successful }
//Serial.print("now "); Serial.println(now);
/* char time_output[30];
strftime(time_output, 30, "%a %d-%m-%y %T", localtime(&now));
Serial.println(time_output);
Serial.println(); */
}
return true; return true;
} }
}
void showTime(tm localTime) { void showTime(tm localTime) {
Serial.printf( Serial.printf(
@@ -1117,6 +1053,6 @@ void AkkuAlarm()
char szAkku[10]; char szAkku[10];
dtostrf(akku, 5, 2, szAkku); dtostrf(akku, 5, 2, szAkku);
String myAkku = "ACHTUNG!! Akku : " + String(szAkku) + " V. Bitte aufladen!"; String myAkku = "ACHTUNG!! Akku : " + String(szAkku) + " V. Bitte aufladen!";
scroll_text(32-8,40, myAkku, 255,0,0, true); scroll_text(32-7,40, myAkku, 255,0,0, true);
} }
} }