Bonjour,
sur Arduino, je mesure la vitesse du vent avec un anémomètre "pulse" vitesse appelée "vitesseVent"
je cherche à envoyer cette vitesse dans une variable globale de la HC2 "testvent"
voici un code, qui n'est pas fonctionnel, avec ce code j'envoie une valeur "fixe et prédéfinie" à la hc2 mais ce n'est pas ce que je cherche.
pourriez vous m'aider
par avance merci
voici le code complet:
#define ANEMOMETRE 1 //pin D3, interruption n°1
volatile unsigned int countAnemometre = 0;
unsigned long previousMillis= 0;
unsigned long previousMillis2= 0;
unsigned long delaiAnemometre = 3000L; //3 secondes
unsigned long delaiProgramme = 60000L; //60 sec
float gust(0); //vent max cumulé sur 1 min
float wind(0); //vent moyen cumulé sur 1 min
int nbAnemo = 0; //nb d'occurence de mesure Anemo
float vitesseVent(0); //vent moyen cumulé sur 1 min
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xA5, 0x7E }; //physical mac address 90:A2:DA:0E:A5:7E
byte ip[] = { 192, 168, 1, 175 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
IPAddress server(192,168,1,24); //HC2 FIBARO
EthernetClient client;
void setup() {
Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
attachInterrupt(ANEMOMETRE,interruptAnemometre,RISING) ;
pinMode(3, INPUT);
}
/* * Fonction d'interruption de l'anémomètre qui incrémente un compteur à chaque impulsion */
void interruptAnemometre(){
countAnemometre++;
}
void loop(){
int BP = digitalRead(3); // Lecture du capteur
unsigned long currentMillis = millis(); // read time passed
//Récupération des infos de l'anémomètre toutes les 3 sec
//Enregistrement cumulé des valeurs
if (currentMillis - previousMillis > delaiAnemometre){
previousMillis = millis();
// vitesseVent = (PI * RAYON * 2 * countAnemometre)/3*3.6; //3 = durée de prise de mesure (3sec)
vitesseVent = (0.83 * countAnemometre)/3*3.6; //3 = durée de prise de mesure (3sec)
if(vitesseVent>gust) gust = vitesseVent;
wind += vitesseVent;
nbAnemo++;
countAnemometre = 0;
Serial.print("Vent:");
Serial.println(vitesseVent);
}
//Toutes les minutes, compilation des valeurs et envoi au serveur
if (currentMillis - previousMillis2 > delaiProgramme){
previousMillis2 = millis();
float avgwind = wind / nbAnemo;
Serial.print("Wind AVG : ");
Serial.println(avgwind);
Serial.print("Gust : ");
Serial.println(gust);
//RAZ des compteurs qui ont servi a calculé les valeurs moyennes sur 1 min
wind = 0;
gust = 0;
nbAnemo = 0;
}
if (client.available()) {
char c = client.read();
Serial.print(c);
}
delay(1000);
Serial.println("connecting...");
String PostData = "{\r\n\"value\":\"0\"\r\n}"; //JSON data to send
if (client.connect(server,80)) {
Serial.println("connected");
client.print("PUT /api/globalVariables/testvent"); //Fibaro Global Variable
client.println(" HTTP/1.1");
client.println("Host: 192.168.1.24");
client.println("Authorization: Basic xxxxxxxxxxxxxx"); //need to insert base 64 user:password
client.print("Content-Length: ");
client.println(PostData.length());
client.println();
client.println(PostData);
}
else {
Serial.println("Connection Failed.");
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}