ESP-BOT

Форк
0
/
esp8266.ino 
342 строки · 13.8 Кб
1
#include <WiFiClient.h>
2
#include <ArduinoJson.h>
3
#define FB_WITH_LOCATION
4
#include <datatypes.h>
5
#include <utils.h>
6
#include <string>
7
#include <FastBot.h>
8
#include <ESP8266HTTPClient.h>
9
#include <ESP8266WiFi.h>
10
#define WIFI_SSID "TP-Link_AC5C"
11
#define WIFI_PASS "99931728"
12
#define BOT_TOKEN "6435083940:AAGMSQN1fn1891vLicfYMAGbLk0cDCq_LjM"
13
FastBot bot(BOT_TOKEN);
14
//переменные
15
String API = "8b92943f5d8168a3668a52206d787396";
16
String regionID = "20174";
17
String serverPath = "https://yandex.com/time/sync.json?geo=" + regionID;
18
String monday[8] = { "0.Разговор о важном", "1.Алгебра", "2.Англ.яз", "3.ТВИС", "4.Алгебра", "5.История", "6.Литература", "7.Физика" };
19
String tuesday[8] = { "0", "1.Геометрия", "2.Физ-ра", "3.Русский яз.", "4.Общество", "5.Физика", "6.Биология", "7.Индивидуальный проект" };
20
String wednesday[8] = { "0", "1", "2.Литература", "3.Англ.яз", "4.Геометрия", "5.Химия", "6.Физика", "7.История" };
21
String thursday[8] = { "0.Профмин", "1.Информатика", "2.Русский.яз", "3.ОБЖ", "4.Алгебра", "5.Алгебра", "6.Физика", "7.Общество" };
22
String friday[8] = { "0", "1.Англ.яз", "2.Литература", "3.География", "4.Физика", "5.Геометрия", "6.Физ-ра", "7.КНКБР" };
23
String call[8] = { "0.08:00-08:20", "1.08:30-09:10", "2.09:20-10:00", "3.10:15-10:55", "4.11:10-11:50", "5.12:05-12:45", "6.13:00-13:40", "7.13:55-14:35" };
24
StaticJsonDocument<1000> wea;
25
WiFiClient client;
26
HTTPClient http;
27

28

29
void setup() {
30
  connectWiFi();
31
  bot.attach(new2Msg);
32
}
33

34

35
void new2Msg(FB_msg& msg) {
36
  if (msg.OTA && msg.chatID == "718856532") bot.update();
37
  else if (msg.text == "/start") {
38
    bot.sendMessage("Привет, это бот созданный для физмата 10А класса", msg.chatID);
39
  } else if (msg.text == "/lesson0schedule") {
40
    FB_Time t(msg.unix, 3);  // передали unix и часовой пояс
41
    uint8_t day = t.dayWeek;
42
    if (day == 1) {
43
      int i;
44
      for (i = 0; i < 8; i = i + 1) {
45
        bot.sendMessage(monday[i], msg.chatID);
46
      }
47
    } else if (day == 2) {
48
      int i;
49
      for (i = 0; i < 8; i = i + 1) {
50
        bot.sendMessage(tuesday[i], msg.chatID);
51
      }
52
    } else if (day == 3) {
53
      int i;
54
      for (i = 0; i < 8; i = i + 1) {
55
        bot.sendMessage(wednesday[i], msg.chatID);
56
      }
57
    } else if (day == 4) {
58
      int i;
59
      for (i = 0; i < 8; i = i + 1) {
60
        bot.sendMessage(thursday[i], msg.chatID);
61
      }
62
    } else if (day == 5) {
63
      int i;
64
      for (i = 0; i < 8; i = i + 1) {
65
        bot.sendMessage(friday[i], msg.chatID);
66
      }
67
    } else if (day > 5) {
68
      bot.sendMessage("Уроков нет", msg.chatID);
69
    }
70
  } else if (msg.text == "/call0schedule") {
71
    int i;
72
    for (i = 0; i < 8; i = i + 1) {
73
      bot.sendMessage(call[i], msg.chatID);
74
    }
75
  } else if (msg.text == "/next0lesson") {
76
    FB_Time t(msg.unix, 3);
77
    String d[8];
78
    if (t.dayWeek == 1) {
79
      for (int i = 0; i < 9; i++) {
80
        d[i] = monday[i];
81
      }
82
    } else if (t.dayWeek == 2) {
83
      for (int i = 0; i < 9; i++) {
84
        d[i] = tuesday[i];
85
      }
86
    } else if (t.dayWeek == 3) {
87
      for (int i = 0; i < 9; i++) {
88
        d[i] = wednesday[i];
89
      }
90
    } else if (t.dayWeek == 4) {
91
      for (int i = 0; i < 9; i++) {
92
        d[i] = thursday[i];
93
      }
94
    } else if (t.dayWeek == 5) {
95
      for (int i = 0; i < 9; i++) {
96
        d[i] = friday[i];
97
      }
98
    }
99
    if (t.hour == 7) bot.sendMessage(d[0], msg.chatID);
100
    else if (t.hour == 8 && t.minute < 30) bot.sendMessage(d[1], msg.chatID);
101
    else if ((t.hour == 8 && t.minute >= 30) or (t.hour == 9 && t.minute < 20)) bot.sendMessage(d[2], msg.chatID);
102
    else if ((t.hour == 9 && t.minute >= 20) or (t.hour == 10 && t.minute < 15)) bot.sendMessage(d[3], msg.chatID);
103
    else if ((t.hour == 10 && t.minute >= 15) or (t.hour == 11 && t.minute < 10)) bot.sendMessage(d[4], msg.chatID);
104
    else if ((t.hour == 11 && t.minute >= 10) or (t.hour == 12 && t.minute < 5)) bot.sendMessage(d[5], msg.chatID);
105
    else if ((t.hour == 12 && t.minute >= 5) or (t.hour == 13 && t.minute == 0)) bot.sendMessage(d[6], msg.chatID);
106
    else if ((t.hour == 13 && t.minute >= 0) and (t.hour == 13 && t.minute < 55)) bot.sendMessage(d[7], msg.chatID);
107
    else if ((t.hour == 13 && t.minute >= 55) or (t.hour == 14 && t.minute < 35)) bot.sendMessage("Домой", msg.chatID);
108
    else bot.sendMessage("Уроков нет", msg.chatID);
109
  } else if (msg.text == "/how0long0until0the0bell") {
110
    FB_Time t(msg.unix, 3);
111
    if (t.hour == 7) {
112
      byte hour, minute, minute1, hour1;
113
      String ost, ost1;
114
      hour = 8 * 60 + 0 - t.hour * 60 - t.minute;
115
      hour1 = 8 * 60 + 0 - t.hour * 60 - t.minute - 15;
116
      minute = hour % 60;
117
      minute1 = hour1 % 60;
118
      hour = hour / 60;
119
      hour1 = hour1 / 60;
120
      ost += hour;
121
      ost += "ч";
122
      ost += minute;
123
      ost += "м";
124
      ost1 += hour1;
125
      ost1 += "ч";
126
      ost1 += minute1;
127
      ost1 += "м";
128
      bot.sendMessage(("До следующего урока: " + ost), msg.chatID);
129
      bot.sendMessage(("До конца урока: " + ost1), msg.chatID);
130
    } else if (t.hour == 8 && t.minute < 30) {
131
      byte hour, minute, minute1, hour1;
132
      String ost, ost1;
133
      hour = 8 * 60 + 30 - t.hour * 60 - t.minute;
134
      hour1 = 8 * 60 + 30 - t.hour * 60 - t.minute - 15;
135
      minute = hour % 60;
136
      minute1 = hour1 % 60;
137
      hour = hour / 60;
138
      hour1 = hour1 / 60;
139
      ost += hour;
140
      ost += "ч";
141
      ost += minute;
142
      ost += "м";
143
      ost1 += hour1;
144
      ost1 += "ч";
145
      ost1 += minute1;
146
      ost1 += "м";
147
      bot.sendMessage(("До следующего урока: " + ost), msg.chatID);
148
      bot.sendMessage(("До конца урока: " + ost1), msg.chatID);
149
    } else if ((t.hour == 8 && t.minute >= 30) or (t.hour == 9 && t.minute < 20)) {
150
      byte hour, minute, minute1, hour1;
151
      String ost, ost1;
152
      hour = 9 * 60 + 20 - t.hour * 60 - t.minute;
153
      hour1 = 9 * 60 + 20 - t.hour * 60 - t.minute - 15;
154
      minute = hour % 60;
155
      minute1 = hour1 % 60;
156
      hour = hour / 60;
157
      hour1 = hour1 / 60;
158
      ost += hour;
159
      ost += "ч";
160
      ost += minute;
161
      ost += "м";
162
      ost1 += hour1;
163
      ost1 += "ч";
164
      ost1 += minute1;
165
      ost1 += "м";
166
      bot.sendMessage(("До следующего урока: " + ost), msg.chatID);
167
      bot.sendMessage(("До конца урока: " + ost1), msg.chatID);
168
    } else if ((t.hour == 9 && t.minute >= 20) or (t.hour == 10 && t.minute < 15)) {
169
      byte hour, minute, minute1, hour1;
170
      String ost, ost1;
171
      hour = 10 * 60 + 15 - t.hour * 60 - t.minute;
172
      hour1 = 10 * 60 + 15 - t.hour * 60 - t.minute - 15;
173
      minute = hour % 60;
174
      minute1 = hour1 % 60;
175
      hour = hour / 60;
176
      hour1 = hour1 / 60;
177
      ost += hour;
178
      ost += "ч";
179
      ost += minute;
180
      ost += "м";
181
      ost1 += hour1;
182
      ost1 += "ч";
183
      ost1 += minute1;
184
      ost1 += "м";
185
      bot.sendMessage(("До следующего урока: " + ost), msg.chatID);
186
      bot.sendMessage(("До конца урока: " + ost1), msg.chatID);
187
    } else if ((t.hour == 10 && t.minute >= 15) or (t.hour == 11 && t.minute < 10)) {
188
      byte hour, minute, minute1, hour1;
189
      String ost, ost1;
190
      hour = 11 * 60 + 10 - t.hour * 60 - t.minute;
191
      hour1 = 11 * 60 + 10 - t.hour * 60 - t.minute - 15;
192
      minute = hour % 60;
193
      minute1 = hour1 % 60;
194
      hour = hour / 60;
195
      hour1 = hour1 / 60;
196
      ost += hour;
197
      ost += "ч";
198
      ost += minute;
199
      ost += "м";
200
      ost1 += hour1;
201
      ost1 += "ч";
202
      ost1 += minute1;
203
      ost1 += "м";
204
      bot.sendMessage(("До следующего урока: " + ost), msg.chatID);
205
      bot.sendMessage(("До конца урока: " + ost1), msg.chatID);
206
    } else if ((t.hour == 11 && t.minute >= 10) or (t.hour == 12 && t.minute < 5)) {
207
      byte hour, minute, minute1, hour1;
208
      String ost, ost1;
209
      hour = 12 * 60 + 5 - t.hour * 60 - t.minute;
210
      hour1 = 12 * 60 + 5 - t.hour * 60 - t.minute - 15;
211
      minute = hour % 60;
212
      minute1 = hour1 % 60;
213
      hour = hour / 60;
214
      hour1 = hour1 / 60;
215
      ost += hour;
216
      ost += "ч";
217
      ost += minute;
218
      ost += "м";
219
      ost1 += hour1;
220
      ost1 += "ч";
221
      ost1 += minute1;
222
      ost1 += "м";
223
      bot.sendMessage(("До следующего урока: " + ost), msg.chatID);
224
      bot.sendMessage(("До конца урока: " + ost1), msg.chatID);
225
    } else if ((t.hour == 12 && t.minute >= 5) or (t.hour == 13 && t.minute == 0)) {
226
      byte hour, minute, minute1, hour1;
227
      String ost, ost1;
228
      hour = 13 * 60 - t.hour * 60 - t.minute;
229
      hour1 = 13 * 60 - t.hour * 60 - t.minute - 15;
230
      minute = hour % 60;
231
      minute1 = hour1 % 60;
232
      hour = hour / 60;
233
      hour1 = hour1 / 60;
234
      ost += hour;
235
      ost += "ч";
236
      ost += minute;
237
      ost += "м";
238
      ost1 += hour1;
239
      ost1 += "ч";
240
      ost1 += minute1;
241
      ost1 += "м";
242
      bot.sendMessage(("До следующего урока: " + ost), msg.chatID);
243
      bot.sendMessage(("До конца урока: " + ost1), msg.chatID);
244
    } else if ((t.hour == 13 && t.minute >= 0) or (t.hour == 13 && t.minute < 55)) {
245
      byte hour, minute, minute1, hour1;
246
      String ost, ost1;
247
      hour = 13 * 60 + 55 - t.hour * 60 - t.minute;
248
      hour1 = 13 * 60 + 55 - t.hour * 60 - t.minute - 15;
249
      minute = hour % 60;
250
      minute1 = hour1 % 60;
251
      hour = hour / 60;
252
      hour1 = hour1 / 60;
253
      ost += hour;
254
      ost += "ч";
255
      ost += minute;
256
      ost += "м";
257
      ost1 += hour1;
258
      ost1 += "ч";
259
      ost1 += minute1;
260
      ost1 += "м";
261
      bot.sendMessage(("До следующего урока: " + ost), msg.chatID);
262
      bot.sendMessage(("До конца урока: " + ost1), msg.chatID);
263
    } else if ((t.hour == 13 && t.minute >= 55) or (t.hour == 14 && t.minute < 35)) {
264
      byte hour, minute, minute1, hour1;
265
      String ost, ost1;
266
      hour = 14 * 60 + 35 - t.hour * 60 - t.minute;
267
      hour1 = 14 * 60 + 35 - t.hour * 60 - t.minute - 15;
268
      minute = hour % 60;
269
      minute1 = hour1 % 60;
270
      hour = hour / 60;
271
      hour1 = hour1 / 60;
272
      ost += hour;
273
      ost += "ч";
274
      ost += minute;
275
      ost += "м";
276
      ost1 += hour1;
277
      ost1 += "ч";
278
      ost1 += minute1;
279
      ost1 += "м";
280
      bot.sendMessage(("До следующего урока: " + ost), msg.chatID);
281
      bot.sendMessage(("До конца урока: " + ost1), msg.chatID);
282
    } else bot.sendMessage("Уроков нет", msg.chatID);
283
  } else if (msg.location.latitude.length() > 0 && msg.location.longitude.length() > 0) {
284
    //bot.sendMessage("Lat: " + msg.location.latitude + ", Lon: " + msg.location.longitude, msg.chatID);
285
    //String weather = "https://api.openweathermap.org/data/2.5/weather?lat=" + String(msg.location.latitude) + "&lon=" + String(msg.location.longitude) + "&units=metric&lang=ru&appid=" + API;
286
    String url = "/data/2.5/weather?lat=" + msg.location.latitude + "&lon=" + msg.location.longitude + "&units=metric&lang=ru&appid=8b92943f5d8168a3668a52206d787396";
287
    http.begin(client, "api.openweathermap.org", 80, url);
288
    int httpCode = http.GET();
289
    if (httpCode > 0) {
290
      String spon = http.getString();
291
      DeserializationError error = deserializeJson(wea, spon);
292
      if (error) {
293
        String errorStr = error.c_str();
294
        bot.sendMessage(errorStr, msg.chatID);
295
      } else {
296
        //bot.sendMessage("deserializeJson() без ошибок.", msg.chatID);
297
        //bot.sendMessage(spon, msg.chatID);
298
        // Deserialize the JSON document
299
        deserializeJson(wea, spon);
300
        const char* locate = wea["name"];
301
        bot.sendMessage(("Местоположение: " + String(locate)), msg.chatID);
302
        //bot.sendMessage(url, msg.chatID);
303
        JsonObject weather_0 = wea["weather"][0];
304
        const char* description = weather_0["description"]; // "небольшой дождь"
305
        const char* smile1 = weather_0["icon"]; // "10n"
306
        String smile = smile1;
307
        if (smile == "01d" or smile == "01n") bot.sendMessage(("Погода: " + String(description) + " ☀️"), msg.chatID);
308
        else if (smile == "02d" or smile == "02n") bot.sendMessage(("Погода: " + String(description) + " ⛅"), msg.chatID);
309
        else if (smile == "03d" or smile == "03n" or smile == "04d" or smile == "04n") bot.sendMessage(("Погода: " + String(description) + " ☁️"), msg.chatID);
310
        else if (smile == "09d" or smile == "09n") bot.sendMessage(("Погода: " + String(description) + " ⛈️"), msg.chatID);
311
        else if (smile == "10d" or smile == "10n") bot.sendMessage(("Погода: " + String(description) + " 🌧️"), msg.chatID);
312
        else if (smile == "11d" or smile == "11n") bot.sendMessage(("Погода: " + String(description) + " 🌩️"), msg.chatID);
313
        else if (smile == "13d" or smile == "13n") bot.sendMessage(("Погода: " + String(description) + " ❄️"), msg.chatID);
314
        else if (smile == "50d" or smile == "50n") bot.sendMessage(("Погода: " + String(description) + " 🌫️"), msg.chatID);
315
        float temp = wea["main"]["temp"];
316
        bot.sendMessage(("Температура: " + String(temp)), msg.chatID);
317
        byte hum = wea["main"]["humidity"];
318
        bot.sendMessage(("Влажность: " + String(hum)), msg.chatID);
319
        http.end();
320
      }
321
    }
322
  }
323
}
324

325

326
void connectWiFi() {  //подключение к интернету
327
  delay(2000);
328
  Serial.begin(115200);
329
  WiFi.begin(WIFI_SSID, WIFI_PASS);
330
  while (WiFi.status() != WL_CONNECTED) {
331
    delay(500);
332
    Serial.print(".");
333
    if (millis() > 15000) ESP.restart();
334
  }
335
}
336

337
//функции команд
338

339

340
void loop() {
341
  bot.tick();
342
}
343

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.