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