2 #include <ESP8266WiFi.h>
6 #include <ESP8266HTTPClient.h>
9 //NTP test program for Nefry
10 //Nefryの時計をntpで同期するためのサンプルコードです.開発中です.
11 //Nefryのwifi関数を使ってWifiが切れたら再接続するように書き換えた
14 #include "user_interface.h"
17 #define DEVICEID ESP.getChipId()
26 const String szCommandReadBaseURL = "https://a.yamagata-u.ac.jp/amenity/network/M2M/KinomaControlRequest.aspx";
27 const String FingurePrintSha1 ="A5 23 3B D5 FA 6C E9 C2 8F 30 17 8F EF F9 EA C8 C5 18 49 3F";
28 const char* host = "a.yamagata-u.ac.jp";
29 const int httpPort = 80;
30 const int httpsPort = 443;
32 //char toSSID[] = "xxxx";
33 //char ssidPASSWD[] = "xxxxxx";
35 int nCounterWifiReconnect=0;
39 bool bCommandReadingHttp = false;
40 bool bNoNTPupdated = true;
46 // You can specify the time server pool and the offset (in seconds, can be
47 // changed later with setTimeOffset() ). Additionaly you can specify the
48 // update interval (in milliseconds, can be changed using setUpdateInterval() ).
49 NTPClient timeClient(ntpUDP, "ntp.nict.jp", 0, 3600000);
52 void timer1_ISR (void) {
53 if (WiFi.status() != WL_CONNECTED) {
54 // コネクション確立済み以外のステータスなので
56 Nefry.setLed(255, 0, 0);
57 nCounterWifiReconnect++;
59 if (nCounterWifiReconnect>30){
60 nCounterWifiReconnect=0;
61 Nefry.setWifiTimeoutClear();
62 Nefry.println("Wifi TimeoutClear");
66 nCounterWifiReconnect=0;
67 Nefry.setLed(0, 0, 64);
71 ADvalue = analogRead(A0);
72 AD1[nADcount].nBootedClock = nBootedClock;
73 AD1[nADcount].nEphochTime=(long)timeClient.getEpochTime();
74 AD1[nADcount].ADValue = ADvalue;
78 //Nefry.println(ADvalue);
79 //2014-10-10T13:50:40+09:00 (TIMEZONE JST)
80 //2014-10-10T04:50:40Z (UTC)
81 // sprintf(buf,"%04d-%02d-%02dT%02d:%02d:%02dZ",year(), month(), day(),hour(),minute(),second());
82 // Nefry.println(buf);
91 timer1_detachInterrupt();
94 void start_timer1(unsigned int nIntervalTime_us) {
96 timer1_attachInterrupt(timer1_ISR);
97 timer1_enable(TIM_DIV16, TIM_EDGE, TIM_LOOP);
98 timer1_write(clockCyclesPerMicrosecond() / 16 * nIntervalTime_us);
101 // put your setup code here, to run once:
103 // WiFi.mode(WIFI_STA);
104 //WiFi.begin(toSSID, ssidPASSWD);
106 //Nefry.println(DEVICEID);
107 start_timer1(1000000); //1000000 us間隔でタイマーを起動
113 if (bNoNTPupdated==true){
114 if (WiFi.status() == WL_CONNECTED) {
115 Nefry.setLed(128, 0, 128);
118 setTime(timeClient.getEpochTime());
119 //Nefry.println(timeClient.getFormattedTime());
120 Nefry.setLed(0, 0, 64);
126 if (WiFi.status() == WL_CONNECTED && bCommandReadingHttp == false) {
127 bCommandReadingHttp = true;
128 Nefry.setLed(0, 128, 0);
130 String szCommandReadURL = szCommandReadBaseURL + "?DeviceID=" + DEVICEID;
132 szCommandReadURL = szCommandReadURL + "&AD1=" + AD1[nADcount].ADValue;
133 szCommandReadURL = szCommandReadURL + "&EphochTime=" + AD1[nADcount].nEphochTime;
134 szCommandReadURL = szCommandReadURL + "&BootedClock=" + AD1[nADcount].nBootedClock;
135 http.begin(szCommandReadURL,FingurePrintSha1);
136 int httpCode = http.GET();
137 //Nefry.print(timeClient.getFormattedTime());
138 //Nefry.println(httpCode);
139 if(httpCode == HTTP_CODE_OK) {
140 String payload = http.getString();
141 // Nefry.println(" : " + payload);
145 bCommandReadingHttp = false;
146 Nefry.setLed(0, 0, 64);
151 if (WiFi.status() == WL_CONNECTED && nCounter30s > 30) {
153 Nefry.setLed(128, 0, 128);
155 setTime(timeClient.getEpochTime());
156 // Nefry.println(timeClient.getFormattedTime());
157 //Nefry.println((String)AD1[nADcount].nBootedClock+"++");
159 Nefry.setLed(0, 0, 64);