Advertisement
peterzig

oled

Mar 22nd, 2020
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 KB | None | 0 0
  1. #include <Arduino.h>
  2. #include <Wire.h>
  3. #include <SPI.h>
  4. #include <Adafruit_GFX.h>
  5. #include <Adafruit_SSD1306.h>
  6. #include <ArduinoJson.h>
  7. #include <ESP8266WiFi.h>
  8. #include <ESP8266WiFiMulti.h>
  9. #include <ESP8266HTTPClient.h>
  10. #include <WiFiClientSecureBearSSL.h>
  11.  
  12. #define OLED_RESET LED_BUILTIN  //4
  13. Adafruit_SSD1306 display(OLED_RESET);
  14.  
  15. ESP8266WiFiMulti WiFiMulti;
  16.  
  17. // WiFi Parameters
  18. const char *server = "https://corona.lmao.ninja/countries/poland";
  19. HTTPClient http;
  20.  
  21. void setup() {
  22.  
  23. Serial.begin(9600);
  24. Wire.begin(2,0);
  25.  
  26.  
  27.   for (uint8_t t = 4; t > 0; t--) {
  28.     Serial.printf("[SETUP] WAIT %d...\n", t);
  29.     Serial.flush();
  30.     delay(1000);
  31.   }
  32.  
  33.   WiFi.mode(WIFI_STA);
  34.   WiFiMulti.addAP("ssid", "password");
  35.  
  36. display.begin();
  37.  
  38. StaticJsonDocument<140> payload;
  39.  
  40. }
  41.  
  42. void loop() {
  43.  Serial.println("Connecting to the HTTP server....");
  44.   std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
  45.   client->setInsecure();
  46.  
  47.   Serial.println("Building URL...");
  48.  
  49.   if (http.begin(*client, "https://corona.lmao.ninja/countries/poland")) {
  50.     Serial.println("Connected");
  51.     http.addHeader("Accept", "application/json");
  52.    
  53.  
  54.     int code = http.GET();
  55.     Serial.printf("HTTP Code [%d]", code);
  56.     if (code > 0) {
  57.       if (code == HTTP_CODE_OK || code == HTTP_CODE_MOVED_PERMANENTLY) {
  58.         Serial.println("GET OK");
  59.         String payload = http.getString();
  60.        // Serial.println(payload);
  61.  
  62.  // Allocate JsonBuffer
  63.     // Use arduinojson.org/assistant to compute the capacity.
  64.   const size_t capacity = JSON_OBJECT_SIZE(9) + 140;
  65.   DynamicJsonDocument doc(capacity);
  66.  
  67.   // Parse JSON object
  68.   DeserializationError error = deserializeJson(doc, payload);
  69.   if (error) {
  70.     Serial.print(F("deserializeJson() failed: "));
  71.     Serial.println(error.c_str());
  72.     return;
  73.   }
  74.  
  75.     // Decode JSON/Extract values
  76.  
  77.   Serial.println(F("Response:"));
  78.   Serial.println(doc["country"].as<char*>());
  79.   Serial.println(doc["cases"].as<int>());
  80.   Serial.println(doc["todayCases"].as<int>());
  81.   Serial.println(doc["deaths"].as<int>());
  82.   display.clearDisplay();
  83.   display.display();
  84. display.setCursor(0, 0);
  85. display.print("Zarazonych: " + String(doc["cases"].as<int>()));
  86. display.setCursor(0, 1);
  87. display.print("z czego dzis: " + String(doc["todayCases"].as<int>()));
  88. display.setCursor(0, 2);
  89. display.print("Umarlo: " + String(doc["deaths"].as<int>()));
  90. display.setCursor(0, 3);
  91. display.print("z czego dzis: " + String(doc["todayDeaths"].as<int>()));
  92.  
  93.       }
  94.     }
  95.     else {
  96.       Serial.printf("[HTTP] GET... failed, error: %s", http.errorToString(code).c_str());
  97.     }
  98.    }
  99.   Serial.println("Wait 100s before next round...");
  100.   delay(100000);
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement