Teď bych rád zvládl vyčíst data z openweathermap. Mají na to připravené API, takže mám vytvořený string
http://api.openweathermap.org/data/2.5/ ... pid=API_ID
který když zkopíruju do prohlížeče tak mi vyhodí data.
Potřeboval bych ale upravit program tak, aby data neodesílal na server ale naopak z něj četl.
Rád bych aby se mi vypsal json do serial monitoru..
Dokázal by mě prosím někdo nakopnout správným směrem? (O tom, že můžu programovat přímo ESP vím, ale to nechci. Nestačily by mi piny pro budoucí rozvoj který teoreticky plánuju...)
Předem moc děkuji za radu!
Kód: Vybrat vše
#include <SoftwareSerial.h>
#include "DHT.h"
#define RX 10
#define TX 11
#define DHTPIN 8
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
String AP = "cenzurováno"; // CHANGE ME
String PASS = "cenzurováno"; // CHANGE ME
String API = "cenzurováno"; // CHANGE ME
String HOST = "api.openweathermap.org";
String PORT = "443";
String CITY = "Prague";
String COUNTRY ="CZ";
String APIWOM ="cenzurováno";
int countTrueCommand;
int countTimeCommand;
boolean found = false;
int valSensor = 1;
SoftwareSerial esp8266(RX,TX);
void setup() {
Serial.begin(9600);
esp8266.begin(115200);
sendCommand("AT",5,"OK");
sendCommand("AT+CWMODE=1",5,"OK");
sendCommand("AT+CWJAP=\""+ AP +"\",\""+ PASS +"\"",20,"OK");
Serial.println("KY-015 test - temperature and humidity-test:");
}
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
valSensor = getSensorData();
String readData = "http://" + String(HOST)+ "/data/2.5/forecast?q" +"="+String(CITY)+ "," +String(COUNTRY) +"&cnt=3&appid=" +String(APIWOM);
sendCommand("AT+CIPMUX=1",5,"OK");
sendCommand("AT+CIPSTART=0,\"TCP\",\""+ HOST +"\","+ PORT,15,"OK");
sendCommand("AT+CIPSEND=0," +String(readData.length()+4),4,">");
esp8266.println(readData);delay(1500);countTrueCommand++;
sendCommand("AT+CIPCLOSE=0",5,"OK");
Serial.println(readData);
Serial.println(t);
}
int getSensorData(){
return random(1000); // Replace with
}
void sendCommand(String command, int maxTime, char readReplay[]) {
Serial.print(countTrueCommand);
Serial.print(". at command => ");
Serial.print(command);
Serial.print(" ");
while(countTimeCommand < (maxTime*1))
{
esp8266.println(command);//at+cipsend
if(esp8266.find(readReplay))//ok
{
found = true;
break;
}
countTimeCommand++;
}
if(found == true)
{
Serial.println("OK!");
countTrueCommand++;
countTimeCommand = 0;
}
if(found == false)
{
Serial.println("Fail!");
countTrueCommand = 0;
countTimeCommand = 0;
}
found = false;
}