| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | 
							- #include <SPI.h>
 
- #include <Ethernet.h>
 
- #include <RCSwitch.h>
 
- byte mac[] = {0xDE, 0xAD, 0xBE, 0xAA, 0xDE, 0x01};
 
- IPAddress ip(192,168,2,114);
 
- const int serverPort = 2313;
 
- const int senderPin = 6;
 
- const int requestBufferLength = 16;
 
- const int attemptsCount = 3;
 
- EthernetServer server(serverPort);
 
- RCSwitch sender = RCSwitch();
 
- char requestBuffer[requestBufferLength];
 
- void setup() 
 
- {
 
-   Serial.begin(9600);
 
-   
 
-   sender.enableTransmit(senderPin);
 
-   sender.switchOn('b', 3, 2);
 
-   Serial.println("transmission enabled");
 
-   
 
-   Ethernet.begin(mac, ip);
 
-   server.begin();
 
-   
 
-   Serial.print("started ardvindo server at ");
 
-   Serial.print(Ethernet.localIP());
 
-   Serial.print(":");
 
-   Serial.println(serverPort);
 
- }
 
- void errorResponse(EthernetClient& client, const char* cmd, const char* msg) 
 
- {
 
-   Serial.print("error: ");
 
-   Serial.println(msg);
 
-   
 
-   client.print("cmd: ");
 
-   client.println(cmd);
 
-   client.print("error: ");
 
-   client.println(msg);
 
- }
 
- void processCmd(EthernetClient& client, const char* cmd) 
 
- {
 
-   if(cmd[0] == 'e' || cmd[0] == 'd') {
 
-     char family = requestBuffer[2];
 
-     int group = requestBuffer[4] - '0';
 
-     int device = requestBuffer[6] - '0';
 
-     
 
-     if(family < 'a' || family > 'f') {
 
-       errorResponse(client, cmd, "error: family < 'a' || family > 'f'");
 
-     } else if(group < 0) {
 
-       errorResponse(client, cmd, "group < 0");
 
-     } else if(device < 0) {
 
-       errorResponse(client, cmd, "device < 0");
 
-     } else {     
 
-       bool on = (requestBuffer[0] == 'e');
 
-          
 
-       for(int i = 0; i < attemptsCount; i++) {
 
-         if(on) {
 
-           sender.switchOn(family, group, device);
 
-         } else {
 
-           sender.switchOff(family, group, device);
 
-         }
 
-         delay(1);
 
-       }
 
-       
 
-       client.print(family);
 
-       client.print(" ");
 
-       client.print(group);
 
-       client.print(" ");
 
-       client.print(device);
 
-       client.print(" ");
 
-       if(on) {
 
-         client.println("switched on");
 
-         Serial.println("switched on");
 
-       } else {
 
-         client.println("switched off");
 
-         Serial.println("switched off");
 
-       }
 
-       
 
-       //sender.switchOn('b', 3, 2);
 
-       //delay(1500);
 
-       //sender.switchOff('b', 3, 2);
 
-     }
 
-   } else {
 
-     errorResponse(client, cmd, "unknown command");
 
-   }
 
- }
 
- void loop() 
 
- {
 
-   EthernetClient client = server.available();
 
-   if (client) {
 
-     Serial.println("client connected");
 
-     
 
-     client.println("ardvindo");
 
-     
 
-     while(client.connected()) {
 
-       if(client.available()) {
 
-         for(int i=0; i<requestBufferLength && client.available(); i++) {
 
-           char c = client.read();
 
-           if(c == '\n') {
 
-             break;
 
-           }
 
-           requestBuffer[i] = c;
 
-           requestBuffer[i+1] = '\0';
 
-         }
 
-         Serial.print("> ");
 
-         Serial.println(requestBuffer);
 
-         processCmd(client, requestBuffer);
 
-       }
 
-     }
 
-     
 
-     delay(1);
 
-     client.stop();
 
-     
 
-     Serial.println("client disonnected");
 
-   }
 
- }
 
 
  |