60
60
#include < pgmspace.h>
61
61
62
62
// increment on change
63
- #define SOFTWARE_VERSION_STR " NRZ-2020-134-B1 "
63
+ #define SOFTWARE_VERSION_STR " NRZ-2020-134-B2 "
64
64
String SOFTWARE_VERSION (SOFTWARE_VERSION_STR);
65
65
66
66
/* ****************************************************************
@@ -148,6 +148,11 @@ namespace cfg {
148
148
// wifi credentials
149
149
char wlanssid[LEN_WLANSSID];
150
150
char wlanpwd[LEN_CFG_PASSWORD];
151
+
152
+ char static_ip[16 ];
153
+ char static_subnet[16 ];
154
+ char static_gateway[16 ];
155
+ char static_dns[16 ];
151
156
152
157
// credentials of the sensor in access point mode
153
158
char fs_ssid[LEN_FS_SSID] = FS_SSID;
@@ -164,6 +169,7 @@ namespace cfg {
164
169
bool sps30_read = SPS30_READ;
165
170
bool bmp_read = BMP_READ;
166
171
bool bmx280_read = BMX280_READ;
172
+ char height_above_sealevel[8 ] = " 0" ;
167
173
bool sht3x_read = SHT3X_READ;
168
174
bool ds18b20_read = DS18B20_READ;
169
175
bool dnms_read = DNMS_READ;
@@ -205,7 +211,7 @@ namespace cfg {
205
211
char url_influx[LEN_URL_INFLUX];
206
212
unsigned port_influx = PORT_INFLUX;
207
213
char user_influx[LEN_USER_INFLUX] = USER_INFLUX;
208
- char pwd_influx[LEN_CFG_PASSWORD ] = PWD_INFLUX;
214
+ char pwd_influx[LEN_PASS_INFLUX ] = PWD_INFLUX;
209
215
char measurement_name_influx[LEN_MEASUREMENT_NAME_INFLUX];
210
216
bool ssl_influx = SSL_INFLUX;
211
217
@@ -502,6 +508,11 @@ struct struct_wifiInfo {
502
508
struct struct_wifiInfo *wifiInfo;
503
509
uint8_t count_wifiInfo;
504
510
511
+ IPAddress addr_static_ip;
512
+ IPAddress addr_static_subnet;
513
+ IPAddress addr_static_gateway;
514
+ IPAddress addr_static_dns;
515
+
505
516
#define msSince (timestamp_before ) (act_milli - (timestamp_before))
506
517
507
518
const char data_first_part[] PROGMEM = " {\" software_version\" : \" " SOFTWARE_VERSION_STR " \" , \" sensordatavalues\" :[" ;
@@ -803,6 +814,31 @@ static void createLoggerConfigs() {
803
814
}
804
815
}
805
816
817
+ /* ****************************************************************
818
+ * dew point helper function *
819
+ *****************************************************************/
820
+ static float dew_point (const float temperature, const float humidity) {
821
+ float dew_temp;
822
+ const float k2 = 17.62 ;
823
+ const float k3 = 243.12 ;
824
+
825
+ dew_temp = k3 * ( ( ( k2 * temperature ) / ( k3 + temperature ) ) + log (humidity / 100 .0f ) ) / ( ( ( k2 * k3 ) / ( k3 + temperature) ) - log (humidity / 100 .0f ) );
826
+
827
+ return dew_temp;
828
+ }
829
+
830
+ /* ****************************************************************
831
+ * dew point helper function *
832
+ *****************************************************************/
833
+ static float pressure_at_sealevel (const float temperature, const float pressure) {
834
+ float pressure_at_sealevel;
835
+
836
+ pressure_at_sealevel = pressure * pow (((temperature + 273 .15f )/ (temperature + 273 .15f + (0 .0065f * readCorrectionOffset (cfg::height_above_sealevel)))),-5 .255f );
837
+
838
+ return pressure_at_sealevel;
839
+ }
840
+
841
+
806
842
/* ****************************************************************
807
843
* html helper functions *
808
844
*****************************************************************/
@@ -1100,6 +1136,14 @@ static void webserver_config_send_body_get(String& page_content) {
1100
1136
add_form_checkbox (Config_display_wifi_info, FPSTR (INTL_DISPLAY_WIFI_INFO));
1101
1137
add_form_checkbox (Config_display_device_info, FPSTR (INTL_DISPLAY_DEVICE_INFO));
1102
1138
1139
+ page_content = FPSTR (WEB_BR_LF_B);
1140
+ page_content += F (INTL_STATIC_IP_TEXT " </b><br/>" );
1141
+ add_form_input (page_content, Config_static_ip, FPSTR (INTL_STATIC_IP), 15 );
1142
+ add_form_input (page_content, Config_static_subnet, FPSTR (INTL_STATIC_SUBNET), 15 );
1143
+ add_form_input (page_content, Config_static_gateway, FPSTR (INTL_STATIC_GATEWAY), 15 );
1144
+ add_form_input (page_content, Config_static_dns, FPSTR (INTL_STATIC_DNS), 15 );
1145
+ page_content += FPSTR (BR_TAG);
1146
+
1103
1147
server.sendContent (page_content);
1104
1148
page_content = FPSTR (WEB_BR_LF_B);
1105
1149
page_content += F (INTL_FIRMWARE " </b> " );
@@ -1147,6 +1191,7 @@ static void webserver_config_send_body_get(String& page_content) {
1147
1191
page_content += FPSTR (TABLE_TAG_OPEN);
1148
1192
add_form_input (page_content, Config_dnms_correction, FPSTR (INTL_DNMS_CORRECTION), LEN_DNMS_CORRECTION-1 );
1149
1193
add_form_input (page_content, Config_temp_correction, FPSTR (INTL_TEMP_CORRECTION), LEN_TEMP_CORRECTION-1 );
1194
+ add_form_input (page_content, Config_height_above_sealevel, FPSTR (INTL_HEIGHT_ABOVE_SEALEVEL), LEN_HEIGHT_ABOVE_SEALEVEL-1 );
1150
1195
page_content += FPSTR (TABLE_TAG_CLOSE_BR);
1151
1196
1152
1197
page_content += FPSTR (WEB_BR_LF_B);
@@ -1399,8 +1444,10 @@ static void webserver_values() {
1399
1444
start_html_page (page_content, FPSTR (INTL_CURRENT_DATA));
1400
1445
const String unit_Deg (" °" );
1401
1446
const String unit_P (" hPa" );
1447
+ const String unit_T (" °C" );
1402
1448
const String unit_NC ();
1403
1449
const String unit_LA (F (" dB(A)" ));
1450
+ float dew_point_temp;
1404
1451
1405
1452
const int signal_quality = calcWiFiSignalQuality (last_signal_strength);
1406
1453
debug_outln_info (F (" ws: values ..." ));
@@ -1488,25 +1535,33 @@ static void webserver_values() {
1488
1535
if (cfg::htu21d_read) {
1489
1536
add_table_t_value (FPSTR (SENSORS_HTU21D), FPSTR (INTL_TEMPERATURE), last_value_HTU21D_T);
1490
1537
add_table_h_value (FPSTR (SENSORS_HTU21D), FPSTR (INTL_HUMIDITY), last_value_HTU21D_H);
1538
+ dew_point_temp = dew_point (last_value_HTU21D_T, last_value_HTU21D_H);
1539
+ add_table_value (FPSTR (SENSORS_HTU21D), FPSTR (INTL_DEW_POINT), isnan (dew_point_temp) ? " -" : String (dew_point_temp,1 ), unit_T);
1491
1540
page_content += FPSTR (EMPTY_ROW);
1492
1541
}
1493
1542
if (cfg::bmp_read) {
1494
1543
add_table_t_value (FPSTR (SENSORS_BMP180), FPSTR (INTL_TEMPERATURE), last_value_BMP_T);
1495
1544
add_table_value (FPSTR (SENSORS_BMP180), FPSTR (INTL_PRESSURE), check_display_value (last_value_BMP_P / 100 .0f , (-1 / 100 .0f ), 2 , 0 ), unit_P);
1545
+ add_table_value (FPSTR (SENSORS_BMP180), FPSTR (INTL_PRESSURE_AT_SEALEVEL), last_value_BMP_P != -1 .0f ? String (pressure_at_sealevel (last_value_BMP_T, last_value_BMP_P / 100 .0f ), 2 ) : " -" , unit_P);
1496
1546
page_content += FPSTR (EMPTY_ROW);
1497
1547
}
1498
1548
if (cfg::bmx280_read) {
1499
1549
const char * const sensor_name = (bmx280.sensorID () == BME280_SENSOR_ID) ? SENSORS_BME280 : SENSORS_BMP280;
1500
1550
add_table_t_value (FPSTR (sensor_name), FPSTR (INTL_TEMPERATURE), last_value_BMX280_T);
1501
1551
add_table_value (FPSTR (sensor_name), FPSTR (INTL_PRESSURE), check_display_value (last_value_BMX280_P / 100 .0f , (-1 / 100 .0f ), 2 , 0 ), unit_P);
1552
+ add_table_value (FPSTR (sensor_name), FPSTR (INTL_PRESSURE_AT_SEALEVEL), last_value_BMX280_P != -1 .0f ? String (pressure_at_sealevel (last_value_BMX280_T, last_value_BMX280_P / 100 .0f ), 2 ) : " -" , unit_P);
1502
1553
if (bmx280.sensorID () == BME280_SENSOR_ID) {
1503
1554
add_table_h_value (FPSTR (sensor_name), FPSTR (INTL_HUMIDITY), last_value_BME280_H);
1555
+ dew_point_temp = dew_point (last_value_BMX280_T, last_value_BME280_H);
1556
+ add_table_value (FPSTR (sensor_name), FPSTR (INTL_DEW_POINT), isnan (dew_point_temp) ? " -" : String (dew_point_temp,1 ), unit_T);
1504
1557
}
1505
1558
page_content += FPSTR (EMPTY_ROW);
1506
1559
}
1507
1560
if (cfg::sht3x_read) {
1508
1561
add_table_t_value (FPSTR (SENSORS_SHT3X), FPSTR (INTL_TEMPERATURE), last_value_SHT3X_T);
1509
1562
add_table_h_value (FPSTR (SENSORS_SHT3X), FPSTR (INTL_HUMIDITY), last_value_SHT3X_H);
1563
+ dew_point_temp = dew_point (last_value_SHT3X_T, last_value_SHT3X_H);
1564
+ add_table_value (FPSTR (SENSORS_SHT3X), FPSTR (INTL_DEW_POINT), isnan (dew_point_temp) ? " -" : String (dew_point_temp,1 ), unit_T);
1510
1565
page_content += FPSTR (EMPTY_ROW);
1511
1566
}
1512
1567
if (cfg::ds18b20_read) {
@@ -1647,11 +1702,9 @@ static void webserver_status() {
1647
1702
end_html_page (page_content);
1648
1703
}
1649
1704
1650
-
1651
1705
/* ****************************************************************
1652
1706
* Webserver read serial ring buffer *
1653
1707
*****************************************************************/
1654
-
1655
1708
static void webserver_serial () {
1656
1709
String s (Debug.popLines ());
1657
1710
@@ -2093,6 +2146,9 @@ static void connectWifi() {
2093
2146
2094
2147
#if defined(ESP8266)
2095
2148
WiFi.hostname (cfg::fs_ssid);
2149
+ if (addr_static_ip.fromString (cfg::static_ip) && addr_static_subnet.fromString (cfg::static_subnet) && addr_static_gateway.fromString (cfg::static_gateway) && addr_static_dns.fromString (cfg::static_dns)) {
2150
+ WiFi.config (addr_static_ip, addr_static_subnet, addr_static_gateway, addr_static_dns, addr_static_dns);
2151
+ }
2096
2152
#endif
2097
2153
2098
2154
#if defined(ESP32)
@@ -2130,7 +2186,6 @@ static void connectWifi() {
2130
2186
}
2131
2187
}
2132
2188
2133
-
2134
2189
static WiFiClient* getNewLoggerWiFiClient (const LoggerEntry logger) {
2135
2190
2136
2191
WiFiClient* _client;
0 commit comments