dwd wx feature

This commit is contained in:
cheetah 2025-04-05 01:41:32 +02:00
parent ed4d0868e5
commit 9d4d145368
5 changed files with 18 additions and 25 deletions

View file

@ -41,7 +41,7 @@
<label for="text">Text</label>
<input type="text" id="text" name="text" placeholder="Enter text..." />
<label for="numeric">Numeric 4-bit BCD</label>
<input type="checkbox" name="numeric"/>

View file

@ -20,8 +20,6 @@ private:
bool _dirty;
unsigned long lastCheck = 0;
unsigned long checkInterval = 300000;
String lastMessage;
String dwdwxData;
// String dashboardUrl;
String url;

View file

@ -9,7 +9,7 @@ DWDWXClient::DWDWXClient(WiFiClient *client)
void DWDWXClient::begin(int intervalMinutes, float latitude, float longitude)
{
// this->message =
this->url = "https://api.open-meteo.com/v1/forecast?latitude=";
this->url = "http://api.open-meteo.com/v1/forecast?latitude=";
this->url.concat(latitude);
this->url.concat("&longitude=");
this->url.concat(longitude);
@ -42,7 +42,7 @@ bool DWDWXClient::check()
{
Serial.println("[DWDWX]: checking " + this->url);
this->_http.begin(this->url);
this->_http.setConnectTimeout(15e3);
int httpCode = this->_http.GET();
if (httpCode > 0)
@ -55,11 +55,7 @@ bool DWDWXClient::check()
}
this->currentMessage = this->parseJSON(this->dwdwxData);
Serial.println("[DWDWX]: Current Message = " + this->currentMessage);
if (this->currentMessage.equals(this->lastMessage) == false)
{
this->_dirty = true;
this->lastMessage = this->currentMessage;
}
this->_dirty = true;
this->_http.end();
return true;
}
@ -92,11 +88,11 @@ String DWDWXClient::parseJSON(String jsonData)
doc[keyCurrent][keyWX_Temperature].as<float>(), doc[keyCurrent][keyWX_Humidity].as<int>(),
doc[keyCurrent][keyWX_WindDir].as<float>(), doc[keyCurrent][keyWX_WindSpeed].as<float>(),
doc[keyCurrent][keyWX_WindGusts].as<float>(), doc[keyCurrent][keyWX_PressureMSL].as<float>(),
doc[keyCurrent][keyWX_CloudCover].as<float>()
doc[keyCurrent][keyWX_CloudCover].as<int>()
);
wxRes.clear();
wxRes.concat(wx_messageBuffer);
delete []wx_messageBuffer;
// delete []wx_messageBuffer;
return wxRes;
}
return emptyString;

View file

@ -400,7 +400,7 @@ void setup_broadcasts()
#ifdef SMART_POC_MODULE_DWD_WX
// DWD
if (globcfg.dwdwx_enable)
dwdWXClient.begin(5, globcfg.dwdwx_lat, globcfg.dwdwx_lng);
dwdWXClient.begin(60*6, globcfg.dwdwx_lat, globcfg.dwdwx_lng);
#endif
#ifdef SMART_POC_MODULE_MOWAS
// MoWaS
@ -453,8 +453,7 @@ void broadcast_loop()
#endif
char *messageText = new char[currentMessage.length() + 1]{};
currentMessage.toCharArray(messageText, currentMessage.length() + 1);
Serial.println(F("[DWD-WX] Transmitting Warning"));
Serial.println(messageText);
Serial.println(F("[DWD-WX] Transmitting"));
transmitter.queuePage(globcfg.broadcast_ric, globcfg.dwdwx_fun + 0, messageText);
delete []messageText;
dwdWXClient.currentMessage.clear();

View file

@ -394,19 +394,19 @@ static void redirectHomeResponse(AsyncWebServerRequest *request, String location
bool idle_enable;
int idle_interval, idle_mode;
cfg_startTransaction();
if (request->hasArg("idle_enable")) {
idle_enable = request->arg("idle_enable").equals("on");
cfg_adjust("idle_enable", idle_enable);
if (request->hasArg(cfgKeyIdleEnable.c_str())) {
idle_enable = request->arg(cfgKeyIdleEnable).equals("on");
cfg_adjust(cfgKeyIdleEnable, idle_enable);
} else {
cfg_adjust("idle_enable", false);
cfg_adjust(cfgKeyIdleEnable, false);
}
if (request->hasArg("idle_interval")) {
idle_interval = request->arg("idle_interval").toInt();
cfg_adjust("idle_interval", idle_interval);
if (request->hasArg(cfgKeyIdleInterval.c_str())) {
idle_interval = request->arg(cfgKeyIdleInterval).toInt();
cfg_adjust(cfgKeyIdleInterval, idle_interval);
}
if (request->hasArg("idle_mode")) {
idle_mode = request->arg("idle_mode").toInt();
cfg_adjust("idle_mode", idle_mode);
if (request->hasArg(cfgKeyIdleMode.c_str())) {
idle_mode = request->arg(cfgKeyIdleMode).toInt();
cfg_adjust(cfgKeyIdleMode, idle_mode);
}
cfg_write();
redirectHomeResponse(request, "/#idle");