Bonjour Mike ,
tu m'a dit de venir quand j’étais bloquer .
CE CODE FONCTIONNE j'ai bien date,mois,année,heure,minute,seconde(sunrise)
#include <TimeLib.h>
#include <ArduinoJson.h>
int timezone = +2;
int root;
int SunriseHour;
int SunriseMin;
void setup() {
Serial.begin(115200);
}
void loop() {
Sunrise();
}
void Sunrise(){
const char* json = "{\"country\":\"JP\",\"sunrise\":1600665442,\"sunset\":1369821049,\"timezone\":7200}";
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
unsigned long t = root["sunrise"];
char buff[32];
sprintf(buff, "%02d.%02d.%02d %02d:%02d:%02d", day(t), month(t), year(t), hour(t)+timezone, minute(t), second(t));
Serial.println("sunrise");
Serial.println(buff);
SunriseHour = (buff ,hour(t)+timezone);
SunriseMin = (buff,minute(t));
Serial.println("sunriseMin");
Serial.println (SunriseHour*60+SunriseMin);
}
j'ai voulu le mettre dans mon code avec le wifi et la j'ai une panne "expected primary-expression before ',' à la ligne
sprintf( buff,"%02d.%02d.%02d %02d:%02d:%02d", day(t), month(t), year(t), hour(t)+timezone, minute(t), second(t));
dans void Sunrise()
d'avance merci
#include <ESP8266WiFi.h>
#include <LiquidCrystal_I2C.h>
#include <ArduinoJson.h>
#include <Wire.h>
#include <TimeLib.h>
int SunriseHour;
int SunsetHour;
int SunriseMin;
int SunsetMin;
const char* ssid = "freeboxbabette"; // SSID of local network
const char* password = "FC56BF8323"; // Password on network
String APIKEY = "8b3016c8fecf7dad2d84dfba699ae0ba";
String CityID = "6454924"; //Your City ID
WiFiClient client;
char servername[]="api.openweathermap.org"; // remote server we will connect to
String result;
int counter = 60;
String weatherDescription ="";
String weatherLocation = "";
//uint32_t Sunrise;
String Country;
String weatherID;
float Temperature;
float Humidity;
float Pressure;
double Latitude = 0.0;
double Longitude = 0.0;
LiquidCrystal_I2C lcd(0x3F, 20, 4); // Address of your i2c LCD back pack should be updated.
void setup() {
Serial.begin(115200);
int cursorPosition=0;
lcd.begin();
lcd.backlight();
lcd.print(" Connecting");
Serial.println("Connecting");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
lcd.setCursor(cursorPosition,2);
lcd.print(".");
cursorPosition++;
}
lcd.clear();
lcd.print(" Connected!");
Serial.println("Connected");
delay(1000);
}
void loop() {
Sunrise();
if(counter == 60) //Get new data every 10 minutes
{
counter = 0;
displayGettingData();
delay(1000);
getWeatherData();
}else
{
counter++;
displayWeather(weatherLocation,weatherDescription);
delay(5000);
displayConditions(Temperature,Humidity,Pressure,Latitude,Longitude);
delay(5000);
}
}
void getWeatherData() //client function to send/receive GET request data.
{
if (client.connect(servername, 80))
{ //starts client connection, checks for connection
client.println("GET /data/2.5/weather?id="+CityID+"&units=metric&APPID="+APIKEY);
client.println("Host: api.openweathermap.org");
client.println("User-Agent: ArduinoWiFi/1.1");
client.println("Connection: close");
client.println();
}
else {
Serial.println("connection failed"); //error message if no client connect
Serial.println();
}
while(client.connected() && !client.available())
delay(1); //waits for data
while (client.connected() || client.available())
{ //connected or data available
char c = client.read(); //gets byte from ethernet buffer
result = result+c;
}
client.stop(); //stop client
result.replace('[', ' ');
result.replace(']', ' ');
Serial.println(result);
char jsonArray [result.length()+1];
result.toCharArray(jsonArray,sizeof(jsonArray));
jsonArray[result.length() + 1] = '\0';
StaticJsonBuffer<1024> json_buf;
JsonObject &root = json_buf.parseObject(jsonArray);
if (!root.success())
{
Serial.println("parseObject() failed");
}
String location = root["name"];
String country = root["sys"]["country"];
//unsigned long t = root["sys"]["sunrise"];
float temperature = root["main"]["temp"];
float humidity = root["main"]["humidity"];
String weather = root["weather"]["main"];
String description = root["weather"]["description"];
float pressure = root["main"]["pressure"];
long time = root["time"];
double latitude = root["coord"]["lat"];
double longitude = root["coord"]["lon"];
weatherDescription = description;
weatherLocation = location;
Country = country;
Temperature = temperature;
Humidity = humidity;
Pressure = pressure;
Latitude = latitude;
Longitude = longitude;
}
void displayWeather(String location,String description)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(location);
lcd.print(", ");
lcd.print(Country);
lcd.setCursor(0,1);
lcd.print(description); //print sunrise
}
void displayConditions(float Temperature,float Humidity, float Pressure,double latitude,double longitude)
{
lcd.clear(); //Print Temperature
lcd.print("T:");
lcd.print(Temperature,1);
lcd.print((char)223);
lcd.print("C ");
lcd.print(" H:"); //Print Humidity
lcd.print(Humidity,0);
lcd.print(" %");
lcd.setCursor(0,1); //Print Pressure
lcd.print("P: ");
lcd.print(Pressure,1);
lcd.print(" hPa");
lcd.setCursor(0,2); //Print Latitude
lcd.print("Lat:");
lcd.print(latitude, 2);
lcd.setCursor(10,2); //Print Longitude
lcd.print("Lon:");
lcd.print(longitude, 2);
}
void displayGettingData()
{
lcd.clear();
lcd.print("Getting data");
}
void Sunrise(){
int root;
unsigned long t = root["sunrise"];
char buff[32];
sprintf( buff,"%02d.%02d.%02d %02d:%02d:%02d", day(t), month(t), year(t), hour(t)+timezone, minute(t), second(t));
Serial.println("sunrise");
Serial.println(buff);
SunriseHour = (buff ,hour(t)+timezone);
SunriseMin = (buff,minute(t));
Serial.println("sunriseMin");
Serial.println (SunriseHour*60+SunriseMin);
}