#include #include #include "relais.h" WiFiUDP relaisUDP; #define RELAIS_PIN 5 #define RELAIS_UDP_PORT 2800 void relais_setup(void) { Serial.println("Relais: Setting up pin."); digitalWrite(RELAIS_PIN, LOW); pinMode(RELAIS_PIN, OUTPUT); Serial.print("Relais: Starting UDP server on port "); Serial.println(RELAIS_UDP_PORT); if(!relaisUDP.begin(RELAIS_UDP_PORT)) { Serial.println("Relais: UDP server start FAILED!"); } Serial.println("Relais setup done"); } void relais_loop(void) { unsigned char databyte; unsigned char answer; int packetSize = relaisUDP.parsePacket(); if(packetSize) { Serial.print("Relais: Received packet of size "); Serial.println(packetSize); Serial.print("From "); IPAddress remoteIp = relaisUDP.remoteIP(); Serial.print(remoteIp); Serial.print(", port "); Serial.println(relaisUDP.remotePort()); if(packetSize == 1) { int len = relaisUDP.read(&databyte,1); switch(databyte) { case 0: // switch relais off Serial.println("Relais: switch off."); digitalWrite(RELAIS_PIN, LOW); answer = 0; break; case 1: // switch relais on Serial.println("Relais: switch on."); digitalWrite(RELAIS_PIN, HIGH); answer = 1; break; default: // unknown code -> error Serial.println("Relais: wrong code."); answer = 0xFF; break; } } else { // wrong length Serial.println("Relais: wrong packet length."); answer = 0xFF; } // send a reply, to the IP address and port that sent us the packet we received relaisUDP.beginPacket(relaisUDP.remoteIP(), relaisUDP.remotePort()); relaisUDP.write(answer); relaisUDP.endPacket(); } }