Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Arduino + pomiar temperatury z rejestracją + rejestrator czasu pracy + załączan

jaceklesniowski 15 Jul 2014 15:20 10299 8
SterControl
  • Ponieważ ostatnio zostałem posądzony że nic nie wnoszę do forum tylko a, tylko korzystam więc „pochwale się moim projektem” chociaż pochwalić to w tym przypadku za duże słowo bo nie ma czym, gdyż projekt jest w wersji roboczej, ale DZIAŁA był testowany w firmie przez 3 miesiące i wszystko jest ok więc prezentuje.

    To jest moja pierwsza przygoda z mikrokontrolerami więc proszę o konstruktywne uwagi, gdyż jestem programistą php a nie elektronikiem.

    Zaczęło się od tego że chciałem rejestrować temperaturę na piecu i suszarni za pomocą Funduino Mega 2560 (klon arduino) + ethernet shieled W5100 i czujników Dallas DS18B20 , pomiary zapisywać do bazy mysql a później obserwować zmiany na wykresie i to się udało.

    plik screen_ekranu_wykres_temeratury.jpg
    Arduino + pomiar temperatury z rejestracją + rejestrator czasu pracy + załączan

    Zachęcony dodałem rejestrator czasu pracy za pomocą kart rfid jako czytnik użyłem moduł RFID MF RC522. Oczywiście każde wejście i wyjście pracownika jest zapisywane w bazie mysql. Na podstawie wpisów tworzę sobie zestawienie czasu pracy.

    Pracownik wybiera opcję za pomocą 2 przycisków wyjście lub wyjście i przykłada karę.


    Jeszcze postanowiłem dołożyć do tego sterowanie światłem na parkingu i w dwóch pomieszczeniach w firmie, poza tym jak zapomniałem pilota do bramy to dołożyłem jeszcze sterowanie braną :) z przeglądarki internetowej.

    Arduino + pomiar temperatury z rejestracją + rejestrator czasu pracy + załączan
    plik screen_ekranu_sterowanie_swiatlem.jpg

    Koszty:
    Wszytko kupiłem na allegro.

    Funduino Mega 2560 (klon arduino) - 80 zł
    ethernet shieled W5100 - 35 zł
    Dallas DS18B20 - 5 zł sztuka
    RFID MF RC522 - 30 zł
    Wyświetlacz LCD 16x2 HD44780 – 12 zł
    do tego dwa przyciski i kabelki
    koszty naprawę niewielkie w stosunku do tego co uzyskałem.
    Poniżej przeze tuje program i tu proszę o wyrozumiałość. To jest mój pierwszy projekt i pierwszy program w C. Wiem że składnia jest nie ładna itd. itp. ale dzięki krytyce na pewno się dużo nauczę.
    Jeśli będzie ktoś chciał coś podobnego zrobić zawsze jakiś fragment kodu może się przydać.

    Code:


    #include <SPI.h>
    #include <Ethernet.h>
    #include <Wire.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <LiquidCrystal.h>
    #include <MFRC522.h>
    LiquidCrystal lcd(22, 24, 32, 30, 28, 26);
    // 22 - RS
    // 23 - E


    #define ONE_WIRE_BUS 9
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);


    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    byte ip[] = { 192, 168, 1, 30 };
    byte gateway[] = { 192, 168, 1, 1 };
    byte subnet[] = { 255, 255, 255, 0 };
    char server_d[] = "www.xxxxxxxx.com";   

    EthernetServer server(80); //arduino server port
    EthernetClient client;

    String readString;
    #define PIEZO_PIN 6
    #define SS_PIN 53
    #define RST_PIN 48
    MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
    String id_karty;;
    String id_karty_spr;
    String k;
    int zmie = 3;
    int zmie_spr =3 ;
    int errorlog =0 ;

    //pierwsze opoznienie
    unsigned long temo_time = millis() + 300000;
    int resetPin = 7;


    void setup(){
      lcd.begin(16, 2);
      lcd.setCursor(0,1);
      lcd.print("wybierz opcje");
      pinMode(5, OUTPUT);
      Ethernet.begin(mac, ip, gateway, subnet);
      server.begin();
      Serial.begin(9600);
       mfrc522.PCD_Init();   
      sensors.begin();
      pinMode(36, OUTPUT);
      pinMode(38, OUTPUT);
      pinMode(40, OUTPUT);
      pinMode(42, OUTPUT);
      pinMode(44, OUTPUT);
      pinMode(46, OUTPUT);
     
      id_karty_spr="1" ;
      id_karty="0" ; 

     
    pinMode(3, INPUT);     //pracuje jako wejscie
    //digitalWrite(3, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)

    pinMode(4, INPUT);     //pracuje jako wejscie
    //digitalWrite(4, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)

    digitalWrite(36, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(38, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(40, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(42, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(44, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(46, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)

    digitalWrite(resetPin, HIGH);
    pinMode(resetPin, OUTPUT);     
     
    }

    void loop()
    {
       unsigned long time = millis();
        if (time >= temo_time) {
         Serial.println("Zapis temeratury"); 
        mysql_temp();   
        temo_time = time + 300000 ; // co 5 min dodawaj temp
      }

      int przycisk = digitalRead(3); //odczytujemy stan przycisku
        if(przycisk == HIGH) {           //jesli przycisk nie jest wcisniety
          lcd.setCursor(0,1);
          lcd.print("rozpoczecie  ");
          zmie = 1; //odczytujemy stan przycisku
      };
     
      int przycisk2 = digitalRead(4); //odczytujemy stan przycisku
        if(przycisk2 == HIGH) {           //jesli przycisk nie jest wcisniety
          lcd.setCursor(0,1);
          lcd.print("zakonczenie  ");
         zmie = 2;
      };

        //lcd.clear();
        sensors.requestTemperatures();
        lcd.setCursor(0,0);
        lcd.print(sensors.getTempCByIndex(0));;
        lcd.write(0xDF);
        lcd.write('C');
        lcd.write('  ');
        lcd.print(sensors.getTempCByIndex(1));;
        lcd.write(0xDF);
        lcd.write('C');
         
      id_karty = ""; 
      if (mfrc522.PICC_IsNewCardPresent()){   
            mfrc522.PICC_ReadCardSerial();   
            for (byte i = 0; i < mfrc522.uid.size; i++) { id_karty += mfrc522.uid.uidByte[i], HEX;}
       if(zmie != 3) {       
                Serial.println(id_karty);
                if(id_karty == "2295761116")    {gong();mysql_kar();  k="Kowalski     .";  zmie_spr=zmie;  zmie=3;  } else{};
                if(id_karty == "14822211926")   {gong();mysql_kar();  k="Nowak        .";  zmie_spr=zmie;  zmie=3;  } else{}; 
                 // tutaj kolejni pracownicy
                 lcd.setCursor(0,1);
                 lcd.print(k);
                 delay(1000);
                 lcd.setCursor(0,1);
                   if(zmie == 3 ) {lcd.print("wybierz opcje  "); }
       }   
    }

    // ---- uruchamianie serwera

      EthernetClient client = server.available();
      if (client) {
        boolean currentLineIsBlank = true;
          while (client.connected()) {
               if (client.available()) {
                char c = client.read();
              if (readString.length() < 100) {readString += c; }
              if (c == '\n' && currentLineIsBlank) {
              client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println("Connnection: close");
              client.println();
              client.println("<!DOCTYPE HTML>");
              client.println("<html>");

     client.println("<body bgcolor='#c0c0c0'>");
    client.println("<style type='text/css'>"); 
    client.println("#tabela td { border: 0 px solid black; padding: 5px; border-spacing: 5px; font-weight: bold; text-align: center}"); 
    client.println("#ON {background-color: green; vertical-align: top; font-weight: bold; width: 100px;}"); 
    client.println("#OFF {background-color: red ; vertical-align: top; font-weight: bold; width: 100px;}"); 
    client.println("#n{background-color: #808080;}"); 
    client.println("a {text-decoration: none;}"); 
    client.println("a:link,a:active,a:visited { color : black; }"); 
    client.println("</style>"); 
         
             
               client.println("<br />");   
               client.print(" temperatura");   
               client.println("<br />");   
               sensors.requestTemperatures();
               client.println("Czujnik-1: ");
               client.println(sensors.getTempCByIndex(0));
               client.println("<br />"); 
               client.println("Czujnik-2: ");
               client.println(sensors.getTempCByIndex(1));
               client.println("<br />"); 
               client.println("<hr />");
               client.println("<br />");
             
     client.println("<table id='tabela' style='border-spacing: 10px'> "); 
     client.println("<tr id='n'><td colspan='3'>DOM</td></tr>"); 
     
     client.println("<tr> <td  >Swiatlo Parking </td><td id='ON'>"); 
     client.println("<a href=\"/?LED44_ON\"\">ON</a>");
     client.println("</td><td id='OFF' >"); 
     client.println("<a href=\"/?LED44_OFF\"\">OFF</a>");
     client.println("</td></tr>");         

     client.println("<tr> <td  >Swiatlo front </td><td id='ON'>"); 
     client.println("<a href=\"/?LED46_ON\"\">ON</a>");
     client.println("</td><td id='OFF' >"); 
     client.println("<a href=\"/?LED46_OFF\"\">OFF</a>");
     client.println("</td></tr>");         
             
     client.println("<tr> <td  >Dom brama </td><td id='ON'>"); 
     client.println("<a href=\"/?LED40_ON\"\"><---></a>");
     client.println("</td>"); 
     client.println("</td></tr> </table> <br>");               

       
     client.println("<table id='tabela' style='border-spacing: 10px'> "); 
     client.println("<tr id='n'><td colspan='3'> FIRMA </td></tr>"); 
     
     client.println("<tr> <td  >Swiatlo piec </td><td id='ON'>"); 
     client.println("<a href=\"/?LED38_ON\"\">ON</a>");
     client.println("</td><td id='OFF' >"); 
     client.println("<a href=\"/?LED38_OFF\"\">OFF</a>");
     client.println("</td></tr>");       

           
     client.println("<tr> <td  >Swiatlo malarnia </td><td id='ON'>"); 
     client.println("<a href=\"/?LED36_ON\"\">ON</a>");
     client.println("</td><td id='OFF' >"); 
     client.println("<a href=\"/?LED36_OFF\"\">OFF</a>");
     client.println("</td></tr> </table> <br>");     
       
             
              /*--------( End Sensor Read )--------------------------------*/
              client.println("</html>");
              break; }
               if (c == '\n') { currentLineIsBlank = true;}  else if (c != '\r') { currentLineIsBlank = false;} }
                 } // koniec połączenia internetowego
                 
                 
                 delay(1);
                 client.stop();
                 
          int op360 = readString.indexOf("36_OFF");
          int op361 = readString.indexOf("36_ON");
          int op381 = readString.indexOf("38_OFF");
          int op380 = readString.indexOf("38_ON");
          int op400 = readString.indexOf("40_OFF");
          int op401 = readString.indexOf("40_ON");
         
          int op440 = readString.indexOf("44_OFF");
          int op441 = readString.indexOf("44_ON");
         
          int op460 = readString.indexOf("46_OFF");
          int op461 = readString.indexOf("46_ON");
         
           
              if(op361 > 0) { digitalWrite(36, LOW); } else{};
              if(op360 > 0) { digitalWrite(36, HIGH); } else{};
              if(op380 > 0) { digitalWrite(38, LOW); } else{};
              if(op381 > 0) { digitalWrite(38, HIGH); } else{};
              if(op400 > 0) { digitalWrite(40, HIGH); } else{};
              if(op401 > 0) { digitalWrite(40, LOW); delay(500);  digitalWrite(40, HIGH); } else{};         
     
              if(op441 > 0) { digitalWrite(44, LOW); } else{};
              if(op440 > 0) { digitalWrite(44, HIGH); } else{};
             
              if(op461 > 0) { digitalWrite(46, LOW); } else{};
              if(op460 > 0) { digitalWrite(46, HIGH); } else{};
     
              readString="";
      }
     
     
    if(errorlog == 1) {
      lcd.setCursor(0,1);
      lcd.print("BRAK INTERNETU ");
      errorlog =0;
    Serial.println("Reset");   
    digitalWrite(resetPin, LOW);
    } else{};
     
     
    } // END Loop
     
       
     
      void gong() {
            tone(PIEZO_PIN, 600); // Dzwięk alarmu
           delay(100);
          noTone(PIEZO_PIN); // Wyłączenie dźwięku alarmu
      }
     
     
     void mysql_kar() {   
      Ethernet.begin(mac, ip);
      delay(1000);
      Serial.println("connecting...");
      if (client.connect(server_d, 80)) {
        Serial.println("connected");
        client.print( "GET /karty.php?nr=");
        client.print(id_karty);
       client.print("&zda=");
       client.print(zmie);
       client.println( " HTTP/1.1");
       client.println( "Host: www.xxxxxxx.com" );//ur web server
       client.println( "Content-Type: application/x-www-form-urlencoded" );
       client.println( "Connection: close" );
        client.println();
      }
      else {
        Serial.println("nie polonczono");
        errorlog=1;
      }
    client.stop();
      }


     void mysql_temp() {    // wysyładnie temperatura 
      float piec =  sensors.getTempCByIndex(0);     
       Ethernet.begin(mac, ip);
      delay(1000);
      Serial.println("connecting...");
      if (client.connect(server_d, 80)) {
        Serial.println("connected");
        client.print("GET /temp_rejstracja.php?piec=");
        client.print(piec);
        client.print("&suszarnia=2");
        client.print("&zew=3");
       client.println( " HTTP/1.1");
       client.println( "Host: www.xxxxx.com" );//ur web server
       client.println( "Content-Type: application/x-www-form-urlencoded" );
       client.println( "Connection: close" );
       client.println();
      }
      else {
        Serial.println("nie polonczono");
        errorlog=1;
      }
    client.stop();
     }
     




    czekam na waszą opinie :)

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    jaceklesniowski
    Level 10  
    Offline 
    Has specialization in: programowanie
    jaceklesniowski wrote 16 posts with rating 7, helped 0 times. Live in city Mielec. Been with us since 2007 year.
  • SterControl
  • SterControl
  • #3
    jaceklesniowski
    Level 10  
    hasło dodałem później, aczkolwiek i tak zostawiłem nie aktywne bo mnie denerwowało za każdym razem jego podawanie. Żeby się podłączyć wewnątrz sieci IP musisz znać hasło do WiFi zewnątrz musisz znać moje IP plus nr portu na który jest przekierowany:) tym trochę utrudniłem. Jak na razie nikt dowcipów nie robił :)
  • #4
    PixelloxD
    Level 11  
    Mógłbyś wrzuciłbyś jakiś film jak to działa, jestem bardzo ciekawy.
  • #5
    globalinfo
    Level 13  
    Ciekawy projekt.
    MySQL jest na zewnętrznym serwerze?.
  • #6
    jaceklesniowski
    Level 10  
    TAK, na zewnętrznym, ale to nie ma znaczenia, bo można na wewnętrznym i zewnętrznym.
  • #7
    sebba1
    Level 12  
    Wykorzystałem część kodu do sterowania przekaźnikami, ale chciałbym dodać przycisk, który np. będzie wyłączał 6 pierwszych kanałów. Czy jest taka możliwość, aby przekaźniki zadziałały w taki sposób: 1off -1s przerwy -2off-1s przerwy-3off-1s przerwy...

    Code:
     
    

    #include <SPI.h>
    #include <Ethernet.h>
    #include <Wire.h>
    #include <LiquidCrystal.h>




    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    byte ip[] = { 192, 168, 1, 11 };
    byte gateway[] = { 192, 168, 1, 1 };
    byte subnet[] = { 255, 255, 255, 0 };
    char server_d[] = "www.xxxxxxxx.com";   

    EthernetServer server(80); //arduino server port
    EthernetClient client;

    String readString;
    #define PIEZO_PIN 6
    #define SS_PIN 53
    #define RST_PIN 48
    String id_karty;;
    String id_karty_spr;
    String k;
    int zmie = 3;
    int zmie_spr =3 ;
    int errorlog =0 ;

    //pierwsze opoznienie
    unsigned long temo_time = millis() + 300000;
    int resetPin = 7;


    void setup(){
     
      Ethernet.begin(mac, ip, gateway, subnet);
      server.begin();
      Serial.begin(9600);
      pinMode(34, OUTPUT); //gg
      pinMode(36, OUTPUT);
      pinMode(38, OUTPUT);
      pinMode(40, OUTPUT);
      pinMode(42, OUTPUT);
      pinMode(44, OUTPUT);
      pinMode(46, OUTPUT);
      pinMode(48, OUTPUT);
      pinMode(53, OUTPUT);
      pinMode(51, OUTPUT);
      pinMode(49, OUTPUT);
      pinMode(47, OUTPUT);
      pinMode(45, OUTPUT);
      pinMode(43, OUTPUT);
      pinMode(41, OUTPUT);
      pinMode(39, OUTPUT);
      pinMode(37, OUTPUT);
      pinMode(35, OUTPUT);
      pinMode(33, OUTPUT);
     
      id_karty_spr="1" ;
      id_karty="0" ;

     
    pinMode(3, INPUT);     //pracuje jako wejscie
    //digitalWrite(3, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)

    pinMode(4, INPUT);     //pracuje jako wejscie
    //digitalWrite(4, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)

    digitalWrite(34, HIGH); //
    digitalWrite(36, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(38, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(40, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(42, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(44, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(46, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone)
    digitalWrite(48, HIGH); //
    digitalWrite(49, HIGH); //
    digitalWrite(53, HIGH); //
    digitalWrite(47, HIGH); //
    digitalWrite(45, HIGH); //
    digitalWrite(43, HIGH); //
    digitalWrite(41, HIGH); //
    digitalWrite(39, HIGH); //
    digitalWrite(37, HIGH); //
    digitalWrite(35, HIGH); //
    digitalWrite(33, HIGH);

    digitalWrite(resetPin, LOW);
    pinMode(resetPin, OUTPUT);     

    }

    void loop()
    {
       unsigned long time = millis();
        if (time >= temo_time) {
         
        }
         
             

    // ---- uruchamianie serwera

      EthernetClient client = server.available();
      if (client) {
        boolean currentLineIsBlank = true;
          while (client.connected()) {
               if (client.available()) {
                char c = client.read();
              if (readString.length() < 100) {readString += c; }
              if (c == '\n' && currentLineIsBlank) {
              client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println("Connnection: close");
              client.println();
              client.println("<!DOCTYPE HTML>");
              client.println("<html>");

    client.println("<body bgcolor='#C0CED3'>");  //KOLOR TŁA
    client.println("<style type='text/css'>");
    client.println("#tabela td { border: 0 px solid black; padding: 10px; border-spacing: 10px; font-weight: bold; text-align: center}"); //wysokosc
    client.println("#ON {background-color: green; vertical-align: top; font-weight: bold; width: 150px;}");
    client.println("#OFF {background-color: red ; vertical-align: top; font-weight: bold; width: 150px;}"); //szerokość zielony
    client.println("#n{background-color: #ff530d;}"); //dom i firma tło
    client.println("a {text-decoration: none;}");
    client.println("a:link,a:active,a:visited { color : black; }");
    client.println("</style>");
         
             
               client.println("<br />");   
               client.print("<span style=font-size:3em>Andruino");
               client.println("<br />");   


             
     client.println("<table id='tabela' style='border-spacing: 10px'> ");
     client.println("<tr id='n'><td colspan='3'>DOM</td></tr>");
     //client.println("<tr id='n'><td colspan='3'>DOM</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking16 </td><td id='ON'>");
     client.println("<a href=\"/?LED42_ON\"\"><button style='font-size:150%;  color:black; '>ON</button></a>");

     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED42_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");


     client.println("<tr> <td  >Swiatlo Parking2 </td><td id='ON'>");
     client.println("<a href=\"/?LED44_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED44_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking3 </td><td id='ON'>");
     client.println("<a href=\"/?LED46_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED46_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking4 </td><td id='ON'>");
     client.println("<a href=\"/?LED48_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED48_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking5 </td><td id='ON'>");
     client.println("<a href=\"/?LED53_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED53_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking6 </td><td id='ON'>");
     client.println("<a href=\"/?LED49_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED49_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking7 </td><td id='ON'>");
     client.println("<a href=\"/?LED47_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED47_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking8 </td><td id='ON'>");
     client.println("<a href=\"/?LED45_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED45_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking9 </td><td id='ON'>");
     client.println("<a href=\"/?LED43_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED43_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking10 </td><td id='ON'>");
     client.println("<a href=\"/?LED41_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED41_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking11 </td><td id='ON'>");
     client.println("<a href=\"/?LED39_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED39_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking12 </td><td id='ON'>");
     client.println("<a href=\"/?LED37_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED37_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");

     client.println("<tr> <td  >Swiatlo Parking13 </td><td id='ON'>");
     client.println("<a href=\"/?LED35_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED35_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");;
     client.println("</td></tr>");

      client.println("<tr> <td  >Swiatlo Parking14 </td><td id='ON'>");
     client.println("<a href=\"/?LED33_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED33_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");
             
     client.println("<tr> <td  >Dom brama15 </td><td id='ON'>");
     client.println("<a href=\"/?LED40_ON\"><button style='font-size:150%;  color:black; '><---></button></a>");
     client.println("</td>");
     client.println("</td></tr> </table> <br>");               

       
     client.println("<table id='tabela' style='border-spacing: 10px'> ");
     client.println("<tr id='n'><td colspan='3'> FIRMA </td></tr>");
     
     client.println("<tr> <td  >Swiatlo piec </td><td id='ON'>");
     client.println("<a href=\"/?LED38_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED38_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr>");       

     client.println("<tr> <td  >Swiatlo malarnia </td><td id='ON'>");
     client.println("<a href=\"/?LED36_ON\"><button style='font-size:150%;  color:black; '>ON</button></a>");
     client.println("</td><td id='OFF' >");
     client.println("<a href=\"/?LED36_OFF\"><button style='font-size:150%;  color:black; '>OFF</button></a>");
     client.println("</td></tr> </table> <br>");
           
     

                       
       
             
              /*--------( End Sensor Read )--------------------------------*/
              client.println("</html>");
              break; }
               if (c == '\n') { currentLineIsBlank = true;}  else if (c != '\r') { currentLineIsBlank = false;} }
                 } // koniec połączenia internetowego
                 
                 
                 delay(1);
                 client.stop();

          int op340 = readString.indexOf("34_OFF");   
          int op341 = readString.indexOf("34_ON");     
          int op360 = readString.indexOf("36_OFF");
          int op361 = readString.indexOf("36_ON");
          int op381 = readString.indexOf("38_OFF");
          int op380 = readString.indexOf("38_ON");
          int op400 = readString.indexOf("40_OFF");
          int op401 = readString.indexOf("40_ON");
          int op420 = readString.indexOf("42_OFF");
          int op421 = readString.indexOf("42_ON");
          int op440 = readString.indexOf("44_OFF");
          int op441 = readString.indexOf("44_ON");
         
          int op460 = readString.indexOf("46_OFF");
          int op461 = readString.indexOf("46_ON");
          int op480 = readString.indexOf("48_OFF");
          int op481 = readString.indexOf("48_ON");
          int op530 = readString.indexOf("53_OFF");
          int op531 = readString.indexOf("53_ON");
          int op490 = readString.indexOf("49_OFF");
          int op491 = readString.indexOf("49_ON");
          int op470 = readString.indexOf("47_OFF");
          int op471 = readString.indexOf("47_ON");
          int op450 = readString.indexOf("45_OFF");
          int op451 = readString.indexOf("45_ON");
          int op430 = readString.indexOf("43_OFF");
          int op431 = readString.indexOf("43_ON");
          int op410 = readString.indexOf("41_OFF");
          int op411 = readString.indexOf("41_ON");
          int op390 = readString.indexOf("39_OFF");
          int op391 = readString.indexOf("39_ON");
          int op370 = readString.indexOf("37_OFF");
          int op371 = readString.indexOf("37_ON");
          int op350 = readString.indexOf("35_OFF");
          int op351 = readString.indexOf("35_ON");
          int op330 = readString.indexOf("33_OFF");
          int op331 = readString.indexOf("33_ON");

              if(op341 > 0) { digitalWrite(34, LOW); } else{};
              if(op340 > 0) { digitalWrite(34, HIGH); } else{};
         
              if(op361 > 0) { digitalWrite(36, LOW); } else{};
              if(op360 > 0) { digitalWrite(36, HIGH); } else{};
              if(op380 > 0) { digitalWrite(38, LOW); } else{};
              if(op381 > 0) { digitalWrite(38, HIGH); } else{};
              if(op400 > 0) { digitalWrite(40, HIGH); } else{};
              if(op401 > 0) { digitalWrite(40, LOW); delay(500);  digitalWrite(40, HIGH); } else{};    //chwilówka     
              if(op421 > 0) { digitalWrite(42, LOW); } else{};
              if(op420 > 0) { digitalWrite(42, HIGH); } else{};
              if(op441 > 0) { digitalWrite(44, LOW); } else{};
              if(op440 > 0) { digitalWrite(44, HIGH); } else{};
             
              if(op461 > 0) { digitalWrite(46, LOW); } else{};
              if(op460 > 0) { digitalWrite(46, HIGH); } else{};

              if(op481 > 0) { digitalWrite(48, LOW); } else{};
              if(op480 > 0) { digitalWrite(48, HIGH); } else{};
              if(op531 > 0) { digitalWrite(53, LOW); } else{};
              if(op530 > 0) { digitalWrite(53, HIGH); } else{};
              if(op491 > 0) { digitalWrite(49, LOW); } else{};
              if(op490 > 0) { digitalWrite(49, HIGH); } else{};
              if(op471 > 0) { digitalWrite(47, LOW); } else{};
              if(op470 > 0) { digitalWrite(47, HIGH); } else{};
              if(op451 > 0) { digitalWrite(45, LOW); } else{};
              if(op450 > 0) { digitalWrite(45, HIGH); } else{};
              if(op431 > 0) { digitalWrite(43, LOW); } else{};
              if(op430 > 0) { digitalWrite(43, HIGH); } else{};
              if(op411 > 0) { digitalWrite(41, LOW); } else{};
              if(op410 > 0) { digitalWrite(41, HIGH); } else{};
              if(op391 > 0) { digitalWrite(39, LOW); } else{};
              if(op390 > 0) { digitalWrite(39, HIGH); } else{};
              if(op371 > 0) { digitalWrite(37, LOW); } else{};
              if(op370 > 0) { digitalWrite(37, HIGH); } else{};
              if(op351 > 0) { digitalWrite(35, LOW); } else{};
              if(op350 > 0) { digitalWrite(35, HIGH); } else{};
              if(op331 > 0) { digitalWrite(33, LOW); } else{};
              if(op330 > 0) { digitalWrite(33, HIGH); } else{};
     
              readString="";
      }
     
     
     
    digitalWrite(resetPin, LOW);

     
     
    } // END Loop
  • #8
    xury
    Automation specialist
    Koszty mogłeś jeszcze bardzo zmniejszyć używając ESP32 zamiast Mega. W dodatku zamiast ethernetu można użyć było wifi jeśli masz zasięg w miejscu montażu. ESP32 ma PHY więc jeśli ci by pasowało to mógłbyś użyć również ethernet kablowy. Ale i tak należy się pochwała, bo napisałeś sobie sam, a nie użyłeś multifunkcyjnych gotowców jak np. Tasmota
  • #9
    jaceklesniowski
    Level 10  
    @sebba1 Moja jak najbardziej, najwygodniej jest zrobić osobny przycisk. i normalnie warunki IF ( i tam podajesz po kolei co ma się robić )

    Dodano po 1 [minuty]:

    xury wrote:
    Koszty mogłeś jeszcze bardzo zmniejszyć używając ESP32 zamiast Mega. W dodatku zamiast ethernetu można użyć było wifi jeśli masz zasięg w miejscu montażu. ESP32 ma PHY więc jeśli ci by pasowało to mógłbyś użyć również ethernet kablowy. Ale i tak należy się pochwała, bo napisałeś sobie sam, a nie użyłeś multifunkcyjnych gotowców jak np. Tasmota


    Post powstał w 2014 roku, wtedy było inaczej :)