#include <ESP8266WiFi.h> #include <WiFiUDP.h> #include "DHT.h" #include <SimpleDHT.h>
int pinDHT11 = D3; SimpleDHT11 dht11;
int msg; int msg1; int ipwr; int powr;
const char* ssid = "Pdaazpl"; //nazwa domowej sieci WiFi. Wstaw swoją nazwę const char* password = "902994f0d84736604"; // hasło domowej sieci WiFi. Wstaw swoje hasło
WiFiUDP Udp;
unsigned int localUdpPort = 3000; // port na jakim będzie pracował sterownik. Ustal swój adres portu char incomingPacket[255]; // wielkość bufora danych char replyPacekt[] = "Wiadomosc odebrana"; // odpowiedź jaka ma być wysłana
char packetBuffer[UDP_TX_PACKET_MAX_SIZE+1];
void setup() { pinMode(D1, OUTPUT); digitalWrite(D1, HIGH); pinMode(D2, OUTPUT); digitalWrite(D2, HIGH);
Serial.begin(115200); Serial.println();
Serial.printf("Lacze z %s ", ssid); WiFi.mode(WIFI_STA); //Moduł WiFi jako stacja robocza (WIFI_AP, WIFI_STA lub WIFI_AP_STA.) WiFi.begin(ssid, password); // nr IP pod jakim będzie pracował sterownik. Ustal swój adres IP i pszostałe parametry sieci WiFi.config(IPAddress(192, 168, 0, 160), IPAddress(192, 168, 0, 1), IPAddress(255, 255, 255, 0)); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" polaczony");
Udp.begin(localUdpPort); Serial.printf("Sterownik Oswietlenia IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort); }
void loop(){ for(int i=0;i<9900000;i++) // czas co jaki ma być dokonany i wysłany odczyt temperatury w ( ms ).
if (i<1) { Serial.println(" "); Serial.println("Odczyt z czujnika"); // Odczyt byte temperatura = 0; byte wilgotnosc = 0; if (dht11.read(pinDHT11, &temperatura, &wilgotnosc, NULL)) { Serial.print("Awaria Czujnika"); Udp.beginPacket(ipwr, powr); Udp.print ( "Awaria czujnika" ); Udp.endPacket(); delay(500); return; } Serial.print("Odczyt OK: "); Serial.print((int)temperatura); Serial.print(" *C, "); Serial.print((int)wilgotnosc); Serial.println(" %");
msg = ((int)temperatura); msg1 = ((int)wilgotnosc);
Udp.beginPacket(ipwr, powr); Udp.print ( msg ); Udp.print ( " şC " ); Udp.print ( msg1 ); Udp.print ( " %" ); Udp.endPacket(); delay(500); } else { int packetSize = Udp.parsePacket(); if (packetSize) { // receive incoming UDP packets Serial.printf("Odpowiedzialem Nadawcy IP %d %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort()); int len = Udp.read(incomingPacket, 255); if (len > 0) { incomingPacket[len] = 0; } Serial.printf("Odebralem: %s\n", incomingPacket);
Udp.read(incomingPacket,UDP_TX_PACKET_MAX_SIZE); // Serial.println("Odebralem:"); //kończymy je jak ciąg znaków znkiem NUL (0) incomingPacket[packetSize]=0; //wyświetlamy zawartość pakietu // Serial.println(incomingPacket); if(incomingPacket[0]=='A'){ digitalWrite(D1, LOW); // Serial.println("LED1 ENABLED"); } else { if(incomingPacket[0]=='B') digitalWrite(D1, HIGH); // Serial.println("LED1 DISABLET"); }
if(incomingPacket[0]=='C'){ digitalWrite(D2, LOW); // Serial.println("LED2 ENABLED"); } else { if(incomingPacket[0]=='D') digitalWrite(D2, HIGH); // Serial.println("LED2 DISABLET"); } ipwr = Udp.remoteIP(); powr = Udp.remotePort(); // wysyła wiadomość na IP i port z jakiego przyszło zapytanie Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); Udp.write(replyPacekt); Udp.endPacket(); } } }
|