WebClient.h


1
/**
2
 * WEB client interface Temperature-Control for DS18B20 (Dallas)
3
 * Version 1.00
4
 * 11.02.2023 P. Rebesky
5
 * author Creator P.Rebesky
6
 * Copyright (©): 2023 by Peter Rebesky
7
 * This code can use in private cases only. Every business or companies using of this codes or codes parts is required an approval of us (me)
8
 * Every private using can exchange some parts of code or modify some code-lines. This code is allowed change for private use only.
9
 * This software is basicly owned by Peter Rebesky and any comercial using is forbidden without approval of us (me).
10
 **/
11
#ifndef WEB_CLIENT_H_
12
#define WEB_CLIENT_H_
13
14
#include "global.h"
15
#include "configFS.h"
16
17
extern configFS Config;
18
19
extern String getFilesFromServer(IPAddress ip,String actVersion, String updateServer);
20
extern String getTime2String(int hour,int minute,int second);
21
extern String getDate2String(int year,int month,int day);
22
extern bool syncron_NTP_Time(bool correctOn);
23
extern void getTime2Value();
24
25
//*** declarations ***
26
String prepareRefreshJSON();
27
String showSetup();
28
//*** declaration end ***//
29
          
30
String webSave(String PostValues){
31
  Config.savePostValues(PostValues);
32
  String ret = HTTP_ANSWER;
33
  ret += HTTP_HEAD_IoT;
34
  ret += "<title>"; ret += Config.getName(); ret += "</title>";
35
  ret += HTTP_BODYSTYLE; ret += "<body>";   
36
  ret += HTTP_DIV_FIELD;
37
//  ret += PostValues;
38
  ret += "<p><b>Ihre Eingaben wurden gespeichert.</b></p>";
39
  ret += "<hr><p><form action=\"back\" method=\"get\"><button type=\"submit\">OK</button></form></p>";
40
  ret += HTTP_TEXT_END;
41
  return ret;
42
}
43
//*** end ***
44
        
45
String webSetup(){
46
  String ret = HTTP_ANSWER; String checkedJSON; String checkedURL; String checkedPush; String checkedPull;
47
  ret += HTTP_HEAD_IoT;
48
  ret += "<title>"; ret += Config.getName(); ret += "</title>";
49
  ret += HTTP_BODYSTYLE;  ret += "<body>";   
50
  ret += HTTP_DIV_FIELD;
51
  ret += "<h3>IoT Einstellungen</h3>";
52
  ret += "<form action=\"save\" method=\"post\">";
53
  ret += "<input type=\"number\" name=\"d_data\" value=\"1\" hidden>";
54
  ret += "<p><label>IoT Name:</label><br><input type=\"text\" name=\"n_iot\" maxlength=\"32\" value=\""; ret += Config.getName(); ret += "\" required></p><hr>";
55
  ret += "<p><label>Name Temperatursensor 1:</label><br><input type=\"text\" name=\"n_sens1\" maxlength=\"32\" value=\""; ret += Config.getSensorName(1); ret += "\"></p>";
56
  ret += "<p><label>Name Temperatursensor 2:</label><br><input type=\"text\" name=\"n_sens2\" maxlength=\"32\" value=\""; ret += Config.getSensorName(2); ret += "\"></p>";
57
  ret += "<p><label>Name Temperatursensor 3:</label><br><input type=\"text\" name=\"n_sens3\" maxlength=\"32\" value=\""; ret += Config.getSensorName(3); ret += "\"></p>";
58
  ret += "<p><label>Name Temperatursensor 4:</label><br><input type=\"text\" name=\"n_sens4\" maxlength=\"32\" value=\""; ret += Config.getSensorName(4); ret += "\"></p><hr>";
59
  ret += "<p>Send Data to Server as:<br>";
60
  if(Config.sendJSON) checkedJSON="checked"; else checkedURL="checked"; // set checked input radio button according config
61
  ret += "<input style=\"width:10%\" type=\"radio\" name=\"c_type\" value=\"1\""; ret+=checkedJSON; ret+="><label>JSON</label>";
62
  ret += "<input style=\"width:10%\" type=\"radio\" name=\"c_type\" value=\"0\""; ret+=checkedURL; ret+="><label>URL-encoded</label></p>";
63
  ret += "<p>Send data as push or get data by server:<br>";
64
  if(Config.sendPUSH) checkedPush="checked"; else checkedPull="checked"; // set checked input radio button according config
65
  ret += "<input style=\"width:10%\" type=\"radio\" name=\"c_push\" value=\"1\""; ret+=checkedPush; ret+="><label>push</label>";
66
  ret += "<input style=\"width:10%\" type=\"radio\" name=\"c_push\" value=\"0\""; ret+=checkedPull; ret+="><label>get</label></p>";
67
  ret += "<p><label>Daten-Server:</label><br><input type=\"text\" name=\"t_url\" maxlength=\"64\" value=\""; ret += Config.getTargetURL(); ret += "\" required></p>";
68
  ret += "<hr>";
69
  ret += "<p><button type=\"submit\">Speichern</button>";
70
  ret += "<button type=\"submit\" formaction=\"back\">Zurück</button></p></form>";
71
  ret += "<br><a href=\"firmware\">Check for update firmware</a>";
72
  ret += "<br><hr><p><a href=\"http://";
73
  ret += Config.getTargetServer();
74
  ret += "/help.html\"/help.html\">Beschreibung</a></p>";
75
  ret += HTTP_TEXT_END;
76
  return ret;
77
}
78
//*** end ***
79
          
80
String webShowSetup(){
81
  String ret = HTTP_ANSWER;
82
  ret += HTTP_BODYSTYLE; ret += "<body>";
83
  ret += HTTP_DIV_FIELD;
84
  ret += showSetup(); //debug
85
  ret += HTTP_TEXT_END;
86
  return ret;
87
}
88
//*** end ***          
89
90
String webFavicon(){
91
  String ret = HTTP_ANSWER;
92
  ret += "none";
93
  return ret;
94
}
95
//*** end ***
96
          
97
String webMain(String payload){ // Prepare the response main screen
98
  String ret = HTTP_ANSWER;
99
  ret += HTTP_HEAD_REFRESH;
100
  ret += "<title>"; ret+=Config.getName(); ret+="</title>";
101
  ret += HTTP_BODYSTYLE; ret += "</body>";
102
  ret += HTTP_DIV_FIELD;
103
  ret += "<p><b>"; ret+=Config.getName(); ret+="</b></p>";
104
  ret += "<p>Zeit: <a style=\"text-decoration:none\" href=\"setTime\">&#x1F504;</a><br>";
105
  ret += "<input id=\"time\" value=\""; ret += getTime2String(_act_date_time[_HOUR],_act_date_time[_MINUTE],_act_date_time[_SECOND]); ret += "\" readonly><br>";
106
  ret += "Datum:<br><input value=\""; ret += getDate2String(_act_date_time[_YEAR],_act_date_time[_MONTH],_act_date_time[_DAY]); ret += "\" readonly><br>";
107
  ret += "IoT-IP:<br><input value=\"";  ret += WiFi.localIP().toString(); ret += "\" readonly></p>";
108
  ret += "<hr><p>Server Sendestatus:<br>";
109
  if(_transmitResult != "") ret += _transmitResult;
110
  else { ret += Config.getName(); if(Config.sendPUSH)ret+=" Push-Mode"; else ret+=" Pull-Mode";}
111
  ret += "</p><hr>";
112
  ret += "Temperatur "; ret+=Config.getSensorName(1); ret+=":<br><input id=\"temp1\" value=\""; ret += _temperature1; ret += " °C\" readonly><br>";
113
  if(_temperature2 > -100){ret += "Temperatur "; ret+=Config.getSensorName(2); ret+=":<br><input id=\"temp2\" value=\""; ret += _temperature2; ret += " °C\" readonly><br>";}
114
  if(_temperature3 > -100){ret += "Temperatur "; ret+=Config.getSensorName(3); ret+=":<br><input id=\"temp3\" value=\""; ret += _temperature3; ret += " °C\" readonly><br>";}
115
  if(_temperature4 > -100){ret += "Temperatur "; ret+=Config.getSensorName(4); ret+=":<br><input id=\"temp4\" value=\""; ret += _temperature4; ret += " °C\" readonly><br>";}
116
  ret += "<hr>";
117
  ret += "<p>Softwareversion: ";
118
  ret += Version;
119
  ret += "</p>";
120
  ret += HTTP_SETUP_BUTTON;
121
  ret += HTTP_JS_SCRIPT;
122
  return ret;
123
}
124
//*** end ***
125
//*** refresh clock and date ***/     
126
String webSetTime(){
127
  String ret = HTTP_ANSWER;
128
  ret += HTTP_BODYSTYLE; ret += "<body>";   
129
  ret += HTTP_DIV_FIELD;
130
  ret += "<h4>Die Uhr wird jetzt neu synchronisiert.</h4>";
131
  ret += "<p>Zeit:<br><input value=\""; ret += getTime2String(_act_date_time[_HOUR],_act_date_time[_MINUTE],_act_date_time[_SECOND]); ret += "\" readonly><br>";
132
  ret += "Unix-Time: "; ret += _timestamp; ret +="<br>";
133
  if (syncron_NTP_Time(true) == true){
134
    getTime2Value();
135
    ret += "Neue Zeit:<br><input value=\""; ret += getTime2String(_act_date_time[_HOUR],_act_date_time[_MINUTE],_act_date_time[_SECOND]); ret += "\" readonly><br>";
136
    ret += "Unix-Time: "; ret += _timestamp; ret +="<br>";
137
  } else {
138
    ret += "NTP Serverfehler! Aktuallisierung nicht erfolgt.<br>Bitte eine Wartezeit von 2 Minuten,<br>bis zur wiederholten, manuellen Aktuallisierung einhalten.<br>";        
139
  }
140
  ret += "</p><hr><p><form action=\"back\" method=\"get\"><button type=\"submit\">OK</button></form></p>";
141
  ret += HTTP_TEXT_END;
142
  return ret;
143
}
144
//**** refresh for browser screen of values *********//
145
String getRefreshJSON(){
146
  String ret = HTTP_ANSWERJSON;
147
  ret += prepareRefreshJSON();
148
  return ret;
149
}
150
151
//***** get return internal values and display on browser *****//
152
String showSetup(){
153
  DeviceAddress tAddress;
154
  String ret = "<h4>System Variablen</h4><hr>";
155
  ret += "<p>";
156
  ret += "URL: -"; ret += Config.getTargetURL(); ret +="-<br>";
157
  ret += "Update-Server: -"; ret += Config.getTargetServer(); ret+="-<br>";
158
  ret += "Timestamp: -"; ret +=_timestamp; ret +="-<br>";
159
  ret += "AdjustSec: -"; ret +=_secAdjust; ret +="-<br>";
160
  ret += "Connect-Sensors: -"; ret +=_numberOfSensors; ret +="-<br>";
161
  ret += "Filesystem: "; 
162
  if(Config.getMounted()) {ret+="Filesystem mounted.<br>Free-Space: "; ret+=Config.getFreeSpace(); ret+="kByte";}
163
  else ret += "Filesystem not mounted!";
164
  ret +="<br>";
165
  ret +="</p>";
166
  ret += "</p><hr><p><form action=\"back\" method=\"get\"><button type=\"submit\">OK</button></form></p>";
167
return ret;
168
}
169
//***** get return json for refresh display on browser or *****//
170
String prepareRefreshJSON(){
171
  String json = "{\"ti\":\""; json+=getTime2String(_act_date_time[_HOUR],_act_date_time[_MINUTE],_act_date_time[_SECOND]); json+="\",";
172
  json += "\"t1\":"; json+=_temperature1; json+=",";
173
  json += "\"t2\":"; json+=_temperature2; json+=",";
174
  json += "\"t3\":"; json+=_temperature3; json+=",";
175
  json += "\"t4\":"; json+=_temperature4; json+="}";
176
  return json;
177
}
178
179
//*** end ***
180
#endif //*** WEB_CLIENT_H_