{"id":13619,"date":"2022-01-28T20:40:12","date_gmt":"2022-01-28T20:40:12","guid":{"rendered":"https:\/\/wolles-elektronikkiste.de\/wifi-bbq-thermometer"},"modified":"2024-10-29T15:30:12","modified_gmt":"2024-10-29T15:30:12","slug":"wifi-bbq-thermometer","status":"publish","type":"post","link":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer","title":{"rendered":"WiFi BBQ thermometer"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"uber-den-beitrag\">About this post<\/h2>\n\n<p>In my <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/wireless-bbq-thermometer-433-mhz\" target=\"_blank\" rel=\"noopener\">last post<\/a>, I showed how to build a wireless 433 MHz BBQ thermometer with graphical display of the temperature curve. The effort for this project was considerable, which might discourage some from replicating it. Therefore, I would like to present in this article a much simpler variant based on WiFi. You only have to build a transmitter unit because the receiver is the browser of your smartphone, tablet, PC or laptop. The transmitter unit itself is also kept simpler by dispensing with a display and the external A\/D converter. And since I use an ESP32 as a microcontroller, no radio module is needed.<\/p>\r\n<p>The disadvantage is that the display of the temperature curve is missing. On the other hand, you do not have to do without a warning when the target temperature is reached. I realise this via the IFTTT service (if-this-then-that), as a direct acoustic warning via the browser would only be possible via some detours.<\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"das-konzept\">The concept<\/h2>\n\n<p>Here is the circuit:<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/BBQ__ESP32__wiring-1024x593.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"593\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/BBQ__ESP32__wiring-1024x593.png\" alt=\"WiFi BBQ thermometer - the circuit \" class=\"wp-image-13300\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/BBQ__ESP32__wiring-1024x593.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/BBQ__ESP32__wiring-300x174.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/BBQ__ESP32__wiring-768x445.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/BBQ__ESP32__wiring-1320x764.png 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/BBQ__ESP32__wiring.png 1520w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">WiFi BBQ thermometer &#8211; the circuit <\/figcaption><\/figure>\n\n<p>The temperature sensor is represented by its connection socket.<\/p>\r\n\n<p>And this is what it looked like on the breadboard:<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/breadboard_setup-1024x625.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"625\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/breadboard_setup-1024x625.jpg\" alt=\"WiFi BBQ thermometer - test setup on the breadboard\" class=\"wp-image-13332\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/breadboard_setup-1024x625.jpg 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/breadboard_setup-300x183.jpg 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/breadboard_setup-768x468.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/breadboard_setup-1536x937.jpg 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/breadboard_setup-1320x805.jpg 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/breadboard_setup.jpg 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">WiFi BBQ thermometer &#8211; test setup on the breadboard<\/figcaption><\/figure>\n\n<p>By the way, I use an LED with integrated resistor &#8211; before anyone asks why a resistor is missing here.<\/p>\r\n\n<h3 class=\"wp-block-heading\" id=\"temperaturmessung\">Temperature measurement<\/h3>\n\n<p>As in the last post, I use a replacement barbecue thermometer sensor that is available from Amazon and other online shops for a few euros. The temperature sensor changes its resistance with temperature. Accordingly, the voltage dropping across it changes when you use it in a voltage divider. Compared to the last BBQ thermometer presented, this part of the circuit is simplified by the fact that I only measure the thermometer voltage and not the entire 3.3 volts. This requires a <em>very<\/em> stable overall voltage supply.<\/p>\r\n<p>The ADC of the ESP32 does not work linearly (details <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/programming-the-esp32-with-arduino-code#analog_pins\" target=\"_blank\" rel=\"noopener\">here<\/a>) and delivers quite a lot of noise. The latter can be reduced somewhat by capacitors, as recommended by the manufacturer Espressif (see <a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/v4.2-beta1\/esp32\/api-reference\/peripherals\/adc.html#minimizing-noise\" target=\"_blank\" rel=\"noopener\">here<\/a>). The non-linearity is simply &#8220;calibrated away&#8221;.<\/p>\r\n\n<h3 class=\"wp-block-heading\" id=\"stromversorgung-fur-das-wlan-grillthermometer\">Power supply for the WiFi BBQ thermometer<\/h3>\n\n<p>Opinions differ on the best way to operate an ESP32 board with (rechargeable) batteries. When you programme your board on the PC, it receives its supply voltage via the USB socket, i.e. 5 volts. Normally, there is an AMS1117-3.3 voltage regulator on the board that reduces the supply voltage to the 3.3 volts required for the ESP32. According to the data sheet, the AMS1117-3.3 can handle voltages up to 12 volts higher than the output voltage.<\/p>\r\n<p>Pin &#8220;V5&#8221; (it may be called something else on your board) is connected directly to the power connector of the USB socket and is normally used to supply 5 volts to other components. In my opinion, there is nothing wrong with using it as an input for the power supply and going beyond 5 volts. Since in a voltage regulator (see also <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/voltage-regulation-linear-and-switching-regulators\" target=\"_blank\" rel=\"noopener\">here<\/a>) the input and output currents are the same and the voltage changes, a power of P=\u0394U\u22c5I is lost as heat. But even after a longer period of operation, the AMS1117 did not get particularly hot in my project.<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ESP32-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"431\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ESP32-1024x431.jpg\" alt=\"ESP32 Board with AMS1117 Voltage Regulator\" class=\"wp-image-13296\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ESP32-1024x431.jpg 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ESP32-300x126.jpg 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ESP32-768x323.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ESP32-1536x646.jpg 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ESP32-2048x862.jpg 2048w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ESP32-1320x556.jpg 1320w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">ESP32 Board with AMS1117 Voltage Regulator<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\" id=\"auswahl-des-akkutyps\">Selecting the battery type<\/h4>\n\n<p>I use a lithium-ion battery as the power supply. Strictly speaking, I use two 3.7 V rechargeable batteries which are connected in series. You can use a 9V lithium battery as well. A rechargeable 9 V block battery consists internally of two lithium-ion batteries and therefore does not supply 9 volts, even if the name suggests this. Freshly charged, they deliver approx. 8.4 volts.<\/p>\r\n<p>With this power supply, I got a very stable voltage on the 3.3 volt pin. The voltage drop over time was well below one hundredth of a volt, even when the battery charge dropped below 7 volts. Below 7 volts, the discharge progresses quickly and the battery should be replaced.<\/p>\r\n<p>You should not connect any other loads to the 3.3 volt output &#8211; or you may prefer to use the measuring method from the last post where I measured the total voltage.<\/p>\r\n\n<p>The diode on the 5 V pin serves to protect against reverse polarity. This is of course optional.<\/p>\r\n\n<h4 class=\"wp-block-heading\" id=\"wichtiger-hinweise-zum-akkubetrieb-bitte-lesen\">Important information about battery operation &#8211; please read!<\/h4>\n\n<p><em>Since Pin V5 is connected directly to the USB socket, you must not use a battery under any circumstances while the board is connected to the computer! <\/em><\/p>\r\n\n<h4 class=\"wp-block-heading\" id=\"messung-der-akkuspannung\">Measurement of battery voltage<\/h4>\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/06\/ADC_ESP32_reliability-1024x626.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"626\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/06\/ADC_ESP32_reliability-1024x626.png\" alt=\"\" class=\"wp-image-11916\" style=\"width:256px;height:157px\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/06\/ADC_ESP32_reliability-1024x626.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/06\/ADC_ESP32_reliability-300x183.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/06\/ADC_ESP32_reliability-768x469.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/06\/ADC_ESP32_reliability.png 1265w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<p>It is useful to monitor the battery voltage so that the thermometer does not fail at the wrong moment. Since the battery voltage exceeds the limit of the ESP32&#8217;s ADC, I measure it indirectly via a voltage divider. Here, however, the deviation of the ESP32&#8217;s ADC must be considered. If you dimension the voltage divider cleverly, you are in a range in which the ADC operates linearly and, in a first approximation, is only shifted by a fixed offset (see right). You can then correct the values easily. I simply applied various known voltages between 6.5 and 8.5 volts to the voltage divider and measured the voltage with the ADC.<\/p>\r\n\n<p><\/p>\r\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 40px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/ql-cache\/quicklatex.com-40e2a46997dc3f77b90de6e30f884b22_l3.png\" height=\"40\" width=\"323\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91; &#85;&#95;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#100;&#105;&#118;&#105;&#100;&#101;&#100;&#44;&#32;&#105;&#100;&#101;&#97;&#108;&#125;&#125;&#92;&#59;&#91;&#92;&#116;&#101;&#120;&#116;&#123;&#86;&#125;&#93;&#61;&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#97;&#110;&#97;&#108;&#111;&#103;&#82;&#101;&#97;&#100;&#125;&#40;&#51;&#52;&#41;&#125;&#123;&#52;&#48;&#57;&#53;&#125;&#92;&#99;&#100;&#111;&#116;&#32;&#51;&#46;&#51; &#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\r\n\n<p>The offset was about 0.14 volts. I measured this with a reliable multimeter. The conversion to the supply voltage is then done via a fixed factor determined by the ratio of the resistors:<\/p>\r\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 20px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/ql-cache\/quicklatex.com-c2cbe95d848ad79bc91c30b0d82084ea_l3.png\" height=\"20\" width=\"335\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91; &#85;&#95;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#115;&#117;&#112;&#112;&#108;&#121;&#125;&#125;&#92;&#59;&#91;&#92;&#116;&#101;&#120;&#116;&#123;&#86;&#125;&#93;&#61;&#92;&#108;&#101;&#102;&#116;&#40;&#85;&#95;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#100;&#105;&#118;&#105;&#100;&#101;&#100;&#44;&#32;&#105;&#100;&#101;&#97;&#108;&#125;&#125;&#43;&#48;&#46;&#49;&#52;&#92;&#114;&#105;&#103;&#104;&#116;&#41;&#92;&#99;&#100;&#111;&#116;&#51;&#46;&#50;&#51;&#55; &#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\r\n\n<h4 class=\"wp-block-heading\" id=\"power-on-led\">Power-On LED<\/h4>\n\n<p>The LED on GPIO17 is only used to indicate that the thermometer is switched on. Otherwise, you could easily forget to turn it off after use. Of course, this is also optional.<\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"kalibrierung\">Calibration<\/h2>\n\n<p>To record the calibration curve, I heated a pot of water, as I did with the last thermometer, and recorded temperature\/voltage readings with a trusted reference thermometer as it cooled. For the voltage values, I averaged 50 individual values.<\/p>\r\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"calib.ino\" data-enlighter-title=\"calib.ino\">void setup(){\r\n  Serial.begin(115200);\r\n}\r\n\r\nvoid loop(){\r\n  unsigned long sum = 0;\r\n  unsigned int numberOfSamples = 50;\r\n\r\n  for(int i=0; i&lt;numberOfSamples; i++){\r\n    sum += analogRead(33);\r\n  }\r\n  \r\n  float milliVolts = (sum \/(numberOfSamples*1.0))\/4.095 * 3.3;\r\n  Serial.println(milliVolts);\r\n  delay(500);\r\n}<\/pre>\r\n<p>&nbsp;<\/p>\r\n\n<p>In entered the measured values in Excel and applied the &#8220;trend line&#8221; function. Only a fourth-order polynomial fit.<\/p>\r\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0__100-1024x529.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"529\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0__100-1024x529.png\" alt=\"WiFi BBQ Thermometer - Calibration Curve\" class=\"wp-image-13327\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0__100-1024x529.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0__100-300x155.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0__100-768x397.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0__100-1320x682.png 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0__100.png 1516w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Calibration curve 0 &#8211; 100 \u00b0C<\/figcaption><\/figure>\n<\/div>\n<p>Even though it would have worked this way, in the end I decided to chunk the curve and use smaller polynomials:<\/p>\r\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0_45-1024x639.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"639\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0_45-1024x639.png\" alt=\"Calibration WiFi BBQ thermometer 0-45 degrees\" class=\"wp-image-13318\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0_45-1024x639.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0_45-300x187.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0_45-768x479.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__0_45.png 1268w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">0 &#8211; 45 \u00b0C<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__45__70-1024x624.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"624\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__45__70-1024x624.png\" alt=\"Calibration WiFi BBQ thermometer 45-70 degrees\" class=\"wp-image-13322\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__45__70-1024x624.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__45__70-300x183.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__45__70-768x468.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__45__70.png 1284w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"> 45 &#8211; 70 \u00b0C<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__70_100-1024x628.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"628\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__70_100-1024x628.png\" alt=\"Calibration WiFi BBQ thermometer 70-100 degrees\" class=\"wp-image-13324\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__70_100-1024x628.png 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__70_100-300x184.png 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__70_100-768x471.png 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/esp32_therm_calib__70_100.png 1287w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"> 70 -100 \u00b0C<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n<p>I described how to ensure that the coefficients of your polynomial are output with enough decimal places in the <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/wireless-bbq-thermometer-433-mhz\" target=\"_blank\" rel=\"noopener\">last post<\/a>.<\/p>\r\n\n<h2 class=\"wp-block-heading\" id=\"der-sketch-fur-das-wlan-grillthermometer\">The sketch for the WiFi BBQ thermometer<\/h2>\n\n<h3 class=\"wp-block-heading\" id=\"option-1-die-einfache-losung\">Option 1: The simple solution <\/h3>\n\n<p>The simple solution only displays the temperature and battery voltage in any browser, for example on your smartphone or tablet. I have covered the basics of using WiFi use in detail <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/using-wifi-with-the-esp8266-and-esp32\" target=\"_blank\" rel=\"noopener\">here<\/a>. In this article, I will only discuss it superficially. Here is the sketch.<\/p>\r\n\n<div class=\"scroll-paragraph-long\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">#include &lt;WiFi.h&gt;\r\n#include &lt;WebServer.h&gt;\r\n#define TEMPERATURE_PIN 33\r\n#define SUPPLY_VOLTAGE_PIN 34\r\n#define LED_PIN 17   \/\/ power-on LED\r\n\r\nconst char* ssid = \"Your WiFi name\";\r\nconst char* pass = \"Your WiFi password\"; \r\n\r\nWebServer server(80);  \/\/ creating a webserver object\r\n \r\nString headString = \"&lt;head&gt;&lt;style&gt;\" \/\/ head and CSS style elements\r\n                      \".blueBox {\"\r\n                        \"background-color: blue;\"\r\n                        \"color: white;\"\r\n                        \"width: 600px;\" \r\n                        \"padding: 20px;\"\r\n                        \"text-align: center;\"\r\n                        \"font-size: 50px;\"\r\n                        \"font-family: arial;\"\r\n                        \"margin: 20px 35px;\"\r\n                      \"}\"\r\n                    \"&lt;\/style&gt;\";\r\n                      \r\nString refreshString = \"&lt;meta http-equiv=\\\"refresh\\\" content=\\\"10\\\"&gt;&lt;\/head&gt;\";                      \r\nString trackTempString = \"&lt;\/BR&gt;&lt;h1 align=\\\"center\\\"&gt;BBQ - Current Temperature&lt;\/h1&gt;&lt;\/div&gt;\";\r\n\r\nvoid setup(){\r\n  pinMode(LED_PIN, OUTPUT); \r\n  digitalWrite(LED_PIN, HIGH);\r\n  Serial.begin(115200);\r\n  Serial.println(\"Connecting to \");\r\n  Serial.println(ssid);\r\n\r\n  WiFi.begin(ssid, pass);\r\n  \r\n  while (WiFi.status() != WL_CONNECTED) {\r\n    delay(1000);\r\n    Serial.print(\".\");\r\n  }\r\n  Serial.println(\"\");\r\n  Serial.println(\"WiFi connected..!\");\r\n  Serial.print(\"Got IP: \");  Serial.println(WiFi.localIP());\r\n  \r\n  server.on(\"\/\",trackTemperatureScreen);\r\n  server.begin();\r\n}\r\n  \r\nvoid loop(){\r\n  server.handleClient(); \r\n}\r\n\r\nvoid trackTemperatureScreen(){\r\n  String message = \"\";\r\n  float bbqTemp = getBbqTemperature();\r\n  float supplyVoltage = getSupplyVoltage();\r\n   \r\n  message += headString;\r\n  message += refreshString;\r\n  message += trackTempString;\r\n  message += \"&lt;div align=\\\"center\\\";&gt;\";\r\n  message += \"&lt;div class=\\\"blueBox\\\"&gt;\";\r\n  message += \"Current Temperature [&amp;ring;C]: &lt;\/BR&gt;&lt;\/BR&gt;&lt;span style=\\\"font-size: 100px;\\\"&gt;\";\r\n  message += String(bbqTemp, 1);\r\n  message += \"&lt;\/span&gt;\";\r\n  message += \"&lt;\/div&gt;\";\r\n  message += \"&lt;\/BR&gt;&lt;h2&gt;Supply Voltage [V]: \";\r\n  message += String(supplyVoltage,1);\r\n  message += \"&lt;\/h2&gt;&lt;\/div&gt;\";\r\n  \r\n  server.send(200, \"text\/html\", message);\r\n}\r\n\r\nfloat getBbqTemperature(){\r\n  \/\/ replace by your calibration function(s)\r\n  \/\/ 70-100\u00b0C: y = 28.436x2 - 89.635x + 128.71\r\n  \/\/ 45-70\u00b0C:  y = 6.3363x2 - 50.673x + 111.64\r\n  \/\/ 0-45\u00b0C:   y = -2.3284x2 - 23.46x + 90.312\r\n  \r\n  float tV = 0.0; \/\/ thermometer voltage\r\n  float tC = 0.0; \/\/ temperature Celsius\r\n  unsigned long tempSum = 0;\r\n  unsigned int numberOfSamples = 50;\r\n\r\n  for(int i=0; i&lt;numberOfSamples; i++){\r\n    tempSum += analogRead(TEMPERATURE_PIN);\r\n  }\r\n  tV = (tempSum \/(numberOfSamples*1.0))\/4095.0 * 3.3;\r\n  \r\n  if(tV &lt; 1.0){\r\n    tC = 28.436*pow(tV,2) - 89.635*tV + 128.71; \r\n  }\r\n  else if(tV &lt; 1.7){\r\n    tC = 6.3363*pow(tV,2) - 50.673*tV + 111.64; \r\n  }\r\n  else{\r\n    tC = -2.3284*pow(tV,2) - 23.46*tV + 90.312; \r\n  }\r\n  return tC;\r\n}\r\n\r\nfloat getSupplyVoltage(){\r\n  unsigned long sum = 0;\r\n  unsigned int numberOfSamples = 50;\r\n  for(int i=0; i&lt;numberOfSamples; i++){\r\n    sum += analogRead(SUPPLY_VOLTAGE_PIN);\r\n  }\r\n  float volts = (sum \/(numberOfSamples*1.0))\/4095.0 * 3.3;\r\n  volts = (volts + 0.14) * 3.237;\r\n  return volts;\r\n}<\/pre>\r\n<p>&nbsp;<\/p>\r\n<\/div>\r\n\n<h4 class=\"wp-block-heading\" id=\"erlauterungen-zum-sketch\">Explanations of the sketch<\/h4>\n\n<p>The ESP32 serves as a server that displays the temperature and battery voltage on a website. The content of the website is transmitted as a string (&#8220;message&#8221;) to the client, i.e. the browser. Embedding HTML code in Arduino code is not conducive to readability, but that&#8217;s in the nature of things. A few more explanations:<\/p>\r\n<ul>\r\n<li>&#8220;ssid&#8221; \/ &#8220;pass&#8221; are your WiFi credentials<\/li>\r\n<li>In &#8220;headString&#8221;, the blue box design element is defined as CSS code.&nbsp;<\/li>\r\n<li>The content of &#8220;refreshString&#8221; causes the website to refresh every 10 seconds.<\/li>\r\n<li>The serial monitor shows the IP that your router assigns to the ESP32. It is best to set your router so that the ESP32 always gets this IP.<\/li>\r\n<li><code>server.on(\"\/\",trackTemperatureScreen);<\/code> causes the function <code>trackTemperatureScreen()<\/code> to be called when the IP address is called (there is only the main path &#8220;\/&#8221;). <\/li>\r\n<li><code>trackTemperatureScreen()<\/code> initiates new measurements, compiles the content of the website and sends it to the server.&nbsp;<\/li>\r\n<\/ul>\r\n\n<h4 class=\"wp-block-heading\" id=\"ausgabe-der-option-1\">Output of Option 1<\/h4>\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_simple-1024x865.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"865\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_simple-1024x865.jpg\" alt=\"WiFi BBQ thermometer - output of the simple solution on the smartphone\" class=\"wp-image-13334\" style=\"width:256px;height:216px\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_simple-1024x865.jpg 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_simple-300x253.jpg 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_simple-768x649.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_simple.jpg 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<p>Go to the browser of the device of your choice and enter the IP of your ESP32. For me this is &#8220;192.168.178.38&#8221;. You may also have to append a slash, i.e. &#8220;192.168.178.38\/&#8221;. An updated value should appear every 10 seconds.<\/p>\r\n<p>If you have problems, connect the ESP32 directly to your computer and check that the ESP32 connects to the home network and that the IP address is correct.<\/p>\r\n\n<h3 class=\"wp-block-heading\" id=\"option-2-die-komfort-losung\">Option 2: The &#8220;Comfort Solution&#8221;<\/h3>\n\n<p>The comfort solution for the WiFi BBQ thermometer includes the setting of a temperature limit and an alert when the limit has been reached. This actually sounds like a minor extension, but the resulting sketch ended up being two and a half times as long.<\/p>\r\n\n<h4 class=\"wp-block-heading\" id=\"einstellung-der-zieltemperatur\">Setting the target temperature<\/h4>\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/setTemp_small-960x1024.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"1024\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/setTemp_small-960x1024.jpg\" alt=\"WiFi BBQ thermometer - setTemperatureScreen\" class=\"wp-image-13339\" style=\"width:240px;height:256px\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/setTemp_small-960x1024.jpg 960w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/setTemp_small-281x300.jpg 281w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/setTemp_small-768x819.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/setTemp_small.jpg 1080w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><\/figure>\n<\/div>\n<p>I have set up a separate screen for setting the target temperature (see right). It appears when the website is accessed. In the sketch, this is done by calling <code>setTemperatureScreen()<\/code>. The default temperature setting is 55 \u00b0C. You can change the target temperature by tapping the +\/- 10 \u00b0C and +\/- 1 \u00b0C touch keys. These touch keys are defined as HTML buttons and linked to corresponding paths of the website. To do this, I had to add a number of other <code>server.on()<\/code> functions to the  sketch. The <code>server.on()<\/code> functions, in turn, call functions that change the target temperature as requested.<\/p>\r\n<p>I have programmed the setting so that the target temperature can be selected between 40 and 99 \u00b0C. Of course, you can change that if it makes sense to you.<\/p>\r\n<p>As soon as you have set the desired target temperature, tap on &#8220;Accept target&#8221;. The &#8220;trackTemperatureScreen&#8221; (see next picture) will be displayed.<\/p>\r\n\n<h4 class=\"wp-block-heading\" id=\"verfolgen-der-temperatur\">Tracking the temperature<\/h4>\n\n<p>The &#8220;trackTemperatureScreen&#8221; for the WiFi BBQ thermometer shows the current temperature and the battery voltage. At the beginning, the temperature is displayed in white. At five degrees below target temperature, it turns orange. From one degree below target temperature, it turns red.<\/p>\r\n<p>In addition, the screen has two touch keys. One is labeled &#8220;New Target&#8221; and leads back to the target temperature setting. With the second touch key, you can turn alert on or off. It then changes color and labeling accordingly. After the alert is triggered, it will be disabled.<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_all-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"670\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_all-1024x670.jpg\" alt=\"WiFi BBQ Thermometer - trackTemperatureScreen\" class=\"wp-image-13341\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_all-1024x670.jpg 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_all-300x196.jpg 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_all-768x502.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_all-1536x1005.jpg 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_all-2048x1340.jpg 2048w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/trackTemp_all-1320x863.jpg 1320w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">&#8220;trackTemperatureScreen&#8221; at different temperatures<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\" id=\"alarm-auslosen-mit-ifttt\">Triggering an alert with IFTTT<\/h4>\n\n<p>For security reasons, websites cannot directly access programs on your device, make your smartphone ring, or initiate similar actions that you could use as an alert. Automatic playback of audio files is also only possible via detours and special settings.<\/p>\r\n<p>To still trigger an alert, I use the free service <a href=\"https:\/\/ifttt.com\/\" target=\"_blank\" rel=\"noopener\">IFTTT<\/a> (if-this-then-that). What exactly this is, how you set up access and deal with the service, I have described <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/using-ifttt-and-webhooks-with-the-esp8266\" target=\"_blank\" rel=\"noopener\">here<\/a>. I will therefore be brief in this article.<\/p>\r\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ifttt_alert-890x1024.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"890\" height=\"1024\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ifttt_alert-890x1024.jpg\" alt=\"Notification from the WiFi BBQ thermometer via IFTTT&#13;&#10;\" class=\"wp-image-13343\" style=\"width:223px;height:256px\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ifttt_alert-890x1024.jpg 890w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ifttt_alert-261x300.jpg 261w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ifttt_alert-768x883.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/ifttt_alert.jpg 1080w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><\/a><\/figure>\n<\/div>\n<p>On IFTTT, you create so-called applets in a few minutes. These consist of a trigger (&#8220;if this&#8221;) and an action (&#8220;then that&#8221;). The trigger in this case is a so-called &#8220;webhook&#8221;. This is a small message in a specific format that is sent to IFTTT by websites via POST or GET request. In my sketch, this task is managed by the function <code>send_webhook()<\/code>. So, you don&#8217;t have to worry about the details. You can embed up to three variables in the webhook, in this case the temperature of your WiFi BBQ thermometer.<\/p>\r\n<p>The action to be triggered by the webhook is a notification on your smartphone (see top right). You can vary the text freely. I have described how you do this in concrete terms in the article already mentioned <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/using-ifttt-and-webhooks-with-the-esp8266#Anker3\" target=\"_blank\" rel=\"noopener\">here<\/a>. It&#8217;s <em>really<\/em> simple.<\/p>\r\n\n<h4 class=\"wp-block-heading\" id=\"einschrankungen\">Restrictions<\/h4>\n\n<p>There are still two small problems:<\/p>\r\n<ol>\r\n<li>If your phone &#8220;falls asleep&#8221; after a few minutes without use, notifications will be delayed.<\/li>\r\n<li>The update of the temperature and the check of the temperature limit are triggered by a request from the browser. If your smartphone is asleep, there is no update and therefore no alert.<\/li>\r\n<\/ol>\r\n<p>To solve problem 1, I recommend extending the time for activating the screen lock. This could be changed in the settings, but would be annoying in the long run. This can be done even more conveniently with apps. <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=in.snapcore.screen_alive\" target=\"_blank\" rel=\"noopener\">Screen Alive<\/a>, for example, works wonderfully for Android smartphones. This free and ad-free app offers a widget that allows you to activate the &#8220;Always On&#8221; mode with a single click. Alternatively, you do not use the notifications, but SMS as the &#8220;then that&#8221; part. The downside is that the service is limited to 10 SMS per month outside the US.<\/p>\r\n<p>I solved the second problem by querying the temperature additionally in loop(). However, this only happens if at least 15 seconds have passed since the last temperature query. &nbsp;<\/p>\r\n\n<h4 class=\"wp-block-heading\" id=\"der-sketch-fur-die-komfort-losung\">The sketch for the comfort solution<\/h4>\n\n<p>Here is the complete sketch for the WiFi BBQ thermometer:<\/p>\r\n\n<div class=\"scroll-paragraph-long\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"bbq_esp32_complete.ino\" data-enlighter-title=\"bbq_esp32_complete.ino\">#include &lt;WiFi.h&gt;\r\n#include &lt;WebServer.h&gt;\r\n#define TEMPERATURE_PIN 33\r\n#define SUPPLY_VOLTAGE_PIN 34\r\n#define LED_PIN 17   \/\/ power-on LED\r\n\r\n#define IFTTT_Key \"Your IFTTT Key\"\r\n#define IFTTT_Event \"BBQ_Event\"\r\n#define IFTTT_Value1 \"Hi! \"\r\n#define IFTTT_Value3 \"dummy\";\r\n\r\nconst char* ssid = \"Your WiFi SSID\";\r\nconst char* pass = \"Your WiFi Password\";\r\nunsigned int bbqTargetTemp = 55;\r\nunsigned long lastTempMeasurement = 0;\r\nvolatile bool tempAlert = true;\r\n\r\nWebServer server(80);\r\n \r\nString headString = \"&lt;head&gt;&lt;style&gt;\" \/\/ head and CSS style elements\r\n                      \".button {\"\r\n                        \"border: none;\"\r\n                        \"color: white;\"\r\n                        \"width: 350px;\"\r\n                        \"padding: 20px;\"\r\n                        \"text-align: center;\"\r\n                        \"margin: 20px 35px;\"\r\n                      \"}\"\r\n                      \".greenButton {background-color: green; font-size: 64px;}\"\r\n                      \".greenButton:hover {background-color: darkgreen; font-size: 64px;}\"\r\n                      \".redButton {background-color: red; font-size: 64px;}\"\r\n                      \".redButton:hover {background-color: darkred; font-size: 64px;}\"\r\n                      \".blueButton {background-color: blue; font-size: 50px;}\"\r\n                      \".blueButton:hover {background-color: darkblue; font-size: 50px;}\"\r\n                      \".blueBox {\"\r\n                        \"background-color: blue;\"\r\n                        \"color: white;\"\r\n                        \"width: 600px;\" \r\n                        \"padding: 20px;\"\r\n                        \"text-align: center;\"\r\n                        \"font-size: 50px;\"\r\n                        \"font-family: arial;\"\r\n                        \"margin: 20px 35px;\"\r\n                      \"}\"\r\n                    \"&lt;\/style&gt;\";\r\n                      \r\nString refreshString = \"&lt;meta http-equiv=\\\"refresh\\\" content=\\\"10\\\"&gt;&lt;\/head&gt;\";                      \r\nString setTargetString = \"&lt;\/BR&gt;&lt;h1 align=\\\"center\\\"&gt;BBQ - Set your Target Temperature&lt;\/h1&gt;&lt;\/div&gt;\";\r\nString trackTempString = \"&lt;\/BR&gt;&lt;h1 align=\\\"center\\\"&gt;BBQ - Current Temperature&lt;\/h1&gt;&lt;\/div&gt;\";\r\nString plus10String = \"&lt;a href=\\\"\/plus_10\\\"&gt;&lt;button class=\\\"button greenButton\\\"&gt;+ 10&amp;ring;C&lt;\/button&gt;&lt;\/a&gt;\";\r\nString minus10String = \"&lt;a href=\\\"\/minus_10\\\"&gt;&lt;button class=\\\"button redButton\\\"&gt;- 10&amp;ring;C&lt;\/button&gt;&lt;\/a&gt;\";\r\nString plus1String = \"&lt;\/BR&gt;&lt;a href=\\\"\/plus_1\\\"&gt;&lt;button class=\\\"button greenButton\\\"&gt;+ 1&amp;ring;C&lt;\/button&gt;&lt;\/a&gt;\";\r\nString minus1String = \"&lt;a href=\\\"\/minus_1\\\"&gt;&lt;button class=\\\"button redButton\\\"&gt;- 1&amp;ring;C&lt;\/button&gt;&lt;\/a&gt;\";\r\nString setNewTargetString = \"&lt;\/BR&gt;&lt;a href=\\\"\/\\\"&gt;&lt;button class=\\\"button greenButton\\\"&gt;New Target&lt;\/button&gt;&lt;\/a&gt;\";\r\nString enableAlertString = \"&lt;\/BR&gt;&lt;a href=\\\"\/enableAlert\\\"&gt;&lt;button class=\\\"button greenButton\\\"&gt;Enable Alert&lt;\/button&gt;&lt;\/a&gt;\";\r\nString disableAlertString = \"&lt;\/BR&gt;&lt;a href=\\\"\/disableAlert\\\"&gt;&lt;button class=\\\"button redButton\\\"&gt;Disable Alert&lt;\/button&gt;&lt;\/a&gt;\";\r\n\r\nvoid setup(){\r\n  pinMode(LED_PIN, OUTPUT); \r\n  digitalWrite(LED_PIN, HIGH);\r\n  Serial.begin(115200);\r\n  Serial.println(\"Connecting to \");\r\n  Serial.println(ssid);\r\n\r\n  WiFi.begin(ssid, pass);\r\n  \r\n  while (WiFi.status() != WL_CONNECTED) {\r\n    delay(1000);\r\n    Serial.print(\".\");\r\n  }\r\n  Serial.println(\"\");\r\n  Serial.println(\"WiFi connected..!\");\r\n  Serial.print(\"Got IP: \");  Serial.println(WiFi.localIP());\r\n  \r\n  server.on(\"\/\",handleRoot);\r\n  server.on(\"\/plus_10\", plus10);\r\n  server.on(\"\/minus_10\", minus10);\r\n  server.on(\"\/plus_1\", plus1);\r\n  server.on(\"\/minus_1\", minus1);\r\n  server.on(\"\/enableAlert\", enableAlert);\r\n  server.on(\"\/acceptTemp\", trackTemperatureScreen);\r\n  server.on(\"\/disableAlert\", disableAlert);\r\n  server.on(\"\/trackTemperature\", trackTemperatureScreen);\r\n  server.begin();\r\n}\r\n  \r\nvoid loop(){\r\n  server.handleClient();\r\n  if(((lastTempMeasurement - millis()) &gt; 15000) &amp;&amp; tempAlert){\r\n    float bbqTemp = getBbqTemperature();\r\n    alertCheck(bbqTemp);\r\n  }\r\n}\r\n\r\nvoid handleRoot() {\r\n  setTemperatureScreen();\r\n}\r\n\r\nvoid plus10(){\r\n  bbqTargetTemp += 10;\r\n  setTemperatureScreen();\r\n}\r\n\r\nvoid minus10(){\r\n  bbqTargetTemp -= 10;\r\n  setTemperatureScreen();\r\n}\r\n\r\nvoid plus1(){\r\n  bbqTargetTemp++;\r\n  setTemperatureScreen();\r\n}\r\n\r\nvoid minus1(){\r\n  bbqTargetTemp--;\r\n  setTemperatureScreen();\r\n}\r\n\r\nvoid acceptTemp(){\r\n  enableAlert();\r\n}\r\n\r\nvoid enableAlert(){\r\n  tempAlert = true;\r\n  trackTemperatureScreen();\r\n}\r\n\r\nvoid disableAlert(){\r\n  tempAlert = false;\r\n  trackTemperatureScreen();\r\n}\r\n\r\nvoid trackTemperatureScreen(){\r\n  String message = \"\";\r\n  float bbqTemp = getBbqTemperature();\r\n  float supplyVoltage = getSupplyVoltage(); \r\n  String colorString = \"white\";\r\n\r\n  if((bbqTargetTemp - bbqTemp) &lt; 1.0){\r\n    colorString = \"red\";\r\n  }\r\n  else if((bbqTargetTemp - bbqTemp) &lt; 5.0){\r\n    colorString = \"orange\";\r\n  }\r\n  \r\n  message += headString;\r\n  message += refreshString;\r\n  message += trackTempString;\r\n  message += \"&lt;div align=\\\"center\\\";&gt;\";\r\n  message += \"&lt;div class=\\\"blueBox\\\"&gt;\";\r\n  message += \"Current Temperature [&amp;ring;C]: &lt;\/BR&gt;&lt;\/BR&gt;&lt;span style=\\\"font-size: 100px; color: \";\r\n  message += (colorString + \"\\\"&gt;\");\r\n  message += String(bbqTemp, 1);\r\n  message += \"&lt;\/span&gt;\";\r\n  message += \"&lt;\/BR&gt;&lt;\/BR&gt;Target [&amp;ring;C]: \";\r\n  message += String(bbqTargetTemp);\r\n  message += \"&lt;\/div&gt;\";\r\n  message += setNewTargetString;\r\n\r\n  if(tempAlert){\r\n    message += disableAlertString;\r\n  }\r\n  else{\r\n    message += enableAlertString;\r\n  }\r\n  message += \"&lt;\/BR&gt;&lt;h2&gt;Supply Voltage [V]: \";\r\n  message += String(supplyVoltage,1);\r\n  message += \"&lt;\/h2&gt;&lt;\/div&gt;\";\r\n  \r\n  server.send(200, \"text\/html\", message);\r\n\r\n  alertCheck(bbqTemp);  \r\n}\r\n\r\nfloat getBbqTemperature(){\r\n  \/\/ replace by your calibration function(s)\r\n  \/\/ 70-100\u00b0C: y = 28.436x2 - 89.635x + 128.71\r\n  \/\/ 45-70\u00b0C:  y = 6.3363x2 - 50.673x + 111.64\r\n  \/\/ 0-45\u00b0C:   y = -2.3284x2 - 23.46x + 90.312\r\n  \r\n  float tV = 0.0; \/\/ thermometer Voltage\r\n  float tC = 0.0; \/\/ temperature Celsius\r\n  unsigned long tempSum = 0;\r\n  unsigned int numberOfSamples = 50;\r\n\r\n  for(int i=0; i&lt;numberOfSamples; i++){\r\n    tempSum += analogRead(TEMPERATURE_PIN);\r\n  }\r\n  tV = (tempSum \/(numberOfSamples*1.0))\/4095.0 * 3.3;\r\n  \r\n  if(tV &lt; 1.0){\r\n    tC = 28.436*pow(tV,2) - 89.635*tV + 128.71; \r\n  }\r\n  else if(tV &lt; 1.7){\r\n    tC = 6.3363*pow(tV,2) - 50.673*tV + 111.64; \r\n  }\r\n  else{\r\n    tC = -2.3284*pow(tV,2) - 23.46*tV + 90.312; \r\n  }\r\n  lastTempMeasurement = millis();\r\n  return tC;\r\n}\r\n\r\nfloat getSupplyVoltage(){\r\n  unsigned long sum = 0;\r\n  unsigned int numberOfSamples = 50;\r\n  for(int i=0; i&lt;numberOfSamples; i++){\r\n    sum += analogRead(SUPPLY_VOLTAGE_PIN);\r\n  }\r\n  float volts = (sum \/(numberOfSamples*1.0))\/4095.0 * 3.3;\r\n  volts = (volts + 0.14) * 3.237;\r\n  return volts;\r\n}\r\n\r\nvoid alertCheck(float currentTemp){\r\n  String tString = String(currentTemp, 1); \/\/ convert temperature as float into String\r\n  if((currentTemp &gt; bbqTargetTemp) &amp;&amp; tempAlert){\r\n    send_webhook(tString);\r\n    tempAlert = false; \r\n  }\r\n}\r\n\r\nvoid setTemperatureScreen(){\r\n  String message = \"\";\r\n  \r\n  if(bbqTargetTemp &gt;= 100){\r\n    bbqTargetTemp -= 60;\r\n  }\r\n   if(bbqTargetTemp &lt; 40){\r\n    bbqTargetTemp += 60;\r\n  }\r\n  \r\n  message += headString;\r\n  message += setTargetString;\r\n  message += \"&lt;div align=\\\"center\\\";&gt;\";\r\n  message = message + plus10String + minus10String + plus1String + minus1String;\r\n  message += \"&lt;\/BR&gt;&lt;a href=\\\"\/acceptTemp\\\"&gt;&lt;button class=\\\"button blueButton\\\"&gt;\";\r\n  message += \"Accept&lt;\/BR&gt;Target [&amp;ring;C]: &lt;\/BR&gt;\";\r\n  message += String(bbqTargetTemp);\r\n  message += \"&lt;\/button&gt;&lt;\/a&gt;\";\r\n  message += \"&lt;\/div&gt;\";\r\n  server.send(200, \"text\/html\", message); \r\n}\r\n\r\nvoid send_webhook(String IFTTT_Value2){\r\n  WiFiClient client;\r\n  \/\/ construct the JSON payload\r\n  String jsonString = \"\";\r\n  jsonString += \"{\\\"value1\\\":\\\"\";\r\n  jsonString += IFTTT_Value1;\r\n  jsonString += \"\\\",\\\"value2\\\":\\\"\";\r\n  jsonString += IFTTT_Value2;\r\n  jsonString += \"\\\",\\\"value3\\\":\\\"\";\r\n  jsonString += IFTTT_Value3;\r\n  jsonString += \"\\\"}\";\r\n  int jsonLength = jsonString.length();  \r\n  String lenString = String(jsonLength);\r\n\r\n  \/\/ connect to the Maker event server\r\n  client.connect(\"maker.ifttt.com\", 80);\r\n\r\n  \/\/ construct the POST request\r\n  String postString = \"\";\r\n  postString += \"POST \/trigger\/\";\r\n  postString += IFTTT_Event;\r\n  postString += \"\/with\/key\/\";\r\n  postString += IFTTT_Key;\r\n  postString += \" HTTP\/1.1\\r\\n\";\r\n  postString += \"Host: maker.ifttt.com\\r\\n\";\r\n  postString += \"Content-Type: application\/json\\r\\n\";\r\n  postString += \"Content-Length: \";\r\n  postString += lenString + \"\\r\\n\";\r\n  postString += \"\\r\\n\";\r\n  postString += jsonString; \/\/ combine post request and JSON\r\n  \r\n  client.print(postString);\r\n  delay(500);\r\n  client.stop();\r\n}<\/pre>\r\n<p>&nbsp;<\/p>\r\n<\/div>\r\n\n<p>The sketch is a bit hard to digest due to its length and the mix of HTML, CSS, and Arduino code. The HTML and CSS code is assembled piece by piece. All quotation marks that are not part of the Arduino code must be prefixed with a backslash, which does not exactly contribute to better readability. If you want to be creative with regard to the website itself, then I recommend doing this separately with a good editor like Notepad++. You use dummies for all variables. For example, this is what the pure HTML\/CSS code for the &#8220;trackTemperatureScreen&#8221; looks like:<\/p>\r\n\n<div class=\"scroll-paragraph\"><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-group=\"trackTemperatureScreen.html\" data-enlighter-title=\"trackTemperatureScreen.html\">&lt;head&gt;&lt;style&gt;.button {\r\n      border: none;\r\n      color: white;\r\n      width: 350px;\r\n      padding: 20px;\r\n      text-align: center;\r\n      margin: 20px 35px;\r\n    }\r\n    .greenButton {background-color: green; font-size: 64px;}\r\n    .greenButton:hover {background-color: darkgreen; font-size: 64px;}\r\n    .redButton {background-color: red; font-size: 64px;}\r\n    .redButton:hover {background-color: darkred; font-size: 64px;}\r\n    .blueButton {background-color: blue; font-size: 50px;}\r\n    .blueButton:hover {background-color: darkblue; font-size: 50px;}\r\n    .blueBox {\r\n      background-color: blue;\r\n      color: white;\r\n      width: 600px; \r\n      padding: 20px;\r\n      text-align: center;\r\n      font-size: 50px;\r\n      font-family: arial;\r\n      margin: 20px 35px;\r\n    }\r\n  &lt;\/style&gt;&lt;meta http-equiv=\"refresh\" content=\"10\"&gt;&lt;\/head&gt; \r\n&lt;\/BR&gt;&lt;h1 align=\"center\"&gt;BBQ - Current Temperature&lt;\/h1&gt;&lt;div align=\"center\"&gt;&lt;div class=\"blueBox\"&gt;Current Temperature [&amp;ring;C]: &lt;\/BR&gt;&lt;\/BR&gt;&lt;span style=\"font-size: 100px; color: red\"&gt;99.9\r\n    &lt;\/span&gt;&lt;\/BR&gt;&lt;\/BR&gt;Target [&amp;ring;C]: 99.9\r\n  &lt;\/div&gt;&lt;\/BR&gt;&lt;a href=\"\/\"&gt;&lt;button class=\"button greenButton\"&gt;New Target&lt;\/button&gt;&lt;\/a&gt;&lt;\/BR&gt;&lt;a href=\"\/disableAlert\"&gt;&lt;button class=\"button redButton\"&gt;Disable Alert&lt;\/button&gt;&lt;\/a&gt;&lt;\/BR&gt;&lt;h2&gt;Supply Voltage [V]: 9.9&lt;\/h2&gt;&lt;\/div&gt;<\/pre><p>&nbsp;<\/p><\/div>\n\n<h2 class=\"wp-block-heading\" id=\"zusammenbau\">Assembly of the WiFi BBQ thermometer<\/h2>\n\n<p>I used a simple universal electronics housing that is not much bigger than the ESP32 board. I sawed out the board out of a prototype PCB. The board is attached to the baseplate with spacers. I attached the battery housing to the main housing with screws, routed the cables inside and led them through a hole into the main housing. I also had to drill two holes for the LED and the connection socket for the thermometer.<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer_inside-1024x612.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"612\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer_inside-1024x612.jpg\" alt=\"WiFi BBQ thermometer - Inside\" class=\"wp-image-13347\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer_inside-1024x612.jpg 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer_inside-300x179.jpg 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer_inside-768x459.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer_inside-1536x918.jpg 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer_inside-1320x789.jpg 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer_inside.jpg 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">WiFi BBQ thermometer &#8211; Inside<\/figcaption><\/figure>\n\n<p>And here is the complete, assembled WiFi BBQ thermometer:<\/p>\r\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer-1024x611.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"611\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer-1024x611.jpg\" alt=\"The complete WiFi BBQ thermometer\" class=\"wp-image-13349\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer-1024x611.jpg 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer-300x179.jpg 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer-768x458.jpg 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer-1536x916.jpg 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer-1320x787.jpg 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2021\/12\/bbq_wifi_thermometer.jpg 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">The complete WiFi BBQ thermometer<\/figcaption><\/figure>\n\n<h2 class=\"wp-block-heading\" id=\"danksagung\">Acknowledgement<\/h2>\n\n<p>And once again, I would like to thank the hardworking artists who have made their images available on <a href=\"https:\/\/pixabay.com\/de\/\" target=\"_blank\" rel=\"noopener\">Pixabay<\/a>. In my post image, I used the following in whole or in part:<\/p>\r\n<ul>\r\n<li>Grill: <a href=\"https:\/\/pixabay.com\/de\/users\/clker-free-vector-images-3736\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=309660\" target=\"_blank\" rel=\"noopener\">Clker-Free-Vector-Images<\/a><\/li>\r\n<li>Smartphone: <a href=\"https:\/\/pixabay.com\/de\/users\/leo_romero-10193055\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4948812\" target=\"_blank\" rel=\"noopener\">Leo Romero<\/a><\/li>\r\n<li>WLAN icon: <a href=\"https:\/\/pixabay.com\/de\/users\/ricardo_duque-2305564\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1290667\" target=\"_blank\" rel=\"noopener\">Ricardo_Duque<\/a><\/li>\r\n<li>WiFi icon: <a href=\"https:\/\/pixabay.com\/de\/users\/pixaline-1569622\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2604577\" target=\"_blank\" rel=\"noopener\">Pixaline<\/a><\/li>\r\n<li>Fire: <a href=\"https:\/\/pixabay.com\/de\/users\/alexas_fotos-686414\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2204302\" target=\"_blank\" rel=\"noopener\">Alexas_Fotos<\/a><\/li>\r\n<\/ul>\r\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I will show you how to build a WiFi BBQ thermometer with a temperature sensor, an ESP32 board and a few other components. <\/p>\n","protected":false},"author":1,"featured_media":13387,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[571,572,548,1320],"tags":[1659,1636,1117,1044,1662,1209,1668,1667,1665,1664,1660,1663,1661,1666,1612],"class_list":["post-13619","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projects","category-sensors","category-wireless","category-wireless-en-2","tag-bbq-en","tag-bbq-thermometer","tag-calibration","tag-esp32-en","tag-excel-en","tag-ifttt-en","tag-lithium-en","tag-lithium-ion-battery","tag-power-supply","tag-replacement-probes","tag-smartphone-en","tag-temperature","tag-trend-line","tag-voltage-supply","tag-wlan-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WiFi BBQ thermometer &#8226; Wolles Elektronikkiste<\/title>\n<meta name=\"description\" content=\"I show you how to build a WiFi BBQ thermometer with a temperature sensor, an ESP32 board and a few other components.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WiFi BBQ thermometer &#8226; Wolles Elektronikkiste\" \/>\n<meta property=\"og:description\" content=\"I show you how to build a WiFi BBQ thermometer with a temperature sensor, an ESP32 board and a few other components.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer\" \/>\n<meta property=\"og:site_name\" content=\"Wolles Elektronikkiste\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-28T20:40:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-29T15:30:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/01\/wlan_bbq_post_image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Wolfgang Ewald\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wolfgang Ewald\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer\"},\"author\":{\"name\":\"Wolfgang Ewald\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"headline\":\"WiFi BBQ thermometer\",\"datePublished\":\"2022-01-28T20:40:12+00:00\",\"dateModified\":\"2024-10-29T15:30:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer\"},\"wordCount\":2288,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/wlan_bbq_post_image.png\",\"keywords\":[\"BBQ\",\"BBQ thermometer\",\"Calibration\",\"ESP32\",\"Excel\",\"IFTTT\",\"lithium\",\"lithium-ion battery\",\"power supply\",\"replacement probes\",\"smartphone\",\"temperature\",\"trend line\",\"voltage supply\",\"WLAN\"],\"articleSection\":[\"Projects\",\"Sensors\",\"Wireless\",\"wireless\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer\",\"name\":\"WiFi BBQ thermometer &#8226; Wolles Elektronikkiste\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/wlan_bbq_post_image.png\",\"datePublished\":\"2022-01-28T20:40:12+00:00\",\"dateModified\":\"2024-10-29T15:30:12+00:00\",\"description\":\"I show you how to build a WiFi BBQ thermometer with a temperature sensor, an ESP32 board and a few other components.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer#primaryimage\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/wlan_bbq_post_image.png\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/wlan_bbq_post_image.png\",\"width\":1200,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/wifi-bbq-thermometer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WiFi BBQ thermometer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\",\"name\":\"Wolles Elektronikkiste\",\"description\":\"Die wunderbare Welt der Elektronik\",\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\",\"name\":\"Wolfgang Ewald\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"width\":512,\"height\":512,\"caption\":\"Wolfgang Ewald\"},\"logo\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WiFi BBQ thermometer &#8226; Wolles Elektronikkiste","description":"I show you how to build a WiFi BBQ thermometer with a temperature sensor, an ESP32 board and a few other components.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer","og_locale":"en_US","og_type":"article","og_title":"WiFi BBQ thermometer &#8226; Wolles Elektronikkiste","og_description":"I show you how to build a WiFi BBQ thermometer with a temperature sensor, an ESP32 board and a few other components.","og_url":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer","og_site_name":"Wolles Elektronikkiste","article_published_time":"2022-01-28T20:40:12+00:00","article_modified_time":"2024-10-29T15:30:12+00:00","og_image":[{"width":1200,"height":1200,"url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/01\/wlan_bbq_post_image.png","type":"image\/png"}],"author":"Wolfgang Ewald","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Wolfgang Ewald","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer#article","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer"},"author":{"name":"Wolfgang Ewald","@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"headline":"WiFi BBQ thermometer","datePublished":"2022-01-28T20:40:12+00:00","dateModified":"2024-10-29T15:30:12+00:00","mainEntityOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer"},"wordCount":2288,"commentCount":0,"publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/01\/wlan_bbq_post_image.png","keywords":["BBQ","BBQ thermometer","Calibration","ESP32","Excel","IFTTT","lithium","lithium-ion battery","power supply","replacement probes","smartphone","temperature","trend line","voltage supply","WLAN"],"articleSection":["Projects","Sensors","Wireless","wireless"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer","url":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer","name":"WiFi BBQ thermometer &#8226; Wolles Elektronikkiste","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#website"},"primaryImageOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer#primaryimage"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/01\/wlan_bbq_post_image.png","datePublished":"2022-01-28T20:40:12+00:00","dateModified":"2024-10-29T15:30:12+00:00","description":"I show you how to build a WiFi BBQ thermometer with a temperature sensor, an ESP32 board and a few other components.","breadcrumb":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer#primaryimage","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/01\/wlan_bbq_post_image.png","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2022\/01\/wlan_bbq_post_image.png","width":1200,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/wolles-elektronikkiste.de\/en\/wifi-bbq-thermometer#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/wolles-elektronikkiste.de\/en"},{"@type":"ListItem","position":2,"name":"WiFi BBQ thermometer"}]},{"@type":"WebSite","@id":"https:\/\/wolles-elektronikkiste.de\/en#website","url":"https:\/\/wolles-elektronikkiste.de\/en","name":"Wolles Elektronikkiste","description":"Die wunderbare Welt der Elektronik","publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wolles-elektronikkiste.de\/en?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46","name":"Wolfgang Ewald","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","width":512,"height":512,"caption":"Wolfgang Ewald"},"logo":{"@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png"}}]}},"_links":{"self":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/13619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/comments?post=13619"}],"version-history":[{"count":0,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/13619\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media\/13387"}],"wp:attachment":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media?parent=13619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/categories?post=13619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/tags?post=13619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}