- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 48

Thema: NodeMCU UDP Paket senden + deepsleep

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #25
    Neuer Benutzer Öfters hier
    Registriert seit
    24.02.2013
    Beiträge
    19
    https://github.com/esp8266/Arduino/issues/3481

    Kommt mir sehr bekannt vor! Ich sende auch nur ein einziges Paket!

    Hier der Code der funktioniert:
    Code:
    #include <ESP8266WiFi.h>          //ESP8266 Core WiFi Library (you most likely already have this in your sketch)
    #include <WiFiUdp.h>
    #include <DHT.h>
    
    #define DHTPIN 0             
    #define DHTTYPE DHT22 
    
    //Init DHT-Sensor
    DHT dht(DHTPIN, DHTTYPE);
    //set IPs
    IPAddress IPudp (192, 168, 10, 68);
    IPAddress IPlocal (192, 168, 10, 201);
    IPAddress IPdns (192, 168, 10, 1);
    IPAddress IPgateway (192, 168, 10, 1);
    IPAddress IPsubnetmask (255, 255, 255, 0);
    
    //*******DeviceID-config************************
    char UnitID[] = "id_1";
    //******************************************
    unsigned int receiveUdpPort = 5006;
    unsigned int sendUdpPort = 5005;
    
    char ssid[] = ("xxx");
    char passphrase[] = ("xxx");
    char charTemp[10];
    char charHum[10];
    int sendingStat;
    
    
    WiFiUDP udp;
    
    
    void setup() { 
      Serial.begin(115200);
      delay(1000);
      Serial.println("\n\nSerial connection started");
      
    
      WiFi.mode (WIFI_STA);
      //WiFi.config (IPlocal, IPdns, IPgateway, IPsubnetmask);
      WiFi.begin(ssid, passphrase);
      while (WiFi.status() != WL_CONNECTED) 
      {
        delay(500);
        Serial.print(".");
        Serial.print(WiFi.status());
      }
      WiFi.printDiag(Serial);
      Serial.print(WiFi.status());
    
      pinMode(12, OUTPUT);
      Serial.printf("Now listening at IP %s, UDP port %d\n\n", WiFi.localIP().toString().c_str(), receiveUdpPort);
      delay(5000);  
    
    }
    
    
    void loop() {
    
      digitalWrite(12, HIGH);
      delay(3500);
      float hum = dht.readHumidity();
      float temp = dht.readTemperature();
      digitalWrite(12, LOW);
      dtostrf(temp,5,2,charTemp); 
      dtostrf(hum,5,2,charHum);
      delay(1000);
      if (isnan(hum) || isnan(temp)) {
        Serial.println("Sensorfehler!");
        udp.beginPacket(IPudp,sendUdpPort);
        udp.write(UnitID);
        udp.write(" Sensorfehler\n");
        udp.endPacket();
      } 
      else {
      long rssi = WiFi.RSSI(); 
      Serial.println("Sending Sensordata");
      if (!udp.begin(receiveUdpPort)) {
       Serial.println("UDP Socketerror");
      }
      Serial.printf("Now sending UDP on port %d \n", sendUdpPort);
      
      udp.beginPacket(IPudp,sendUdpPort);
      udp.write(UnitID);
      udp.write(" ");
      udp.write(charTemp);
      udp.write(" ");
      udp.write(charHum);
      udp.write(" ");
      udp.write(rssi);
      sendingStat == udp.endPacket();
    
      yield();
      if(sendingStat = 1) {
        Serial.println("UDP Packet successful send");
      }
      else {
        Serial.println("UDP Packet not send");
      }
      Serial.println("Wait 0,5s..");
      delay(500);
      Serial.print("   UDP Destination IP: :");
      Serial.println(IPudp);
      Serial.print("   UDP Port: ");
      Serial.println(sendUdpPort);
      Serial.print("   Device ID: ");
      Serial.println(UnitID);
      Serial.print("   Temperatur: ");
      Serial.println(charTemp);
      Serial.print("   Relative Luftfeuchte: ");
      Serial.println(charHum);
      Serial.print("   Daempfung: ");
      Serial.println(rssi);
      //udp.stop();
      //WiFi.disconnect();
      //WiFi.mode(WIFI_OFF);
      Serial.println("wait 5,5s");
      delay(5500);
      //Serial.println("ESP goes to deepsleep 60s");
      //ESP.deepSleep(60e6);
      delay(100);
      }
    
    }
    Und dieser funktioniert nicht zuverlässig. Die Pakete kommen zwischen ca. 10s - 500s an (Unterschied nur in den letzten, nicht mehr auskommentierten Zeilen):
    Code:
    #include <ESP8266WiFi.h>          //ESP8266 Core WiFi Library (you most likely already have this in your sketch)
    #include <WiFiUdp.h>
    #include <DHT.h>
    
    #define DHTPIN 0             
    #define DHTTYPE DHT22 
    
    //Init DHT-Sensor
    DHT dht(DHTPIN, DHTTYPE);
    //set IPs
    IPAddress IPudp (192, 168, 10, 68);
    IPAddress IPlocal (192, 168, 10, 201);
    IPAddress IPdns (192, 168, 10, 1);
    IPAddress IPgateway (192, 168, 10, 1);
    IPAddress IPsubnetmask (255, 255, 255, 0);
    
    //*******DeviceID-config************************
    char UnitID[] = "id_1";
    //******************************************
    unsigned int receiveUdpPort = 5006;
    unsigned int sendUdpPort = 5005;
    
    char ssid[] = ("XXX");
    char passphrase[] = ("XXX");
    char charTemp[10];
    char charHum[10];
    int sendingStat;
    
    
    WiFiUDP udp;
    
    
    void setup() { 
      Serial.begin(115200);
      delay(1000);
      Serial.println("\n\nSerial connection started");
      
    
      WiFi.mode (WIFI_STA);
      //WiFi.config (IPlocal, IPdns, IPgateway, IPsubnetmask);
      WiFi.begin(ssid, passphrase);
      while (WiFi.status() != WL_CONNECTED) 
      {
        delay(500);
        Serial.print(".");
        Serial.print(WiFi.status());
      }
      WiFi.printDiag(Serial);
      Serial.print(WiFi.status());
    
      pinMode(12, OUTPUT);
      Serial.printf("Now listening at IP %s, UDP port %d\n\n", WiFi.localIP().toString().c_str(), receiveUdpPort);
      delay(5000);  
    
    }
    
    
    void loop() {
    
      digitalWrite(12, HIGH);
      delay(3500);
      float hum = dht.readHumidity();
      float temp = dht.readTemperature();
      digitalWrite(12, LOW);
      dtostrf(temp,5,2,charTemp); 
      dtostrf(hum,5,2,charHum);
      delay(1000);
      if (isnan(hum) || isnan(temp)) {
        Serial.println("Sensorfehler!");
        udp.beginPacket(IPudp,sendUdpPort);
        udp.write(UnitID);
        udp.write(" Sensorfehler\n");
        udp.endPacket();
      } 
      else {
      long rssi = WiFi.RSSI(); 
      Serial.println("Sending Sensordata");
      if (!udp.begin(receiveUdpPort)) {
       Serial.println("UDP Socketerror");
      }
      Serial.printf("Now sending UDP on port %d \n", sendUdpPort);
      
      udp.beginPacket(IPudp,sendUdpPort);
      udp.write(UnitID);
      udp.write(" ");
      udp.write(charTemp);
      udp.write(" ");
      udp.write(charHum);
      udp.write(" ");
      udp.write(rssi);
      sendingStat == udp.endPacket();
    
      yield();
      if(sendingStat = 1) {
        Serial.println("UDP Packet successful send");
      }
      else {
        Serial.println("UDP Packet not send");
      }
      Serial.println("Wait 0,5s..");
      delay(500);
      Serial.print("   UDP Destination IP: :");
      Serial.println(IPudp);
      Serial.print("   UDP Port: ");
      Serial.println(sendUdpPort);
      Serial.print("   Device ID: ");
      Serial.println(UnitID);
      Serial.print("   Temperatur: ");
      Serial.println(charTemp);
      Serial.print("   Relative Luftfeuchte: ");
      Serial.println(charHum);
      Serial.print("   Daempfung: ");
      Serial.println(rssi);
      udp.stop();
      WiFi.disconnect();
      WiFi.mode(WIFI_OFF);
      Serial.println("wait 5,5s");
      delay(5500);
      Serial.println("ESP goes to deepsleep 60s");
      ESP.deepSleep(60e6);
      delay(100);
      }
    
    }
    Geändert von d2x (16.11.2018 um 21:55 Uhr)

Ähnliche Themen

  1. Welches Paket für "Atom" installieren?
    Von RoboTrader im Forum Arduino -Plattform
    Antworten: 9
    Letzter Beitrag: 18.11.2017, 13:30
  2. nodeMCU zu nodeMCU: keine Kommunikations-Verbindung mehr nach wenigen Minuten
    Von HaWe im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 0
    Letzter Beitrag: 02.10.2017, 14:01
  3. Deepsleep oder Sleep
    Von hubert_K im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 02.09.2010, 12:32
  4. 1 Befehl für ein Paket von Befehlen?
    Von stani im Forum AVR Hardwarethemen
    Antworten: 12
    Letzter Beitrag: 10.10.2009, 11:42
  5. Keine RP6-CD im paket
    Von WarChild im Forum Robby RP6
    Antworten: 10
    Letzter Beitrag: 17.04.2009, 18:48

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress