Help us understand the problem. What is going on with this article?

ESP8266でNTPサーバから時刻を取得する

はじめに

電子工作をやってると、特定の時間や一定時間ごとに動かしたいという動作が出てくる。
そういう時にNTPサーバから時刻を取得したら便利かなと思ったので、このやり方で正しいのかわからないけど書き記しておきます。

準備

ArduinoIDEのスケッチ>ライブラリをインクルード>ライブラリを管理から「ライブラリマネージャ」を開き「NTPClient」をインストールする。
Screenshot from 2020-02-14 20-57-07.png

とりあえず時刻を表示してみる

exapmleファイルから引用

#include <NTPClient.h>
// change next line to use with another board/shield
#include <ESP8266WiFi.h>
//#include <WiFi.h> // for WiFi shield
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
#include <WiFiUdp.h>

const char *ssid     = "WiFiのSSID";
const char *password = "WiFiのパスワード";

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP);

void setup(){
  Serial.begin(115200);

  WiFi.begin(ssid, password);

  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }

  timeClient.begin();
}

void loop() {
  timeClient.update();

  Serial.println(timeClient.getFormattedTime());

  delay(1000);
}

Screenshot from 2020-02-14 21-15-06.png
UTC時刻だけど表示出来た。
日本標準時にするには

//NTPClient timeClient(ntpUDP);を以下に書き換える
NTPClient timeClient(ntpUDP,32400);

時/分/秒(HOUR, MINUTE, SECOND)を別々に表示する

時/分/秒を別々に取得出来たほうがより便利かなと思ったので一応…
timeClient.getMinutes()で分を取得できる。時や秒も同様に

 Serial.println(timeClient.getHours());
 Serial.println(timeClient.getMinutes());
 Serial.println(timeClient.getSeconds());

Screenshot from 2020-02-14 21-48-27.png
出来た。
ただ、1秒毎の取得だとNTPサーバに負荷がかかりそうだけどどうなんだろうか…

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした