ruzne:esp8266
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verze | Poslední revizeObě strany příští revize | ||
ruzne:esp8266 [2016/06/06 10:55] – multitricker | ruzne:esp8266 [2016/06/06 10:55] – odstraněno multitricker | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | ====== ESP8266 a zobrazení poslední teploty z tmep.cz ====== | ||
- | Příklad jak naprogramovat ESP8266 v Arduino IDE od '' | ||
- | |||
- | **Web autora příkladu: | ||
- | **Kontakt na autora:** [[mikrom@mikrom.cz]] | ||
- | |||
- | Nezapomeňte na začátku kódu nastavit své správné proměnné (SSID vlastní wifi, heslo k wifi síti a správnou adresu k JSONu na tmep.cz). | ||
- | |||
- | {{: | ||
- | |||
- | {{: | ||
- | |||
- | <file c tmep_read_json_to_oled.ino> | ||
- | // Simple sketch for reading data from the TMEP.cz (and write them on Serial and OLED display) | ||
- | // by mikrom (http:// | ||
- | // http:// | ||
- | |||
- | #include < | ||
- | #include < | ||
- | #include < | ||
- | #include < | ||
- | #include < | ||
- | #define OLED_RESET BUILTIN_LED | ||
- | |||
- | // Define settings | ||
- | const char* ssid = " | ||
- | const char* pass = " | ||
- | const char* jsonurl = " | ||
- | const long sleep = 600000; | ||
- | |||
- | Adafruit_SSD1306 display(OLED_RESET); | ||
- | |||
- | void setup() { | ||
- | // Start serial | ||
- | Serial.begin(115200); | ||
- | delay(10); | ||
- | Serial.println(); | ||
- | |||
- | // OLED display | ||
- | display.begin(SSD1306_SWITCHCAPVCC, | ||
- | display.clearDisplay(); | ||
- | display.setTextColor(WHITE); | ||
- | display.setTextSize(1); | ||
- | display.setCursor(0, | ||
- | display.println(" | ||
- | display.println(); | ||
- | | ||
- | // Connect to the WiFi | ||
- | Serial.print(" | ||
- | display.print(" | ||
- | WiFi.begin(ssid, | ||
- | while (WiFi.status() != WL_CONNECTED) { | ||
- | delay(500); | ||
- | Serial.print(" | ||
- | display.print(" | ||
- | display.display(); | ||
- | } | ||
- | Serial.println(); | ||
- | display.println(); | ||
- | Serial.println(" | ||
- | display.println(" | ||
- | Serial.print(" | ||
- | display.println(" | ||
- | Serial.println(); | ||
- | | ||
- | display.display(); | ||
- | delay(10000); | ||
- | } | ||
- | |||
- | void loop() { | ||
- | // OLED display | ||
- | display.clearDisplay(); | ||
- | display.setTextColor(WHITE); | ||
- | display.drawRoundRect(1, | ||
- | |||
- | // Connect to the HOST and read data via GET method | ||
- | WiFiClient client; // Use WiFiClient class to create TCP connections | ||
- | | ||
- | const char* host = " | ||
- | const int httpPort = 80; | ||
- | | ||
- | Serial.print(" | ||
- | if (!client.connect(host, | ||
- | // If you didn't get a connection to the server | ||
- | Serial.println(" | ||
- | return; | ||
- | } | ||
- | Serial.println(" | ||
- | |||
- | // Make an url | ||
- | char url[50]; | ||
- | strncpy(url, | ||
- | | ||
- | Serial.print(" | ||
- | |||
- | // Make HTTP GET request | ||
- | client.print(String(" | ||
- | " | ||
- | " | ||
- | |||
- | // Workaroud for timeout | ||
- | unsigned long timeout = millis(); | ||
- | while (client.available() == 0) { | ||
- | if (millis() - timeout > 5000) { | ||
- | Serial.println(">>> | ||
- | client.stop(); | ||
- | return; | ||
- | } | ||
- | } | ||
- | |||
- | // Read JSON | ||
- | String data; | ||
- | bool capture = false; | ||
- | String json; | ||
- | while (client.available()) { | ||
- | data = client.readStringUntil(' | ||
- | // | ||
- | // First few rows is header, it ends with empty line. | ||
- | // This is unique ultrasimple, | ||
- | // Start capture when { occurs and end capturing with }. | ||
- | if(data.startsWith(" | ||
- | capture = true; | ||
- | } | ||
- | if(data.startsWith(" | ||
- | capture = false; | ||
- | } | ||
- | if(capture){ | ||
- | json = json + data; // Joining row by row together in one nice JSON part. | ||
- | } | ||
- | } | ||
- | json = json + " | ||
- | Serial.println(json); | ||
- | |||
- | // Lets throw our json on ArduinoJson library and get results! | ||
- | StaticJsonBuffer< | ||
- | JsonObject& | ||
- | if (!root.success()) | ||
- | { | ||
- | Serial.print(" | ||
- | return; | ||
- | } | ||
- | |||
- | // This is how our JSON looks. You can read any value of parameters | ||
- | // { | ||
- | // " | ||
- | // " | ||
- | // " | ||
- | // " | ||
- | // } | ||
- | String cas = root[" | ||
- | Serial.print(" | ||
- | display.setTextSize(1); | ||
- | display.setCursor(30, | ||
- | display.print(" | ||
- | display.setCursor(6, | ||
- | display.print(cas); | ||
- | | ||
- | float teplota = root[" | ||
- | display.setTextSize(4); | ||
- | display.setCursor(6, | ||
- | if (teplota == -127.00) { // If you have connected it wrong, Dallas read this temperature! :) | ||
- | Serial.println(" | ||
- | display.print(" | ||
- | } else { | ||
- | Serial.print(" | ||
- | display.print(teplota, | ||
- | display.setTextSize(3); | ||
- | display.setCursor(105, | ||
- | display.print(char(247)); | ||
- | } | ||
- | | ||
- | //String vlhkost = root[" | ||
- | //String umisteni = root[" | ||
- | |||
- | display.display(); | ||
- | Serial.println(); | ||
- | | ||
- | // Wait for another round | ||
- | delay(sleep); | ||
- | } | ||
- | </ |