the streaming function(s) client findUntil is only working on the first call. While this has been documented in other posts to the forum, I am looking for a method to process the reply stream so that the web page and arduino parameters are updated. Any help appreciated. Change POST service code attached.
[quote]
//=============================================================================
//================================ Pool Settings Page =====================
//=============================================================================
void showSettings(boolean isPost)
{
if(isPost)
{
//====================================== POST Param Processing =========
Serial.println("Doing POST");// DEBUG
client.find("\n\r"); // skip to the body
// find parameters starting with "Solar" stop on the first blank line
Serial.println(F("searching for parms"));
//====================================================================
// DEBUG area for POST Capture and Display
// ============= Solar System ON/OFF ==================
if(client.findUntil("Solar=", "\n\r")){
int val = client.parseInt(); // 0 or 1
Serial.print("Solar ");
Serial.print("=");
Serial.println(val);
SolarSystem = val;
Serial.print("SetSolarVal=");
Serial.println(SolarSystem);
}
else
// ================ WaterValve ON/OFF ========================
if(client.findUntil("WaterValve=", "\n\r")){
int val = client.parseInt(); // 0 or 1
Serial.print("WaterValve ");
Serial.print("=");
Serial.println(val);
WaterValvePositionCurrent = val;
Serial.print("SetWaterValve=");
Serial.println(WaterValvePositionCurrent);
digitalWrite(WaterValve_Pin, val);
}
else
// ================ DrainValve ON/OFF ========================
if(client.findUntil("Drain=","\n\r")){
int val = client.parseInt(); // 0 or 1
Serial.print("DrainValve ");
Serial.print("=");
Serial.println(val);
DrainValvePositionCurrent = val;
Serial.print("SetDrainValve=");
Serial.println(DrainValvePositionCurrent);
digitalWrite(DrainValve_Pin, val);
}
else
// ================ Set New Temp SetPoint ========================
if(client.find("New+Set+Point=")){
int val = client.parseInt(); // 0 or 1
Serial.print("SetPoint Update ");
Serial.print("=");
Serial.println(val);
SolarSetPoint = val;
Serial.print("New SetPoint=");
Serial.println(SolarSetPoint);
}
// =================== Show Setting Options =================
}
Serial.println(F("Pool Settings"));
sendHeader("Multi-page Pool Settings");
client.println(F("<h1 style=\"text-align:center;color:blue\">Pool Settings</h1>"));
// =========================================================
client.println(F("<h2>Change Options</h2>"));
client.println(F("<hr /><h3>Enable Pool System</h3>"));
//=========================================================
// Table with 3 entries and no borders
client.println(F("<table cellspacing=\"10\"><tr>"));
client.println(F("<td>"));
htmlButton( "On", "Solar", ON);
client.println(F("</td>"));
client.println(F("<td>"));
htmlButton("Off", "Solar", OFF);
client.println(F("</td>"));
client.println(F("<td>"));
if(SolarSystem == OFF)
{
client.print(" System is OFF");
printP(led_off);
}
else
{
client.print(" System is ON");
printP(led_on);
}
client.println(F("</td>"));
client.println(F("</tr></table>"));
client.println(F("</td>"));
client.println(F("</tr></table>"));
//============================================================
client.print(F("</form></p><h3>Change Pool Temp Settings</h3>"));
//=========================================================
// Table with 2 entries and no borders
client.println(F("<table cellspacing=\"10\"><tr>"));
client.println(F("<td>"));
client.print(F("<p>Solar Heat SetPoint: (Range 75 to 99 degrees F)
Current Setting: "));
client.print(SolarSetPoint);
client.print(F(" ° F</p"));
client.println(F("</td>"));
client.println(F("<td>"));
client.print(F("<form action='/Settings/' method= 'POST' ><input type=\"text\" size = '3' name=\"New Set Point\"><input type=\"submit\" value=\"TempSet\"><form type=”submit”
"));
client.println(F("</td>"));
client.println(F("</tr></table>"));
//============================================================
client.print(F("</p><h3>Add Water To Pool</h3><p>"));
//=========================================================
// Table with 3 entries and no borders
client.println(F("<table cellspacing=\"10\"><tr>"));
client.println(F("<td>"));
htmlButton( "On", "WaterValve", ON);
client.println(F("</td>"));
client.println(F("<td>"));
htmlButton("Off", "WaterValve", OFF);
client.println(F("</td>"));
client.println(F("<td>"));
if(digitalRead(WaterValve_Pin) == LOW)
{
client.print(" Valve is Off");
printP(led_off);
}
else
{
client.print(" Valve is On");
printP(led_on);
}
client.println(F("</td>"));
client.println(F("</tr></table>"));
//============================================================
client.print(F("</p><h3>Drain Water From Pool</h3><p>"));
//=========================================================
// Table with 3 entries and no borders
client.println(F("<table cellspacing=\"10\"><tr>"));
client.println(F("<td>"));
htmlButton( "Open", "Drain", ON);
client.println(F("</td>"));
client.println(F("<td>"));
htmlButton("Close", "Drain", OFF);
client.println(F("</td>"));
client.println(F("<td>"));
if(digitalRead(DrainValve_Pin) == LOW)
{
client.print(" Drain Valve is Closed");
printP(led_off);
}
else
{
client.print(" Drain Valve is Open");
printP(led_on);
}
client.println(F("</td>"));
client.println(F("</tr></table>"));
//============================================================
Serial.print("Debug After Settings>");
Serial.println(buffer); //DEBUG
}
// ===================== Functions =============================
// create an HTML button
void htmlButton( char * label, char *name, int value)
{
client.print(F("<form action='/Settings/' method='POST'><p><input type='hidden' name='"));
client.print(name);
//client.print(nameId);
client.print(F("' value='"));
client.print(value);
client.print(F("'><input type='submit' value='"));
client.print(label);
client.print(F("'/></form>"));
}
[/quote]
PoolServer2.ino (35.5 KB)