Mám v arduinu :
Kód: Vybrat vše
#include <ESP8266WiFi.h>
#include "DHT.h"
#include <Adafruit_BMP085.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP8266HTTPClient.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define pinDHT D12
#define typDHT22 DHT22 // DHT 22 (AM2302)
DHT mojeDHT(pinDHT, typDHT22);
const int myPeriodic = 300; // Time to sleep (in seconds):
Adafruit_BMP085 bmp;
// Nazev Wi-Fi site, do ktere se mam pripojit
const char* ssid = "Kony";
// Heslo Wi-Fi site, do ktere se mam pripojit
const char* password = "hesloWIFI";
char server[] = "192.168.1.249"; //URL adresa serveru
WiFiClient client;
HTTPClient http;
HTTPClient http2;
unsigned long cas = 0;
String cas_aktualni;
String datum;
float tep;
float vlh;
float tlak_aktualni;
void setup() {
lcd.begin();
lcd.backlight();
lcd.clear();
// komunikace přes sériovou linku rychlostí 9600 baud
Serial.begin(9600);
// zapnutí komunikace s teploměrem DHT
mojeDHT.begin();
if (!bmp.begin()) {
// Serial.println("Could not find BMP180 or BMP085 sensor at 0x77");
while (1) {}
}
Serial.println();
Serial.print("Pripojuji k ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// Dokud nejsem pripojeny k Wi-Fi,zapisuj do seriove linky tecky progressbaru
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
lcd.setCursor ( 0, 0 );
lcd.print(".");
}
// Jsem pripojeny k Wi-Fi a mohu pokracovat
Serial.println();
Serial.println("WiFi pripojena!");
lcd.setCursor ( 0, 1 );
lcd.print("Wifi Pripojena!");
// Napis IP adresu, kterou mikropocitac dostal
Serial.print("Pouzij k pripojeni tuto adresu: ");
Serial.print("http://");
Serial.println(WiFi.localIP());
lcd.setCursor ( 0, 2 );
lcd.print(WiFi.localIP());
delay(2000);
lcd.clear();
lcd.setCursor ( 1, 1 );
lcd.print("Teplota : ");
lcd.setCursor ( 1,2 );
lcd.print("Vlhkost : ");
lcd.setCursor ( 2,3 );
lcd.print("Tlak :");
}
void teplota_vlhkost() {
tep = mojeDHT.readTemperature();
delay(2000);
vlh = mojeDHT.readHumidity();
// kontrola, jestli jsou načtené hodnoty čísla pomocí funkce isnan
if (isnan(tep) || isnan(vlh)) {
// při chybném čtení vypiš hlášku
Serial.println("Chyba při čtení z DHT senzoru!");
lcd.setCursor ( 11, 1 );
lcd.print(" ");
lcd.setCursor ( 11, 1 );
lcd.print("chyba");
lcd.setCursor ( 11,2 );
lcd.print("chyba");
teplota_vlhkost();
} else {
// pokud jsou hodnoty v pořádku,
// vypiš je po sériové lince
Serial.print("Teplota: ");
Serial.print(tep,1);
Serial.println(" °C");
Serial.print("Vlhkost: ");
Serial.print(vlh,0);
Serial.println(" %");
lcd.setCursor ( 11, 1 );
lcd.print(" ");
lcd.setCursor ( 11, 1 );
lcd.print(tep,1);
lcd.print(" ");
lcd.print((char)223);
lcd.print("C");
lcd.setCursor ( 11,2 );
lcd.print(vlh,0);
lcd.print(F(" % "));
}
}
void tlak() {
tlak_aktualni = (bmp.readPressure()/100)+38;
Serial.print("Tlak : ");
Serial.print(tlak_aktualni,0);
Serial.println(" hPa");
lcd.setCursor ( 11,3 );
lcd.print(tlak_aktualni,0);
lcd.print(F(" hPa"));
}
void hodiny() {
String URL = "http://192.168.1.250/doma/cas.php"; // Works with HTTP
http.begin(client, URL); // Works with HTTP
int httpCode = http.GET();
if (httpCode > 0) {
cas_aktualni = http.getString();
Serial.print("Cas : ");
Serial.println(cas_aktualni); // Print response
}
http.end();
lcd.setCursor ( 15,0 );
lcd.print(cas_aktualni);
}
void den_tydnu() {
String URL = "http://192.168.1.250/doma/datum.php"; // Works with HTTP
http.begin(client, URL); // Works with HTTP
int httpCode = http.GET();
if (httpCode > 0) {
datum = http.getString();
Serial.print("Datum : ");
Serial.println(datum); // Print response
}
http.end();
lcd.setCursor ( 0,0 );
lcd.print(" ");
lcd.setCursor ( 0,0 );
lcd.print(datum);
}
void odesli() {
String URLodesli = "http://192.168.1.249/doma/loger_venku.php?teplota=" + String(tep,1) + "&vlhkost=" + String(vlh,0) + "&tlak=" + String(tlak_aktualni,0); // Works with HTTP
http2.begin(client, URLodesli); // Works with HTTP
int httpResponseCode = http2.GET();
http2.end();
Serial.println("Odeslano");
}
void loop() {
//1 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
//2 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
//3 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
//4 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
//5 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
//6 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
//7 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
//8 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
//9 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
//10 minuta
teplota_vlhkost();
tlak();
hodiny();
den_tydnu();
Serial.println("_________________________");
delay(51000);
odesli();
}
v PHP mam :
Kód: Vybrat vše
<?php
$server = "localhost";
$user = "kony";
$pass = "hesloDB";
$db = "Domacnost";
$mysqli = mysqli_connect($server, $user, $pass, $db); //připojení k MySQL
if($mysqli && isset($_GET['teplota']) && isset($_GET['vlhkost']) && isset($_GET['tlak'])){ //pokud GET obsahuje 'hodnota', pokračuj
$teplota = sanitize($_GET['teplota']);
$vlhkost = sanitize($_GET['vlhkost']);
$tlak = sanitize($_GET['tlak']);
$sql = "INSERT INTO dht_venku (teplota, vlhkost, tlak) VALUES (".$teplota.", ".$vlhkost.", ".$tlak.")"; //sestavení SQL
$doSql = $mysqli->query($sql); //vykonání SQL
if($doSql){ //test úspěchu
echo 'Zápis byl úspěšný';
}
else{
echo 'Něco se nepovedlo';
}
}
else{
echo "Neco je špatně";
}
function sanitize($input){ //ořízne řetězec
$input = htmlspecialchars($input);
$input = htmlentities($input);
$input = strip_tags($input);
$input = trim($input);
return $input;
}
?>