Aller au contenu


michel

Inscrit(e) (le) 27 oct. 2019
Déconnecté Dernière activité sept. 15 2021 04:22
-----

Sujets que j'ai initiés

NodeMCU Weather Station on Arduino IDE

14 septembre 2020 - 04:10

bonjour Mike ,

je vais faire simple ,j'essaye de faire fonctionner une weather station.

https://github.com/T...weather-station

comme tu l'as dit il faut tester une chose à la fois .

j'ai essayer de me connecter depuis chez moi .

j'ai mis la cley API  http://openweathermap.org/

et normalement je devrais avoir voir photo du site .

et moi je n'ai que des points .

joins le code.

merci d'avance .bonne soirée.

[attachment=12008:3-8.jpg]

[attachment=12007:IMG_1857.JPG]



#include <ESP8266WiFi.h>
#include <LiquidCrystal_I2C.h>
#include <ArduinoJson.h>
#include <Wire.h>



const char* ssid     = "Your Network Name"; //freboxbabette                // SSID of local network
const char* password = "Your Password";     // FC56BF8323              // Password on network
String APIKEY = "API Key";                  // 8b3016c8fecf7dad2d84dfba699ae0ba              
String CityID = "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 = "";
String Country;
float Temperature;
float Humidity;
float Pressure;

LiquidCrystal_I2C lcd(0x3F, 16, 2);    // Address of your i2c LCD back pack should be updated.

void setup() {
  Serial.begin(115200);
  int cursorPosition=0;
  lcd.begin(16, 2);
  lcd.init();
  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() {
    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);
      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"];
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"];
weatherDescription = description;
weatherLocation = location;
Country = country;
Temperature = temperature;
Humidity = humidity;
Pressure = pressure;

}

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);
}

void displayConditions(float Temperature,float Humidity, float Pressure)
{
 lcd.clear();                            //Printing Temperature
 lcd.print("T:"); 
 lcd.print(Temperature,1);
 lcd.print((char)223);
 lcd.print("C "); 
                                         
 lcd.print(" H:");                       //Printing Humidity
 lcd.print(Humidity,0);
 lcd.print(" %"); 
 
 lcd.setCursor(0,1);                     //Printing Pressure
 lcd.print("P: ");
 lcd.print(Pressure,1);
 lcd.print(" hPa");
}

void displayGettingData()
{
  lcd.clear();
  lcd.print("Getting data");
}



arrosage pour bonsai

10 mars 2020 - 05:20

bonjour Mike118

j'aimerai arroser un arbre en fonction de l'humidité du sol .

quand le sol est inférieur à la mesure prés régler la pompe arrose une quantité d'eau régler également.

il s'écoule un temps de 3mn le temps pour l'eau de passer au travers de la terre et si la terre est suffisamment  arroser la pompe ne se remets pas en route ,sinon elle refait un second arrosage .

le programme que je t'ai soumis fait tout cela mais j'aimerai ajouter le contrôle du niveau d'eau par le flow water .

il tourne et c'est lui qui comptabilise la quantité d'eau ,donc s'il aucune eau passe il le sait est c'est ça que je voudrais ajouter à mon programme , mais je ne sais pas comment faire .

aucune impulsion avec une temporisation coupe le relais de la pompe .

je te joint le code .

d'avance merci . Grâce à toi et à sandro j'avance et mon projet avance .

bonne soirée .

[attachment=11307:sketch_mar10a_arrosage.ino]


course du soleil

30 octobre 2019 - 10:28

bonjour j'aimerai faire un programme qui simule la course du soleil sur un écran st7920

j'ai déjà dans mon programme l'heure de levée et coucher du soleil (library Timelord )

j'ai déjà fat la ligne et la parabole sur l'écran (joint photo)[attachment=10775:IMG_1605.JPG]

je ne sais pas comment faire , si quelqu'un pourrais me donner un fil conducteur.

je suis amateur et je sais que les calculs astronomique sont dur .

d'avance merci