{"id":1119,"date":"2024-10-16T13:59:10","date_gmt":"2024-10-16T04:59:10","guid":{"rendered":"https:\/\/tatuiyo.xyz\/?p=1119"},"modified":"2026-03-26T11:30:50","modified_gmt":"2026-03-26T02:30:50","slug":"esp32%e3%81%a7-ntp%e6%99%82%e8%a8%88%e6%b8%a9%e6%b9%bf%e5%ba%a6%e3%83%a2%e3%83%8b%e3%82%bf%e3%83%bczabbixsender-%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%9f-aht10-ssd1306-oled","status":"publish","type":"post","link":"https:\/\/tatuiyo.xyz\/?p=1119","title":{"rendered":"ESP32\u3067 NTP\u6642\u8a08+\u6e29\u6e7f\u5ea6\u30e2\u30cb\u30bf\u30fc+ZabbixSender \u3092\u4f5c\u3063\u305f (AHT10, SSD1306 OLED)"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_74 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/tatuiyo.xyz\/?p=1119\/#%E6%A6%82%E8%A6%81\" >\u6982\u8981<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/tatuiyo.xyz\/?p=1119\/#%E6%8E%A5%E7%B6%9A\" >\u63a5\u7d9a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/tatuiyo.xyz\/?p=1119\/#Zabbix%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E8%A8%AD%E5%AE%9A\" >Zabbix\u30b5\u30fc\u30d0\u30fc\u306e\u8a2d\u5b9a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/tatuiyo.xyz\/?p=1119\/#%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90\" >\u30db\u30b9\u30c8\u306e\u4f5c\u6210<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/tatuiyo.xyz\/?p=1119\/#%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E3%81%AE%E4%BD%9C%E6%88%90\" >\u30a2\u30a4\u30c6\u30e0\u306e\u4f5c\u6210<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/tatuiyo.xyz\/?p=1119\/#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0\" >\u30d7\u30ed\u30b0\u30e9\u30e0<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%A6%82%E8%A6%81\"><\/span>\u6982\u8981<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u79d2\u91dd\u4ed8\u304dNTP\u6642\u8a08\u3068\u3001AHT10\u30bb\u30f3\u30b5\u30fc\u3067\u53d6\u5f97\u3057\u305f\u6e29\u6e7f\u5ea6\u3092OLED SSD1306 \u30c7\u30a3\u30b9\u30d7\u30ec\u30a4\u306b\u8868\u793a\u3059\u308b\u3084\u3064\u3092\u4f5c\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u307e\u305f\u3001\u53d6\u5f97\u3057\u305f\u6e29\u6e7f\u5ea6\u306fZabbix\u306b\u3082\u9001\u308a\u3064\u3051\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/173103.jpg\" alt=\"\" class=\"wp-image-1120\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%8E%A5%E7%B6%9A\"><\/span>\u63a5\u7d9a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>OLED\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4\u30922\u500b\u540c\u6642\u306b\u4f7f\u3046\u306e\u3067\u3001\u7247\u65b9\u306eI2C\u30a2\u30c9\u30ec\u30b9\u3092\u5909\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u88cf\u306b\u3042\u308b\u30c1\u30c3\u30d7\u62b5\u6297\u306e\u30b8\u30e3\u30f3\u30d1\u306e\u4f4d\u7f6e\u3092\u5909\u3048\u308b\u3068\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e0x3C\u304b\u30890x3D\u306b\u5909\u3048\u3089\u308c\u307e\u3059\u3002\u5c0f\u3055\u304f\u3066\u5730\u5473\u306b\u96e3\u3057\u304b\u3063\u305f\u3002<\/p>\n\n\n\n<p>ESP32\u306f21\u756a\u304cSDA, 22\u756a\u304cSCL\u3067\u3059\u3002OLED\u3082AHT10\u30823.3V\u306b\u7e4b\u304e\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u5168\u3066\u4e26\u5217\u306b\u7e4b\u3052\u3070OK\u3067\u3059<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Zabbix%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E8%A8%AD%E5%AE%9A\"><\/span>Zabbix\u30b5\u30fc\u30d0\u30fc\u306e\u8a2d\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90\"><\/span>\u30db\u30b9\u30c8\u306e\u4f5c\u6210<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Configuration -&gt; Hosts \u304b\u3089 \u53f3\u4e0a\u306e Create Host \u3092\u30af\u30ea\u30c3\u30af<\/p>\n\n\n\n<p>Host name \u306f ESP32_clock_and_temp \u3067\u3001Groups \u306f Templates\/Modules \u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E3%81%AE%E4%BD%9C%E6%88%90\"><\/span>\u30a2\u30a4\u30c6\u30e0\u306e\u4f5c\u6210<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u4f5c\u6210\u3057\u305f\u30db\u30b9\u30c8\u306eitems\u3092\u30af\u30ea\u30c3\u30af<\/p>\n\n\n\n<p>\u3053\u3093\u306a\u611f\u3058\u306b\u6e29\u5ea6\u3068\u6e7f\u5ea6\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u4f5c\u308a\u307e\u3059<\/p>\n\n\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-full\"><img decoding=\"async\" width=\"730\" height=\"691\" src=\"https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-16-132108.png\" alt=\"\" class=\"wp-image-1128\"\/><\/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-full\"><img decoding=\"async\" width=\"729\" height=\"694\" src=\"https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2024-10-16-132200.png\" alt=\"\" class=\"wp-image-1129\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>\u3042\u3068\u306fZabbix\u306e\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3067\u30b0\u30e9\u30d5\u3092\u8868\u793a\u3055\u305b\u308c\u3070OK<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1195\" height=\"340\" src=\"https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/image-17.png\" alt=\"\" class=\"wp-image-1133\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0\"><\/span>\u30d7\u30ed\u30b0\u30e9\u30e0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6c5a\u3044\u30d7\u30ed\u30b0\u30e9\u30e0\u3002\u534a\u5206\u3050\u3089\u3044\u30b3\u30d4\u30da\u3068GPT-4o\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u4f7f\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u306finclude\u306e\u3068\u3053\u898b\u3066\u304f\u3060\u3055\u3044\u3002ESP32ZabbixSender\u4ee5\u5916\u306fPIO\u306eLibraries\u304b\u3089\u691c\u7d22\u3059\u308b\u3068\u51fa\u3066\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>ESP32ZabbixSender\u306f<a href=\"https:\/\/github.com\/leruetkins\/ESP32ZabbixSender\">\u3053\u308c<\/a>\u3002\u305f\u3060\u3057\u306a\u305c\u304b\u540d\u524d\u304cESP8266\u306e\u307e\u307e\u306a\u306e\u3067\u3001ESP8266ZabbixSender.cpp, ESP8266ZabbixSender.h\u3092ESP32ZabbixSender.cpp, ESP32ZabbixSender.h\u306b\u30ea\u30cd\u30fc\u30e0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3057\u305f\u3002<br>PIO\u306a\u3089\u3001\u305d\u308c\u3089\u3092lib\u30d5\u30a9\u30eb\u30c0\u306b\u6295\u3052\u308c\u3070\u8a2d\u7f6e\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" width=\"244\" height=\"411\" src=\"https:\/\/tatuiyo.xyz\/wp-content\/uploads\/2024\/10\/image-16.png\" alt=\"\" class=\"wp-image-1130\" style=\"width:244px;height:auto\"\/><\/figure>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-c\" data-lang=\"C\"><code>#include &lt;Arduino.h&gt;\n#include &lt;Wire.h&gt;\n#include &lt;Adafruit_GFX.h&gt;\n#include &lt;Adafruit_SSD1306.h&gt;\n#include &lt;WiFi.h&gt;\n#include &lt;NTPClient.h&gt;\n#include &lt;WiFiUdp.h&gt;\n#include &lt;TimeLib.h&gt;\n#include &lt;Adafruit_AHTX0.h&gt;\n#include &lt;ESP32ZabbixSender.h&gt;\n\n#define SCREEN_WIDTH 128\n#define SCREEN_HEIGHT 64\n#define OLED_RESET    -1\n\n#define SERVERADDR 192, 168, 100, 11 \/\/ Zabbix server Address\n#define ZABBIXPORT 10051\t\t\t\/\/ Zabbix erver Port\n#define ZABBIXAGHOST &quot;ESP32_clock_and_temp&quot;  \/\/ Zabbix item&#39;s host name\n\n\/\/ Create display object\nAdafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);\nAdafruit_SSD1306 display2(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);\n\n\/\/Create AHT10 object\nAdafruit_AHTX0 aht;\n\n\/\/ WiFi credentials\nconst char* ssid = &quot;SSID&quot;;  \/\/ Replace with your SSID\nconst char* password = &quot;Pass&quot;;  \/\/ Replace with your Password\n\n\/\/ NTP Client setup\nWiFiUDP ntpUDP;\nNTPClient timeClient(ntpUDP, &quot;pool.ntp.org&quot;, 32400, 1000); \/\/ JST offset 9\u6642\u9593. \u6700\u5c0f1000ms\u3067\u66f4\u65b0, \u305f\u3060\u3057timeClient.update()\u3067\u547c\u3073\u51fa\u3055\u306a\u3044\u3068\u66f4\u65b0\u306f\u3055\u308c\u306a\u3044\nunsigned long lastSyncTime = 0;\nconst unsigned long SyncTimeInterval = 1024000; \/\/ 1024s = 17m4s\nint NTP_disable_sleep = 0;\nint NTP_error_count = 0;\n\n\/\/ Temp && Hum get interval\nunsigned long lastGetTemp = 0;\nconst unsigned long GetTempInterval = 30000; \/\/30\u79d2\u304c\u524d\u63d0\u306b\u306a\u3063\u3066\u308b\u306e\u3067\u5909\u3048\u306a\u3044\u3067\n\n\/\/ Zabbix\nESP32ZabbixSender zSender;\nint tempCount = 0;\nint Zabbix_disable_sleep = 0;\nint Zabbix_error_count = 0;\n\nvoid setup() {\n    \/\/ SSD1306 init\n    Serial.begin(115200);\n    display.begin(SSD1306_SWITCHCAPVCC, 0x3C); \n    display.clearDisplay();\n    Serial.println(&quot;Display1 initialized&quot;);\n    display2.begin(SSD1306_SWITCHCAPVCC, 0x3D); \n    display2.clearDisplay();\n    Serial.println(&quot;Display2 initialized&quot;);\n\n    \/\/ Connect to WiFi\n    WiFi.begin(ssid, password);\n    while (WiFi.status() != WL_CONNECTED) {\n        delay(1000);\n        Serial.println(&quot;Connecting to WiFi...&quot;);\n    }\n    Serial.println(&quot;Connected to WiFi&quot;);\n\n    \/\/ Start NTP client\n    timeClient.begin();\n    timeClient.update();\n    Serial.println(&quot;NTP client started&quot;);\n\n    \/\/ AHT10 init\n    if (!aht.begin()) {\n      Serial.println(&quot;Failed to initialize AHT10 sensor!&quot;);\n      \/\/ esp_restart(); \/\/ \u521d\u671f\u5316\u5931\u6557\u3057\u305f\u3089\u30ea\u30b9\u30bf\u30fc\u30c8\u3059\u308c\u3070\u884c\u3051\u308b\u304b\u3068\u601d\u3063\u305f\u3051\u3069, USB\u3092\u7269\u7406\u7684\u306b\u7e4b\u304e\u76f4\u3055\u306a\u3044\u3068\u30c0\u30e1\u3060\u3063\u305f\n    }\n\n    \/\/ Zabbix init\n    zSender.Init(IPAddress(SERVERADDR), ZABBIXPORT, ZABBIXAGHOST);\n}\n\n\nvoid loop() {\n    unsigned long currentTime = millis();\n\n\n    \/\/ \u3053\u3053\u304b\u3089 NTP\u540c\u671f\n\n    if (currentTime - lastSyncTime &gt;= SyncTimeInterval - 10000){ \/\/ Wifi\u4f7f\u304610\u79d2\u524d\u304b\u3089\u30b9\u30ea\u30fc\u30d7\u89e3\u9664(\u3057\u306a\u3044\u3068\u5931\u6557\u3059\u308b)\n      NTP_disable_sleep = 1;\n    }\n\n    if (currentTime - lastSyncTime &gt;= SyncTimeInterval){\n      if(timeClient.update()){\n        Serial.println(&quot;Success to sync&quot;);\n        lastSyncTime = millis();\n        NTP_disable_sleep = 0;\n\n        NTP_error_count = 0 ;\n      }\n      else{\n        Serial.println(&quot;failed to sync&quot;); \/\/ \u3088\u304f\u5931\u6557\u3059\u308b. Wifi\u518d\u63a5\u7d9a\u3059\u308b\u3068\u305f\u3076\u3093\u6210\u529f\u3059\u308b\n\n        WiFi.disconnect(); \/\/ \u540c\u671f\u51e6\u7406\u3089\u3057\u3044\n        WiFi.begin(ssid, password); \/\/ \u975e\u540c\u671f\u3060\u3051\u306930\u79d2\u5f85\u3066\u3070\u591a\u5206\u5927\u4e08\u592b\n\n        lastSyncTime = currentTime - SyncTimeInterval + 30000; \/\/ 30\u79d2\u5f8c\u306b\u30ea\u30c8\u30e9\u30a4\n\n        NTP_error_count++ ;\n      }\n    }\n\n    \/\/ \u3053\u3053\u307e\u3067 NTP\u540c\u671f\n\n\n    \/\/ \u3053\u3053\u304b\u3089 \u6642\u523b\u8868\u793a\n\n    unsigned long epochTime = timeClient.getEpochTime();\n\n    setTime(epochTime);  \/\/ Set the TimeLib time to NTP time\n\n    \/\/ Fetch and print current time details\n    int yearValue = year();  \n    int monthValue = month();  \n    int dayValue = day();  \n    int hourValue = hour();  \n    int minuteValue = minute();  \n    int secondValue = second();  \n    int dayOfWeek = weekday();  \/\/ 1=Sunday, 2=Monday, ..., 7=Saturday\n\n    \/\/ Create an array for the abbreviated day names\n    const char* days[] = {&quot;Sun&quot;, &quot;Mon&quot;, &quot;Tue&quot;, &quot;Wed&quot;, &quot;Thu&quot;, &quot;Fri&quot;, &quot;Sat&quot;};\n    String dayString = days[dayOfWeek - 1];  \/\/ Get the correct day string (adjust index)\n\n    int reiwa_year = yearValue - 2018;  \n\n    \/\/ Clear display before writing new data\n    display.clearDisplay();\n\n    \/\/ Set text color to white\n    display.setTextColor(SSD1306_WHITE);  \/\/ Set text color to white\n\n    \/\/ First line\n    display.setTextSize(2);\n    display.setCursor(0, 0);\n    display.printf(&quot;%04d\/%02d\/%02d&quot;, yearValue, monthValue, dayValue);\n\n    \/\/ Second line\n    display.setTextSize(4);\n    display.setCursor(0, 20);\n    display.printf(&quot;%02d:%02d&quot;, hourValue, minuteValue);\n\n    \/\/ Third line\n    display.setTextSize(2);\n    display.setCursor(0, 50);\n    display.printf(&quot;%02d %s R%d&quot;, secondValue, dayString, reiwa_year);\n\n    \/\/ Update display\n    display.display(); \n\n    \/\/ \u3053\u3053\u307e\u3067 \u6642\u523b\u8868\u793a\n\n\n    \/\/ \u3053\u3053\u304b\u3089 \u6e29\u6e7f\u5ea6\u8868\u793a\n\n    if (currentTime - lastGetTemp &gt;= GetTempInterval) {\n      \/\/ Get value by sensor\n      sensors_event_t humidity, temp;\n      aht.getEvent(&humidity, &temp); \n\n      float temperature = temp.temperature;\n      float humidity_value = humidity.relative_humidity;\n\n      display2.clearDisplay();\n      display2.setTextColor(SSD1306_WHITE);\n      \n      display2.setTextSize(4);\n      display2.setCursor(0, 0);\n      display2.printf(&quot;%.1f&quot;, temperature);\n      display2.setTextSize(2);\n      display2.printf(&quot; &quot;);\n      display2.setTextSize(3);\n      display2.printf(&quot;C&quot;);\n\n      display2.setTextSize(4);\n      display2.setCursor(0, 32);\n      display2.printf(&quot;%.1f&quot;, humidity_value);\n      display2.setTextSize(2);\n      display2.printf(&quot; &quot;);\n      display2.setTextSize(3);\n      display2.printf(&quot;%%&quot;);\n\n      \/\/ NTP\u3068Zabbix\u306e\u30a8\u30e9\u30fc\u30ab\u30a6\u30f3\u30c8\u3092\u53f3\u4e0b\u306b\u3061\u3063\u3061\u3083\u304f\u8868\u793a\n      display2.setTextSize(1);\n      display2.setCursor(96, 56);\n      display2.printf(&quot;%d %d&quot;, NTP_error_count, Zabbix_error_count);\n\n      display2.display();\n\n      lastGetTemp = currentTime;\n      tempCount++;\n      \n      \/\/ \u3053\u3053\u307e\u3067 \u6e29\u6e7f\u5ea6\u8868\u793a\n\n\n      \/\/ \u3053\u3053\u304b\u3089 Zabbix\u306b\u30c7\u30fc\u30bf\u9001\u4fe1\n\n      if (tempCount == 3){ \/\/ \u6c17\u6e29\u6e7f\u5ea6\u30bb\u30f3\u30b5\u30fc\u304b\u3089\u5024\u3092\u53d6\u5f97\u3057\u3066\u753b\u9762\u66f4\u65b0\u3059\u308b\u30eb\u30fc\u30d7\u304c4\u56de\u5468\u308b\u3054\u3068\u306bZabbix\u306b\u30c7\u30fc\u30bf\u3092\u9001\u308a\u3064\u3051\u308b. \u3064\u307e\u308a2\u5206\u306b1\u56de\n        zSender.ClearItem();\n        zSender.AddItem(&quot;temp&quot;, temperature);\n        zSender.AddItem(&quot;hum&quot;, humidity_value);\n        if (zSender.Send() == EXIT_SUCCESS) {\n          tempCount = 0;\n          Zabbix_disable_sleep = 0;\n          Zabbix_error_count = 0 ;\n        }else{\n          WiFi.disconnect();\n          WiFi.begin(ssid, password); \/\/ \u4f8b\u306b\u3088\u3063\u3066\u3001\u5931\u6557\u3057\u305f\u3089Wifi\u518d\u63a5\u7d9a\n          tempCount = 2; \/\/ \u30ab\u30a6\u30f3\u30c8\u30922\u306b\u623b\u3059\u3053\u3068\u306730\u79d2\u5f8c\u306b\u518d\u8a66\u884c\n          Zabbix_error_count++ ;\n        }\n      }\n\n      \/\/ \u3053\u3053\u307e\u3067 Zabbix\u306b\u30c7\u30fc\u30bf\u9001\u4fe1\n\n    }\n\n    if (tempCount == 2){\n      Zabbix_disable_sleep++ ; \/\/ \u30c7\u30fc\u30bf\u9001\u4fe110\u79d2\u524d\u306b\u30b9\u30ea\u30fc\u30d7\u89e3\u9664\u3059\u308b\u305f\u3081\u306e\u3084\u3064 \u5f8c\u306b\u51e6\u7406\u66f8\u3044\u3066\u308b\n    }\n\n    delay(50); \/\/sleep\u3059\u308b\u306b\u3057\u3066\u3082\u6700\u4f4e\u9650\u306edelay\u3092\u5165\u308c\u306a\u3044\u3068\u30a6\u30aa\u30c3\u30c1\u30c9\u30c3\u30b0\u306b\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u308b\n\n    \/\/ \u3084\u3051\u306b\u6d88\u8cbb\u96fb\u529b\u304c\u5927\u304d\u304b\u3063\u305f(\u5e38\u66420.5W\u3050\u3089\u3044)\u306e\u3067delay\u3067\u306f\u306a\u304f\u30e9\u30a4\u30c8\u30b9\u30ea\u30fc\u30d7\u4f7f\u3046\n    \/\/ \u4f55\u3082\u8003\u3048\u305a\u306b1\u79d2\u30b9\u30ea\u30fc\u30d7\u3059\u308b\u3068\u79d2\u91dd\u304c\u98db\u3076\u306e\u3067\u3001\u51e6\u7406\u6642\u9593\u3092\u8003\u616e\u3057\u3066\u30b9\u30ea\u30fc\u30d7\u6642\u9593\u3092\u6c7a\u5b9a\u3059\u308b\n    long sleepDuration = 1000 - (millis() - currentTime);\n\n    \/\/ \u30b9\u30ea\u30fc\u30d7\u6642\u9593\u304c\u8ca0\u306b\u306a\u3063\u305f\u3089\u3084\u3070\u3044\u306e\u3067\n    if (sleepDuration &gt; 0) {\n      if (NTP_disable_sleep == 1 || Zabbix_disable_sleep &gt;= 20){ \/\/ 10\u79d2\u524d\u306b\u30b9\u30ea\u30fc\u30d7\u89e3\u9664\n        delay(sleepDuration);\n        \/\/ Serial.println(&quot;delay&quot;); \/\/ \u30c7\u30d0\u30c3\u30b0\u7528\n      }\n      else{\n        esp_sleep_enable_timer_wakeup(sleepDuration * 1000); \/\/ micro sec \u5358\u4f4d\u3089\u3057\u3044\n        esp_light_sleep_start();\n        \/\/ Serial.println(&quot;sleep&quot;); \/\/ \u30c7\u30d0\u30c3\u30b0\u7528\n      }\n    }\n    else{\n      \/\/ Serial.println(&quot;no sleep&quot;); \/\/ \u30c7\u30d0\u30c3\u30b0\u7528\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<p>\u30fb\u6642\u8a08\u306e\u30e2\u30cb\u30bf\u30fc\u306f1\u79d2\u3067\u66f4\u65b0 (\u79d2\u91dd\u52d5\u304b\u3059\u305f\u3081)<br>\u30fbNTP\u30b5\u30fc\u30d0\u30fc\u3068\u540c\u671f\u3059\u308b\u6642\u9593\u306f1024\u79d2 (\u3053\u306e\u79d2\u6570\u306f\u5909\u3048\u3066OK)<br>\u30fb\u6e29\u6e7f\u5ea6\u306f30\u79d2\u3054\u3068\u306b\u53d6\u5f97 &amp; \u30e2\u30cb\u30bf\u30fc\u66f4\u65b0 (\u3053\u306e\u79d2\u6570\u306f\u5909\u3048\u306a\u3044\u3067)<br>\u30fbZabbix\u30b5\u30fc\u30d0\u30fc\u306b2\u5206\u306b1\u56de\u9001\u4fe1<br>\u30fbdelay\u3058\u3083\u306a\u304f\u3066light sleep\u3055\u305b\u308b(\u6d88\u8cbb\u96fb\u529b\u304c\u304b\u306a\u308a\u6e1b\u3063\u305f)<\/p>\n\n\n\n<p>\u30fbAHT10\u306e\u521d\u671f\u5316\u306f\u3088\u304f\u5931\u6557\u3059\u308b\u3002\u30ea\u30bb\u30c3\u30c8\u30b3\u30de\u30f3\u30c9\u5165\u308c\u3066\u3082\u7121\u99c4\u3067\u3001USB\u3092\u7269\u7406\u7684\u306b\u5dee\u3057\u306a\u304a\u3055\u306a\u3044\u3068\u30c0\u30e1\u3060\u3063\u305f<\/p>\n\n\n\n<p>\u30fbWifi\u4f7f\u3046\u76f4\u524d\u306bsleep\u5165\u3063\u3066\u308b\u3068\u3053\u3046\u3044\u3046\u5909\u306a\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u5931\u6557\u3059\u308b\u306e\u3067\u300110\u79d2\u524d\u306e\u30eb\u30fc\u30d7\u304b\u3089sleep\u3058\u3083\u306a\u304f\u3066delay\u306b\u5909\u66f4\u3002<\/p>\n\n\n\n<p>[WiFiUdp.cpp:172] beginPacket(): could not get host from dns: 11<br>[WiFiUdp.cpp:185] endPacket(): could not send data: 118<\/p>\n\n\n\n<p>\u66f4\u306b\u5931\u6557\u3057\u305f\u3068\u304d\u306fWifi\u3092\u518d\u63a5\u7d9a\u3057\u306630\u79d2\u5f8c\u306b\u518d\u8a66\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30fbloop()\u5185\u306e\u3069\u3053\u304b\u30671\u56de\u306fdelay(50); (\u6700\u4f4e\u9650\u306f1\u3089\u3057\u3044\u3051\u3069\u52b9\u304b\u306a\u304b\u3063\u305f\u306e\u306750\u306b\u3057\u305f) \u3092\u547c\u3073\u51fa\u3055\u306a\u3044\u3068\u30a6\u30a9\u30c3\u30c1\u30c9\u30c3\u30b0\u30bf\u30a4\u30de(WDT)\u306b\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u308b<\/p>\n\n\n\n<p>\u3053\u3093\u306a\u51fa\u529b\u3067\u30ea\u30bb\u30c3\u30c8\u304c\u304b\u304b\u308a\u307e\u3059<\/p>\n\n\n\n<p>rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)<\/p>\n\n\n\n<p>\u53c2\u8003<br><a href=\"https:\/\/lang-ship.com\/blog\/work\/esp32-freertos-l03-multitask\">https:\/\/lang-ship.com\/blog\/work\/esp32-freertos-l03-multitask<\/a><\/p>\n\n\n\n<p>ESP32\u306b\u306f2\u30b3\u30a2\u3042\u3063\u3066\u3001\u30b3\u30a2\u540dPRO_CPU\u306f\u7121\u7dda\u306e\u51e6\u7406\u62c5\u5f53\u3067WDT\u6709\u52b9\u3001APP_CPU\u306floop()\u95a2\u6570\u62c5\u5f53\u3067WDT\u7121\u52b9\u3089\u3057\u3044\u3002<br>\u30a6\u30a9\u30c3\u30c1\u30c9\u30c3\u30b0\u30bf\u30a4\u30de\u306e\u30ea\u30bb\u30c3\u30c8\u6761\u4ef6\u306fdelay()\u95a2\u6570\u30921\u4ee5\u4e0a\u3067\u547c\u3073\u51fa\u3059\u3053\u3068\u3002<\/p>\n\n\n\n<p>\u306a\u305cWDT\u7121\u52b9\u306a\u306f\u305a\u306eloop()\u95a2\u6570\u5074\u3067delay\u547c\u3073\u51fa\u3059\u3068\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u306a\u304f\u306a\u308b\u306e\u304b\u306f\u8b0e\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6982\u8981 \u79d2\u91dd\u4ed8\u304dNTP\u6642\u8a08\u3068\u3001AHT10\u30bb\u30f3\u30b5\u30fc\u3067\u53d6\u5f97\u3057\u305f\u6e29\u6e7f\u5ea6\u3092OLED SSD1306 \u30c7\u30a3\u30b9\u30d7\u30ec\u30a4\u306b\u8868\u793a\u3059\u308b\u3084\u3064\u3092\u4f5c\u308a\u307e\u3057\u305f\u3002 \u307e\u305f\u3001\u53d6\u5f97\u3057\u305f\u6e29\u6e7f\u5ea6\u306fZabbix\u306b\u3082\u9001\u308a\u3064\u3051\u307e\u3059\u3002 \u63a5\u7d9a OLED\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4\u30922\u500b\u540c\u6642\u306b\u4f7f\u3046\u306e\u3067\u3001\u7247\u65b9\u306eI2C\u30a2\u30c9\u30ec\u30b9\u3092\u5909\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u88cf&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":1207,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50,62,4,7,23,35],"tags":[],"class_list":["post-1119","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32","category-ntp","category-4","category-7","category-23","category-35"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1119"}],"version-history":[{"count":13,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1119\/revisions"}],"predecessor-version":[{"id":1685,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1119\/revisions\/1685"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=\/wp\/v2\/media\/1207"}],"wp:attachment":[{"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tatuiyo.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}