mirror of
https://git.mirrors.martin98.com/https://github.com/luc-github/ESP3D.git
synced 2025-08-12 10:59:02 +08:00
Add a function to expand string with ESP variable
Implement expandString function in Notifications Message as POC
This commit is contained in:
parent
cc7c2cfc73
commit
3474edcd03
@ -23,6 +23,10 @@
|
|||||||
|
|
||||||
#include "../include/esp3d_config.h"
|
#include "../include/esp3d_config.h"
|
||||||
|
|
||||||
|
#if defined(WIFI_FEATURE) || defined(ETH_FEATURE)
|
||||||
|
#include "../modules/network/netconfig.h"
|
||||||
|
#endif // WIFI_FEATURE || ETH_FEATURE
|
||||||
|
|
||||||
#if defined(TIMESTAMP_FEATURE)
|
#if defined(TIMESTAMP_FEATURE)
|
||||||
#include "../modules/time/time_service.h"
|
#include "../modules/time/time_service.h"
|
||||||
#endif // TIMESTAMP_FEATURE
|
#endif // TIMESTAMP_FEATURE
|
||||||
@ -186,4 +190,25 @@ if (c==9 || (c >= 32 && c <= 126) || c>=128) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * esp3d_string::expandString(const char *s){
|
||||||
|
static String tmp;
|
||||||
|
tmp = s;
|
||||||
|
if (tmp.indexOf("%") != -1) {
|
||||||
|
#if defined(WIFI_FEATURE) || defined(ETH_FEATURE)
|
||||||
|
tmp.replace("%ESP_IP%", NetConfig::localIP().c_str());
|
||||||
|
tmp.replace("%ESP_NAME%", NetConfig::hostname());
|
||||||
|
#else
|
||||||
|
tmp.replace("%ESP_IP%", "???");
|
||||||
|
tmp.replace("%ESP_NAME%", "???");
|
||||||
|
#endif // WIFI_FEATURE || ETH_FEATURE
|
||||||
|
#if defined(TIMESTAMP_FEATURE)
|
||||||
|
tmp.replace("%ESP_DATETIME%", timeService.getCurrentTime());
|
||||||
|
#else
|
||||||
|
tmp.replace("%ESP_DATETIME%", "???");
|
||||||
|
#endif // TIMESTAMP_FEATURE
|
||||||
|
|
||||||
|
}
|
||||||
|
return tmp.c_str();
|
||||||
}
|
}
|
@ -28,6 +28,7 @@ const char* getContentType(const char* filename);
|
|||||||
const char* encodeString(const char* s);
|
const char* encodeString(const char* s);
|
||||||
const char* formatBytes(uint64_t bytes);
|
const char* formatBytes(uint64_t bytes);
|
||||||
bool isPrintableChar(char c);
|
bool isPrintableChar(char c);
|
||||||
|
const char * expandString(const char *s);
|
||||||
} // namespace esp3d_string
|
} // namespace esp3d_string
|
||||||
|
|
||||||
#endif //_ESP3D_STRING_H
|
#endif //_ESP3D_STRING_H
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
|
|
||||||
#include "../../core/esp3d_message.h"
|
#include "../../core/esp3d_message.h"
|
||||||
#include "../../core/esp3d_settings.h"
|
#include "../../core/esp3d_settings.h"
|
||||||
|
#include "../../core/esp3d_string.h"
|
||||||
#include "../network/netconfig.h"
|
#include "../network/netconfig.h"
|
||||||
#include "notifications_service.h"
|
#include "notifications_service.h"
|
||||||
|
|
||||||
@ -134,18 +135,7 @@ bool NotificationsService::Wait4Answer(T& client,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool NotificationsService::sendAutoNotification(const char* msg) {
|
bool NotificationsService::sendAutoNotification(const char* msg) {
|
||||||
if (!(NetConfig::started()) || (NetConfig::getMode() != ESP_WIFI_STA) ||
|
if (!sendMSG(ESP_NOTIFICATION_TITLE, msg)) {
|
||||||
(!_started) || (!_autonotification)) {
|
|
||||||
esp3d_log("Auto notification rejected");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
String msgtpl = msg;
|
|
||||||
// check if has variable to change
|
|
||||||
if (msgtpl.indexOf("%") != -1) {
|
|
||||||
msgtpl.replace("%ESP_IP%", WiFi.localIP().toString().c_str());
|
|
||||||
msgtpl.replace("%ESP_NAME%", NetConfig::hostname());
|
|
||||||
}
|
|
||||||
if (!sendMSG(ESP_NOTIFICATION_TITLE, msgtpl.c_str())) {
|
|
||||||
esp3d_log_e("Auto notification failed");
|
esp3d_log_e("Auto notification failed");
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
@ -185,12 +175,14 @@ const char* NotificationsService::getTypeString() {
|
|||||||
return "none";
|
return "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NotificationsService::sendMSG(const char* title, const char* message) {
|
bool NotificationsService::sendMSG(const char* title, const char* messagetxt) {
|
||||||
if (!_started) {
|
if (!_started) {
|
||||||
esp3d_log_e("Error notification not started");
|
esp3d_log_e("Error notification not started");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!((strlen(title) == 0) && (strlen(message) == 0))) {
|
|
||||||
|
if (!((strlen(title) == 0) && (strlen(messagetxt) == 0))) {
|
||||||
|
String message = esp3d_string::expandString(messagetxt);
|
||||||
if (_notificationType != ESP_HOMEASSISTANT_NOTIFICATION) {
|
if (_notificationType != ESP_HOMEASSISTANT_NOTIFICATION) {
|
||||||
// push to webui by default
|
// push to webui by default
|
||||||
#if defined(HTTP_FEATURE) || defined(WS_DATA_FEATURE)
|
#if defined(HTTP_FEATURE) || defined(WS_DATA_FEATURE)
|
||||||
@ -204,22 +196,22 @@ bool NotificationsService::sendMSG(const char* title, const char* message) {
|
|||||||
}
|
}
|
||||||
switch (_notificationType) {
|
switch (_notificationType) {
|
||||||
case ESP_PUSHOVER_NOTIFICATION:
|
case ESP_PUSHOVER_NOTIFICATION:
|
||||||
return sendPushoverMSG(title, message);
|
return sendPushoverMSG(title, message.c_str());
|
||||||
break;
|
break;
|
||||||
case ESP_EMAIL_NOTIFICATION:
|
case ESP_EMAIL_NOTIFICATION:
|
||||||
return sendEmailMSG(title, message);
|
return sendEmailMSG(title, message.c_str());
|
||||||
break;
|
break;
|
||||||
case ESP_LINE_NOTIFICATION:
|
case ESP_LINE_NOTIFICATION:
|
||||||
return sendLineMSG(title, message);
|
return sendLineMSG(title, message.c_str());
|
||||||
break;
|
break;
|
||||||
case ESP_TELEGRAM_NOTIFICATION:
|
case ESP_TELEGRAM_NOTIFICATION:
|
||||||
return sendTelegramMSG(title, message);
|
return sendTelegramMSG(title, message.c_str());
|
||||||
break;
|
break;
|
||||||
case ESP_IFTTT_NOTIFICATION:
|
case ESP_IFTTT_NOTIFICATION:
|
||||||
return sendIFTTTMSG(title, message);
|
return sendIFTTTMSG(title, message.c_str());
|
||||||
break;
|
break;
|
||||||
case ESP_HOMEASSISTANT_NOTIFICATION:
|
case ESP_HOMEASSISTANT_NOTIFICATION:
|
||||||
return sendHomeAssistantMSG(title, message);
|
return sendHomeAssistantMSG(title, message.c_str());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user