Kód: Vybrať všetko
// ESP8266 a Thingspeak, loguje 4 parametry
// Ono to opravdu funguje!
// OLED!
// připojení potřebné knihovny
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 0 // GPIO0
Adafruit_SSD1306 display(OLED_RESET);
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <dht11.h> // teplomer DHT11
dht11 MojeCidlo; //
const int dOut = D8;
// vytvoření proměnné s naším API klíčem z Thingspeak - viz návod
String apiKlic = "xxxxxxxxxxxxxxx";
// vytvoření proměnných s názvem WiFi sítě a heslem
const char* nazevWifi = "Amiliya_27.";
const char* hesloWifi = "xxxxxxxxxxxxxxx";
//const char* nazevWifi = "Boris Samsung WiFi";
//const char* hesloWifi = "xxxxxxxxxxxx";
float teplota = 0;
int vlhkost = 0;
int svetlo = 0;
int plyn = 0;
int anal = 0; //analogová hodnota = světlo
int pauza = 60*1000*10;
// vytvoření proměnné s názvem serveru Thingspeaku
const char* server = "api.thingspeak.com";
// inicializace WiFi v módu klienta
WiFiClient client;
OneWire oneWire(D4); // inicializace OneWire
DallasTemperature ds18b20(&oneWire); //vytvoření objektu čidla teploty
void setup() {
// zahájení komunikace po sériové lince
Serial.begin(9600);
Serial.println(" ");
Serial.println("Boot..........");
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// zahájení bezdrátové WiFi komunikace s připojením
// na router skrze zadané přihl. údaje
WiFi.begin(nazevWifi, hesloWifi);
// čekání na úspěšné připojení k routeru,
// v průběhu čekání se vytiskne každých
// 500 milisekund tečka po sériové lince
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Pripojeno k WiFi siti ");
Serial.println(nazevWifi);
Serial.print("IP adresa: ");
Serial.println(WiFi.localIP());
Serial.println("");
pinMode(dOut, INPUT);
Serial.println("Setup ok");
}
void loop() {
Serial.println("Loop jede");
delay(150);
ds18b20.requestTemperatures(); // zjisteni teploty ze senzoru
teplota = ds18b20.getTempCByIndex(0);
delay(150);
MojeCidlo.read(D3); // přečte údaje z čidla DTH11 připojeného na pin 7
vlhkost = MojeCidlo.humidity;
anal = analogRead(A0);
svetlo = map(anal,0,1023,0,100);
plyn = digitalRead(dOut);
Serial.println("Hodnoty zmereny");
// připojení na server Thingspeak pro odeslání dat
if (client.connect(server,80)) {
// vytvoření zprávy, která bude odeslána na Thingspeak
// každé pole je označeno jako "field" + pořadí pole,
// je nutné každý údaj převést na String
String zprava = apiKlic;
zprava +="&field1=";
zprava += String(teplota);
zprava +="&field2=";
zprava += String(vlhkost);
zprava +="&field3=";
zprava += String(svetlo);
zprava +="&field4=";
zprava += String(plyn);
zprava += "\r\n\r\n";
// po vytvoření celé zprávy ji odešleme na server Thingspeak
// včetně našeho API klíče
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKlic+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(zprava.length());
client.print("\n\n");
client.print(zprava);
Serial.print("Teplota: ");
Serial.println(teplota);
Serial.print("Vlhkost: ");
Serial.println(vlhkost);
Serial.print("Svetlo: ");
Serial.println(svetlo);
Serial.print("Plyn: ");
Serial.println(plyn);
Serial.println("Udaje odeslany na Thingspeak.");
}
// ukončení spojení se serverem Thingspeak
client.stop();
Serial.print("Pauza pred dalsim odeslanim dat - ");
Serial.print(pauza/60/1000);
Serial.print("minut");
Serial.println(" ");
Serial.println(" ");
Serial.println(" ");
display.display();
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.println(" METEOSTANICE");
display.println(" ");
display.setTextSize(1);
display.print("Teplota: ");
display.println(teplota);
display.print("Vlhkost: ");
display.println(vlhkost);
display.print("Svetlo: ");
display.println(svetlo);
display.print("WiFi: ");
display.println(nazevWifi);
display.print("IP: ");
display.println(WiFi.localIP());
display.display();
delay(pauza);
}
M