Add custom message ability #47

Merged
W1CDN merged 1 commits from custom-message into main 2023-09-16 15:48:04 -05:00

View File

@ -38,10 +38,10 @@ const int alarmPin = 4; // pin to monitor for RTC alarms
const char* ssid = WIFI_SSID;
const char* password = WIFI_PASSWORD;
const char* PARAM_STRING = "inputString";
const char* PARAM_SEND = "inputSend";
const char* PARAM_WPM = "inputWPM";
const char* PARAM_MSG = "inputMsg";
const char* PARAM_CMSG = "inputCustomMsg";
const char* PARAM_FLOAT = "inputFloat";
const char* PARAM_TIME = "inputTimeUnix";
const char* PARAM_START = "inputStartTimeUnix";
@ -51,11 +51,11 @@ const char* PARAM_CYCLEID = "inputCycleID";
const char* PARAM_NTRANS = "inputNtransmitters";
// Global variables
String yourInputString;
int yourInputSend;
int yourInputWPM;
int yourInputMsg;
int yourInputMsg_old; // to save previous state and check changes
String yourInputCustomMsg;
float yourInputFloat;
uint32_t yourInputTime; //to keep time
uint32_t yourInputStartTimeUnix;
@ -68,7 +68,7 @@ long start_millis = 0;
long stop_millis = 0;
long pause_until_millis = 0;
// HTML web page to handle 3 input fields (inputString, inputSend, inputFloat)
// HTML web page to handle input fields
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head>
<link rel="icon" href="data:,">
@ -130,13 +130,15 @@ const char index_html[] PROGMEM = R"rawliteral(
Message:
<select name="inputMsg" id="message">
<option value="0">0 - TEST TEST TEST DE W1CDN</option>
<option value="0">0 - Custom Message</option>
<option value="1">1 - MOE</option>
<option value="2">2 - MOI</option>
<option value="3">3 - MOS</option>
<option value="4">4 - MOH</option>
<option value="5">5 - MO5</option>
</select><br>
Custom message: <input type="text" name="inputCustomMsg" value = "%inputCustomMsg%"><br>
Speed: <input type="number" name="inputWPM" value = %inputWPM%> WPM
</p>
@ -160,7 +162,6 @@ const char index_html[] PROGMEM = R"rawliteral(
<input type="hidden" name="inputTimeUnix" id="js_time_unix">
<!-- Extra fields just in case I need them -->
<input type="hidden" name="inputString" value = %inputString%>
<input type="hidden" name="inputFloat" value = %inputFloat%>
<input type="submit" value="Submit"">
@ -211,8 +212,8 @@ void writeFile(fs::FS &fs, const char * path, const char * message){
// Replaces placeholder in web UI with stored values
String processor(const String& var){
//Serial.println(var);
if(var == "inputString"){
return readFile(SPIFFS, "/inputString.txt");
if(var == "inputCustomMsg"){
return readFile(SPIFFS, "/inputCustomMsg.txt");
}
else if(var == "inputSend"){
return readFile(SPIFFS, "/inputSend.txt");
@ -308,7 +309,7 @@ void setup() {
}
// Read in existing data
yourInputString = readFile(SPIFFS, "/inputString.txt");
yourInputCustomMsg = readFile(SPIFFS, "/inputCustomMsg.txt");
yourInputSend = readFile(SPIFFS, "/inputSend.txt").toInt();
yourInputWPM = readFile(SPIFFS, "/inputWPM.txt").toFloat();
yourInputMsg = readFile(SPIFFS, "/inputMsg.txt").toInt();
@ -324,8 +325,8 @@ void setup() {
// On restart, keep doing what you were doing before
yourInputMsg_old = yourInputMsg;
if(yourInputMsg == 0){
sender_blink.setMessage(String("test test test de w1cdn "));
sender_key.setMessage(String("test test test de w1cdn "));
sender_blink.setMessage(yourInputCustomMsg);
sender_key.setMessage(yourInputCustomMsg);
} else if(yourInputMsg == 1){
sender_blink.setMessage(String("moe "));
sender_key.setMessage(String("moe "));
@ -358,14 +359,17 @@ void setup() {
request->send_P(200, "text/html", index_html, processor);
});
// Send a GET request to <ESP_IP>/get?inputString=<inputMessage>
// Send a GET request to <ESP_IP>/get?inputCustomMsg=<inputMessage>
server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
String inputMessage;
// GET inputString value on <ESP_IP>/get?inputString=<inputMessage>
if (request->hasParam(PARAM_STRING)) {
inputMessage = request->getParam(PARAM_STRING)->value();
writeFile(SPIFFS, "/inputString.txt", inputMessage.c_str());
yourInputString = inputMessage;
// GET inputCustomMsg value on <ESP_IP>/get?inputCustomMsg=<inputMessage>
if (request->hasParam(PARAM_CMSG)) {
inputMessage = request->getParam(PARAM_CMSG)->value();
// arduinomorse needs lowercase characters
std::transform(inputMessage.begin(), inputMessage.end(), inputMessage.begin(), ::tolower);
writeFile(SPIFFS, "/inputCustomMsg.txt", inputMessage.c_str());
yourInputCustomMsg = inputMessage;
}
// GET inputSend value on <ESP_IP>/get?inputSend=<inputMessage>
if (request->hasParam(PARAM_SEND)) {
@ -397,8 +401,8 @@ void setup() {
// Check the message every time the form is submitted.
if(yourInputMsg == 0){
sender_blink.setMessage(String("test test test de w1cdn "));
sender_key.setMessage(String("test test test de w1cdn "));
sender_blink.setMessage(yourInputCustomMsg);
sender_key.setMessage(yourInputCustomMsg);
} else if(yourInputMsg == 1){
sender_blink.setMessage(String("moe "));
sender_key.setMessage(String("moe "));