<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://raz0rsedge.de/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Servermonitor_Betriebsumgebung</id>
	<title>Servermonitor Betriebsumgebung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://raz0rsedge.de/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Servermonitor_Betriebsumgebung"/>
	<link rel="alternate" type="text/html" href="https://raz0rsedge.de/mediawiki/index.php?title=Servermonitor_Betriebsumgebung&amp;action=history"/>
	<updated>2026-05-06T15:22:42Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in AirSpaceWatch &amp; More</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://raz0rsedge.de/mediawiki/index.php?title=Servermonitor_Betriebsumgebung&amp;diff=252&amp;oldid=prev</id>
		<title>Raz0rsedge am 26. Oktober 2020 um 20:47 Uhr</title>
		<link rel="alternate" type="text/html" href="https://raz0rsedge.de/mediawiki/index.php?title=Servermonitor_Betriebsumgebung&amp;diff=252&amp;oldid=prev"/>
		<updated>2020-10-26T20:47:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 26. Oktober 2020, 20:47 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;bash&lt;/del&gt;&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * BlueDot_BME280_TSL2591 Version 1.0.4&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * BlueDot_BME280_TSL2591 Version 1.0.4&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-251:rev-252 --&gt;
&lt;/table&gt;</summary>
		<author><name>Raz0rsedge</name></author>
		
	</entry>
	<entry>
		<id>https://raz0rsedge.de/mediawiki/index.php?title=Servermonitor_Betriebsumgebung&amp;diff=251&amp;oldid=prev</id>
		<title>Raz0rsedge am 26. Oktober 2020 um 20:46 Uhr</title>
		<link rel="alternate" type="text/html" href="https://raz0rsedge.de/mediawiki/index.php?title=Servermonitor_Betriebsumgebung&amp;diff=251&amp;oldid=prev"/>
		<updated>2020-10-26T20:46:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 26. Oktober 2020, 20:46 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l17&quot; &gt;Zeile 17:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 17:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// constants&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// constants&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;const char* ssid       = &amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ITHURTSWHENIP&lt;/del&gt;&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;const char* ssid       = &amp;quot; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;    ASW     &lt;/ins&gt;&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;const char* password   = &amp;quot;*************&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;const char* password   = &amp;quot;*************&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;const char* ntpServer = &amp;quot;raz0rsedge.de&amp;quot;; //my very own ntp server ;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;const char* ntpServer = &amp;quot;raz0rsedge.de&amp;quot;; //my very own ntp server ;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff::1.12:old-242:rev-251 --&gt;
&lt;/table&gt;</summary>
		<author><name>Raz0rsedge</name></author>
		
	</entry>
	<entry>
		<id>https://raz0rsedge.de/mediawiki/index.php?title=Servermonitor_Betriebsumgebung&amp;diff=242&amp;oldid=prev</id>
		<title>Raz0rsedge: Arduino http Monitor für Node-Red</title>
		<link rel="alternate" type="text/html" href="https://raz0rsedge.de/mediawiki/index.php?title=Servermonitor_Betriebsumgebung&amp;diff=242&amp;oldid=prev"/>
		<updated>2020-10-26T20:34:57Z</updated>

		<summary type="html">&lt;p&gt;Arduino http Monitor für Node-Red&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;#039;line&amp;#039;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * BlueDot_BME280_TSL2591 Version 1.0.4&lt;br /&gt;
 * Wire Version 1.0.1&lt;br /&gt;
 * WiFi Version 1.0&lt;br /&gt;
 * Server ENV http-Monitor for Node-Red by Raz0rsEdge 2020&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;quot;BlueDot_BME280_TSL2591.h&amp;quot;&lt;br /&gt;
#include &amp;quot;time.h&amp;quot; // for ntp and time conversion&lt;br /&gt;
#include &amp;quot;driver/adc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;esp_system.h&amp;quot;&lt;br /&gt;
#include &amp;quot;esp_adc_cal.h&amp;quot;&lt;br /&gt;
#include &amp;quot;soc/soc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;soc/rtc_cntl_reg.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// constants&lt;br /&gt;
const char* ssid       = &amp;quot;ITHURTSWHENIP&amp;quot;;&lt;br /&gt;
const char* password   = &amp;quot;*************&amp;quot;;&lt;br /&gt;
const char* ntpServer = &amp;quot;raz0rsedge.de&amp;quot;; //my very own ntp server ;)&lt;br /&gt;
const long  gmtOffset_sec = 3600;&lt;br /&gt;
const int   daylightOffset_sec = 0; //3600 for summer time&lt;br /&gt;
const int LED = 3; //Internal LED gpio depends on board, usin WIDORA AIR&lt;br /&gt;
uint32_t voltageR;&lt;br /&gt;
&lt;br /&gt;
// vars&lt;br /&gt;
#define INT_STR_SIZE 16&lt;br /&gt;
#define V_REF   1100&lt;br /&gt;
#define ADC1_TEST_CHANNEL (ADC1_CHANNEL_6)      //GPIO 34&lt;br /&gt;
#define V_REF_TO_GPIO  //Remove comment on define to route v_ref to GPIO&lt;br /&gt;
#define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */&lt;br /&gt;
#define TIME_TO_SLEEP  120      /* Time ESP32 will go to sleep (in seconds) */&lt;br /&gt;
#define SEALEVELPRESSURE_HPA (1013.25) //Standarddruckflaeche Meereshoehe&lt;br /&gt;
char buffer[INT_STR_SIZE];&lt;br /&gt;
bool touchdetected = false; // init bool for touch&lt;br /&gt;
&lt;br /&gt;
BlueDot_BME280_TSL2591 bme280;&lt;br /&gt;
BlueDot_BME280_TSL2591 tsl2591;&lt;br /&gt;
WiFiServer server(80); // sensor status site init port&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  delay(2500); //settlement&lt;br /&gt;
  fflush(stdout);  &lt;br /&gt;
  Serial.println(F(&amp;quot;Basic IP Weather Station&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
  bme280.parameter.I2CAddress = 0x77;     //The BME280 is hardwired to use the I2C Address 0x77&lt;br /&gt;
  tsl2591.parameter.I2CAddress = 0x29;&lt;br /&gt;
  Wire.begin(21, 22);                     //Use this for NodeMCU boards, SDA, SCL&lt;br /&gt;
&lt;br /&gt;
  tsl2591.parameter.gain = 0b01;&lt;br /&gt;
  tsl2591.parameter.integration = 0b000;&lt;br /&gt;
  tsl2591.config_TSL2591();&lt;br /&gt;
  bme280.parameter.sensorMode = 0b11;                   //Choose sensor mode, this.default&lt;br /&gt;
  //0b000:      factor 0 (filter off)&lt;br /&gt;
  //0b001:      factor 2&lt;br /&gt;
  //0b010:      factor 4&lt;br /&gt;
  //0b011:      factor 8&lt;br /&gt;
  //0b100:      factor 16 (default value)&lt;br /&gt;
  bme280.parameter.IIRfilter = 0b100;                    //Setup for IIR Filter&lt;br /&gt;
  bme280.parameter.humidOversampling = 0b101;            //Setup Humidity Oversampling&lt;br /&gt;
  bme280.parameter.tempOversampling = 0b101;             //Setup Temperature Ovesampling&lt;br /&gt;
  bme280.parameter.pressOversampling = 0b101;            //Setup Pressure Oversampling&lt;br /&gt;
  bme280.parameter.pressureSeaLevel = 1013.25;           //default value of 1013.25 hPa&lt;br /&gt;
  bme280.parameter.tempOutsideCelsius = 15;              //default value of 15°C&lt;br /&gt;
  //bme280.parameter.tempOutsideFahrenheit = 59;           //default value of 59°F&lt;br /&gt;
&lt;br /&gt;
  // LED SetUp for internal LED&lt;br /&gt;
  pinMode(LED, OUTPUT);&lt;br /&gt;
  digitalWrite(LED, LOW);&lt;br /&gt;
&lt;br /&gt;
  // connecting to a WiFi network progress output&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to: &amp;quot;); Serial.println(ssid);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(1500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    Serial.print(WiFi.localIP()); Serial.println(&amp;quot; &amp;lt;-- IP&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  delay(1500);&lt;br /&gt;
&lt;br /&gt;
  //init and get the local time from ntp&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);&lt;br /&gt;
  while (!getLocalTime(&amp;amp;timeinfo)){&lt;br /&gt;
    Serial.println(&amp;quot;Failed to obtain time...&amp;quot;);&lt;br /&gt;
    delay(1500);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;amp;timeinfo, &amp;quot;%A, %B %d %Y %H:%M:%S&amp;quot;);&lt;br /&gt;
  server.begin();&lt;br /&gt;
  if (bme280.init_BME280() != 0x60)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(F(&amp;quot;Ops! BME280 could not be found!&amp;quot;));&lt;br /&gt;
    //while(1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(F(&amp;quot;BME280 detected!&amp;quot;));&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (tsl2591.init_TSL2591() != 0x50)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(F(&amp;quot;Ops! TSL2591 could not be found!&amp;quot;));&lt;br /&gt;
    //while(1);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(F(&amp;quot;TSL2591 detected!&amp;quot;));&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
}&lt;br /&gt;
void loop() {&lt;br /&gt;
  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector&lt;br /&gt;
  /*Note: Different ESP32 modules may have different reference voltages varying from&lt;br /&gt;
    1000mV to 1200mV. Use #define GET_VREF to route v_ref to a GPIO&lt;br /&gt;
  */&lt;br /&gt;
  //Get v_ref&lt;br /&gt;
  esp_err_t status;&lt;br /&gt;
  status = adc2_vref_to_gpio(GPIO_NUM_25);&lt;br /&gt;
  if (status == ESP_OK) {&lt;br /&gt;
    Serial.println(&amp;quot; &amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;v_ref succesfully routed to GPIO34\n&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;failed to route v_ref\n&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
    statussite();&lt;br /&gt;
    delay(1500);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
void getVoltage() {&lt;br /&gt;
  //Init ADC and Characteristics&lt;br /&gt;
  esp_adc_cal_characteristics_t characteristics;&lt;br /&gt;
  adc1_config_width(ADC_WIDTH_BIT_12);&lt;br /&gt;
  adc1_config_channel_atten(ADC1_TEST_CHANNEL, ADC_ATTEN_DB_0);&lt;br /&gt;
  esp_adc_cal_get_characteristics(V_REF, ADC_ATTEN_DB_0, ADC_WIDTH_BIT_12, &amp;amp;characteristics);&lt;br /&gt;
  voltageR = adc1_to_voltage(ADC1_TEST_CHANNEL, &amp;amp;characteristics);&lt;br /&gt;
  vTaskDelay(pdMS_TO_TICKS(1500));&lt;br /&gt;
}&lt;br /&gt;
void statussite() {&lt;br /&gt;
  WiFiClient client = server.available();   // listen for incoming clients&lt;br /&gt;
  if (client) {                             // if you get a client,&lt;br /&gt;
    Serial.println(&amp;quot;New Client.&amp;quot;);          // print a message out the serial port&lt;br /&gt;
    String currentLine = &amp;quot;&amp;quot;;                // make a String to hold incoming data from the client&lt;br /&gt;
    while (client.connected()) {            // loop while the client&amp;#039;s connected&lt;br /&gt;
      if (client.available()) {             // if there&amp;#039;s bytes to read from the client,&lt;br /&gt;
        char c = client.read();             // read a byte, then&lt;br /&gt;
        //Serial.write(c);                  // print it out the serial monitor&lt;br /&gt;
        if (c == &amp;#039;\n&amp;#039;) {                    // if the byte is a newline character&lt;br /&gt;
          // if the current line is blank, you got two newline characters in a row.&lt;br /&gt;
          // that&amp;#039;s the end of the client HTTP request, so send a response:&lt;br /&gt;
          if (currentLine.length() == 0) {&lt;br /&gt;
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)&lt;br /&gt;
            // and a content-type so the client knows what&amp;#039;s coming, then a blank line:&lt;br /&gt;
            client.println(&amp;quot;HTTP/1.1 200 OK&amp;quot;);&lt;br /&gt;
            client.println(&amp;quot;Content-type:text/html&amp;quot;);&lt;br /&gt;
            client.println();&lt;br /&gt;
            client.print(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;meta http-equiv=\&amp;quot;refresh\&amp;quot; content=\&amp;quot;30\&amp;quot; /&amp;gt;&amp;lt;meta charset=\&amp;quot;utf-8\&amp;quot;&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;quot;);&lt;br /&gt;
            client.print(&amp;quot;&amp;lt;font face=\&amp;quot;Arial\&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
            // the content of the HTTP response follows the header:&lt;br /&gt;
            client.print(&amp;quot;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;quot;);&lt;br /&gt;
            float temp = bme280.readTempC();&lt;br /&gt;
            float press = bme280.readPressure() / 100.0F;&lt;br /&gt;
            float alt = bme280.readAltitudeMeter();&lt;br /&gt;
            float illum = tsl2591.readIlluminance_TSL2591();&lt;br /&gt;
            float hum = bme280.readHumidity();&lt;br /&gt;
            //Init ADC and Characteristics&lt;br /&gt;
            esp_adc_cal_characteristics_t characteristics;&lt;br /&gt;
            adc1_config_width(ADC_WIDTH_BIT_12);&lt;br /&gt;
            adc1_config_channel_atten(ADC1_TEST_CHANNEL, ADC_ATTEN_DB_0);&lt;br /&gt;
            esp_adc_cal_get_characteristics(V_REF, ADC_ATTEN_DB_0, ADC_WIDTH_BIT_12, &amp;amp;characteristics);&lt;br /&gt;
            voltageR = adc1_to_voltage(ADC1_TEST_CHANNEL, &amp;amp;characteristics);&lt;br /&gt;
            getVoltage();&lt;br /&gt;
&lt;br /&gt;
            // create datestamp&lt;br /&gt;
            struct tm timeinfo;&lt;br /&gt;
            if (getLocalTime(&amp;amp;timeinfo)) {&lt;br /&gt;
              client.print(&amp;quot;Date: &amp;quot;); client.print(&amp;amp;timeinfo, &amp;quot;%A, %B %d %Y %H:%M:%S&amp;quot;); client.print(&amp;quot; Uhr&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
              client.print(&amp;quot;IPv4: &amp;quot; + WiFi.localIP()); client.print(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            client.println(&amp;quot;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
            client.print(&amp;quot;Temperature: &amp;quot;); &lt;br /&gt;
            client.print(temp); client.print(&amp;quot; Celsius &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
            client.print(&amp;quot;Pressure: &amp;quot;); &lt;br /&gt;
            client.print(press*100); client.print(&amp;quot; Pa &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
            client.print(&amp;quot;Altitude: &amp;quot;); &lt;br /&gt;
            client.print(alt); client.print(&amp;quot; Meters &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
            client.print(&amp;quot;Illuminance: &amp;quot;); &lt;br /&gt;
            client.print(illum); client.print(&amp;quot; Lux &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
            client.print(&amp;quot;Humidity: &amp;quot;); &lt;br /&gt;
            client.print(hum); client.print(&amp;quot; Percent &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
            client.print(&amp;quot;Voltage: &amp;quot;); &lt;br /&gt;
            client.print(voltageR); client.print(&amp;quot; milliVolt &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
            client.print(&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/body&amp;gt;&amp;quot;);&lt;br /&gt;
            client.print(&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
            // The HTTP response ends with another blank line:&lt;br /&gt;
            client.println();&lt;br /&gt;
            // break out of the while loop:&lt;br /&gt;
            break;&lt;br /&gt;
          } else {    // if you got a newline, then clear currentLine:&lt;br /&gt;
            currentLine = &amp;quot;&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
        } else if (c != &amp;#039;\r&amp;#039;) {  // if you got anything else but a carriage return character,&lt;br /&gt;
          currentLine += c;      // add it to the end of the currentLine&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // close the connection:&lt;br /&gt;
    delay(0.9);&lt;br /&gt;
    client.stop();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raz0rsedge</name></author>
		
	</entry>
</feed>