Partage
  • Partager sur Facebook
  • Partager sur Twitter

liaison série + envoie de données pas wifi

Sujet résolu
    24 avril 2017 à 14:44:08

    Bonjour, 

    Alors voilà, J'ai réalisé une liaison série entre une carte Arduino et un ESP8266. 

    J'ai un capteur de luminosité lié à ma carte arduino et un capteur de température sur ma carte ESP.

    J'arrive a recevoir les deux infos sur mon serial monitor et à les envoyer sur un site avec dashboard mais j'ai aussi une alarme qui normalement m'envoie un mail quand la température est au dessus de 23°C. 

    Le problème le voici, l'alarme ne fonctionne pas dès qu'on ajoute au programme la partie liaison série (en commentaire dans le programme ci-dessous, ligne 121 ) ! 

    C'est a dire que j'arrive à lire sur le moniteur et sur le site les valeurs de la température et de la luminosité mais peut importe la valeur de la température l'alarme envoie un mail ! 

    Et il me suffit d'enlever le bout de programme qui permet la liaison série avec le capteur de luminosité pour que l'alarme marche ! 

    Donc, j'aimerais savoir si c'est une question d'ordre ou de fonction ? 

    Merci d'avance pour vos réponses et votre temps ! ;)

    le programme : 

    #include <ESP8266WiFi.h>
    #include <SoftwareSerial.h>
    #include <Losant.h>
    
    SoftwareSerial NodeSerial(D2, D3); //RX | TX
    
    // WiFi credentials.
    const char* WIFI_SSID = "*******";
    const char* WIFI_PASS = "************";
    
    // Losant credentials.
    const char* LOSANT_DEVICE_ID = "***********************";
    const char* LOSANT_ACCESS_KEY = "*****************************";
    const char* LOSANT_ACCESS_SECRET = "1***************";
    
    
    bool ledState = false;
    int maxc = 23;
    
    
    WiFiClientSecure wifiClient;
    
    LosantDevice device(LOSANT_DEVICE_ID);
    
    
    
    void connect() {
    
      // Connect to Wifi.
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(WIFI_SSID);
    
      // WiFi fix: https://github.com/esp8266/Arduino/issues/2186
      WiFi.persistent(false);
      WiFi.mode(WIFI_OFF);
      WiFi.mode(WIFI_STA);
      WiFi.begin(WIFI_SSID, WIFI_PASS);
    
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
    
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
    
      Serial.println();
      Serial.print("Connecting to Losant...");
    
      device.connectSecure(wifiClient, LOSANT_ACCESS_KEY, LOSANT_ACCESS_SECRET);
    
      while (!device.connected()) {
        delay(500);
        Serial.print(".");
      }
    
      Serial.println("Connected!");
      Serial.println("This device is now ready for use!");
    }
    
    void setup(void) {
      pinMode(D2, INPUT);
      pinMode(D3, OUTPUT);
      Serial.begin(115200);
      NodeSerial.begin(4800);
    
      delay(2000);
    
      Serial.println();
      Serial.println("Running Workshop 3 Firmware.");
      connect();
    
    }
    
    void reportTemp(double degreesC, double degreesF, double maxc) {
      StaticJsonBuffer<200> jsonBuffer;
      JsonObject& root = jsonBuffer.createObject();
      root["tempC"] = degreesC;
      root["tempF"] = degreesF;
      root["maxc"] = maxc;
      
      device.sendState(root);
    }
    
      void reportTemp(double lumin) {
      StaticJsonBuffer<200> jsonBuffer;
      JsonObject& root = jsonBuffer.createObject();
      root["lumin"] = lumin;
      device.sendState(root);
      }
    
    int timeSinceLastRead = 0;
    int tempSum = 0;
    int tempCount = 0;
    
    void loop() {
    
      bool toReconnect = false;
    
      if (WiFi.status() != WL_CONNECTED) {
        Serial.println("Disconnected from WiFi");
        toReconnect = true;
      }
    
      if (!device.connected()) {
        Serial.println("Disconnected from MQTT");
        Serial.println(device.mqttClient.state());
        toReconnect = true;
      }
    
      if (toReconnect) {
        connect();
      }
      device.loop();
    
    
       /*   NodeSerial.print(0xA1);
          NodeSerial.print("\n");
    
        while (NodeSerial.available() > 0) {
          float val = NodeSerial.parseFloat();
          if (NodeSerial.read() == '\n') {
            Serial.println(val);
          }
          double lumin =  val;
    
          delay(5000);
        }*/
    
        
      tempSum += analogRead(A0);
      tempCount++;
        
        // Report every 15 seconds.
        if (timeSinceLastRead > 5000) {
          // Take the average reading over the last 15 seconds.
          double raw = (double)tempSum / (double)tempCount;
    
          double degreesC = (((raw / 1024.0) * 3.2) - 0.5) * 100.0;
          double degreesF = degreesC * 1.8 + 32;
    
          Serial.println();
          Serial.print("Temperature C: ");
          Serial.println(degreesC);
          Serial.print("Temperature F: ");
          Serial.println(degreesF);
          Serial.println();
    
          reportTemp(degreesC, degreesF, maxc);
    
          timeSinceLastRead = 0;
          tempSum = 0;
          tempCount = 0;
    
        }
      
        delay(100);
        timeSinceLastRead += 100;
    
      }



    -
    Edité par AnthonyBouillon 24 avril 2017 à 14:45:00

    • Partager sur Facebook
    • Partager sur Twitter

    liaison série + envoie de données pas wifi

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown