Kód: Vybrat vše
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
#define TRIGGER_PIN 0 // tlacitko na GPIO0
const int httpPort = 80;
const char* host = "api.thingspeak.com"; // Informace pro připojení k thingspeak.com
const char* APIkey = "muj klíc";
const unsigned long SamplingTime = 30000; // perioda odesilani [ms]
unsigned long TimeStamp;
float temp;
OneWire oneWire(ONE_WIRE_BUS); // Inicializace DS18B20 na pinu GPIO2
DallasTemperature DS18B20(&oneWire);
//---------------------------------------------------------------------------------
void setup() {
Serial.begin(115200); // Otevření komunikace po sériové lince
pinMode(TRIGGER_PIN, INPUT); // tlacitko na GPIO0
WiFi.begin(); // Inicializace připojení k síti
WiFi.mode(WIFI_STA);
WiFi.setAutoReconnect(true);
// deset sekund se pokousi o pripojeni k WiFi
Serial.println("\r\nWaiting for wifi");
for (uint8_t i = 0; (WiFi.status() != WL_CONNECTED) && (i < 10); i++) {
delay(1000);
Serial.print(".");
}
// Potvrzení připojení k síti
if (WiFi.status() == WL_CONNECTED) {
Serial.println("\r\nWiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.println();
}
else {
Serial.println("\r\nWiFi not connected!\r\nPress the GPIO button to start the WifiManager");
}
DS18B20.requestTemperatures(); // Prvni vzorek
temp = DS18B20.getTempCByIndex(0);
TimeStamp = millis();
}
//---------------------------------------------------------------------------------
void loop() {
// je volan WifiManager?
if ( digitalRead(TRIGGER_PIN) == LOW ) {
WiFiManager wifiManager;
wifiManager.startConfigPortal("OnDemandAP");
Serial.println("connected...yeey :)");
}
// Měření a odesílání teploty probíhá v intervalu SamplingTime,
// ale pouze pokud existuje pripojeni k WiFi
if ((millis() > SamplingTime) && ((millis() - SamplingTime) > TimeStamp) && (WiFi.status() == WL_CONNECTED)) {
TimeStamp = millis();
DS18B20.requestTemperatures(); // Získání informace o teplotě teploty
temp = DS18B20.getTempCByIndex(0);
Serial.print("Temperature: ");
Serial.println(temp);
char charVal[12];
// Konverze vyčtené teploty do stringu
// (hodnota, počet míst, počet desetinných míst,
// umístění stringu)
dtostrf(temp, 8, 2, charVal);
Serial.print("connecting to ");
Serial.println(host);
WiFiClient client;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
// Vytvoření URL pro odeslání informace o teplotě
String url = "/update?key=";
url += APIkey;
url += "&field1=";
url += charVal;
Serial.print("Requesting URL: ");
Serial.println(url);
// Odeslání požadavku na server
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
Serial.println();
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line); // tisk informací přijatých ze serveru
delay(10); }
Serial.println();
Serial.println("connection completed"); // potvrzení ukončení odesílání
Serial.println();
Serial.println();
//*************************************
String Host = "http://mujhosting.cz/";
WiFiClient clienti;
if (!clienti.connect(Host,80)){
Serial.println("nespojeno");
return;
}
String odkaz = "http://můj hosting.cz/somepage.php?username=";
odkaz += charVal;
clienti.print(String("GET ")+ odkaz);
clienti.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
clienti.println("Connection: close\r\n\r\n");
clienti.println();
Serial.println("proslo to");
//***********************************
Serial.println();
Serial.println("posilani na druhe misto"); // potvrzení ukončení odesílání
Serial.println();
Serial.println();
}
}