Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 21 maja 2025, o 12:42


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
    Autor Wiadomość
    PostNapisane: 23 lis 2015, o 21:48 
    Offline
    Nowy

    Dołączył(a): 18 lip 2014
    Posty: 5
    Pomógł: 0

    Witam,
    chciałem zrobić sterowanie przekaźnikami oraz odczyt z kilku czujników przez internet.
    Użyłem do tego Arduino Leonardo oraz rutera Huawei B683.

    Problem polega na tym, że serwer jest niestabilny, czasem się wyłączony, czasem przytnie itp.

    Z czego może wynikać problem? Użyłem składni przestarzałego HTML-a?
    Dodam, że WebSerwer z przykładu Arduino działa bez zarzutu.

    Mam jeszcze problem ze sterowaniem z przekaźnikiem.
    Mianowicie gdy przerzucam z Off na On wszystko jest ok. Problem pojawia się, gdy przełączam z On na Off. Pierwszy raz gdy klikam On na Off nic się nie dzieje, dopiero za drugim razie przeskakuje na Off. Gdzie może być przyczyna?


    mój kod :
    Kod:
    #include <SPI.h>
    #include <Ethernet.h>

    void Processcheckbox(EthernetClient cl);

    String HTTP_req;          // stores the HTTP request
    volatile boolean LED_status = 0;   // state of LED, off by default
    volatile boolean LED_status2 = 0;


    byte mac[] = {
      0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
    };
    IPAddress ip(192, 168, 1, 110);

    // Initialize the Ethernet server library
    // with the IP address and port you want to use
    // (port 80 is default for HTTP):
    EthernetServer server(80);

    void setup() {
      // Open serial communications and wait for port to open:
      //pinMode(2,OUTPUT);
      //pinMode(3,OUTPUT);
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for Leonardo only
      }


      // start the Ethernet connection and the server:
      Ethernet.begin(mac, ip);
      server.begin();
      Serial.print("server is at ");
      Serial.println(Ethernet.localIP());
      pinMode(2, OUTPUT);
      pinMode(3, OUTPUT);
    }


    void loop() {
      // listen for incoming clients
      EthernetClient client = server.available();
      if (client) {
        Serial.println("new client");
        // an http request ends with a blank line
        boolean currentLineIsBlank = true;
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
            HTTP_req += c;
            Serial.write(c);
            // if you've gotten to the end of the line (received a newline
            // character) and the line is blank, the http request has ended,
            // so you can send a reply
            if (c == '\n' && currentLineIsBlank) {
              // send a standard http response header
              client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println("Connection: close");  // the connection will be closed after completion of the response
              client.println("Refresh: 5");  // refresh the page automatically every 5 sec
              client.println();
              client.println("<!DOCTYPE HTML>");
              client.println("<html>");
              client.println("<title>");
              client.println("Moj projekt");
              client.println("</title>");
              client.println("<head><h1>");
              client.println("Czujniki");
              client.println("</h1></head>");
              client.println("
    ");
              // output the value of each analog input pin
              for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
                int sensorReading = analogRead(analogChannel);
                client.print("analog input ");
                client.print(analogChannel);
                client.print(" is ");
                client.print(sensorReading);
                client.println("
    ");
              }
             
             
              client.println("<h1>");
              client.println("Przekazniki");
              client.println("</h1>");
              client.println("<p>Przekaznik nr.1</p>");
                        client.println("<form method=\"get\">");
                        ProcessCheckbox(client);
                        client.println("</form>");
                       
              client.println("<p>Przekaznik nr.2</p>");
                        client.println("<form method=\"get\">");
                        ProcessCheckbox2(client);
                        client.println("</form>");
             
              client.println("</html>");
              Serial.print(HTTP_req);
                        HTTP_req = "";
              break;
            }
           
            if (c == '\n') {
              // you're starting a new line
              currentLineIsBlank = true;
            }
            else if (c != '\r') {
              // you've gotten a character on the current line
              currentLineIsBlank = false;
            }
          }
        }
        // give the web browser time to receive the data
        delay(1);
        // close the connection:
        client.stop();
        Serial.println("client disconnected");
      }
    }


    void ProcessCheckbox(EthernetClient cl)
    {
        if (HTTP_req.indexOf("LED2=2") > -1) {  // see if checkbox was clicked
            // the checkbox was clicked, toggle the LED
            //if (LED_status) {
                LED_status = 1;
            }
            else {
                LED_status = 0;
            }
        //}
       
        if (LED_status) {    // switch LED on
            digitalWrite(2, HIGH);
            // checkbox is checked
            cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
            onclick=\"submit();\" checked>On");
        }
        else {              // switch LED off
            digitalWrite(2, LOW);
            // checkbox is unchecked
            cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
            onclick=\"submit();\">Off");
        }
    }

    void ProcessCheckbox2(EthernetClient cl)
    {
        if (HTTP_req.indexOf("LED2=3") > -1) {  // see if checkbox was clicked
            // the checkbox was clicked, toggle the LED
            //if (LED_status) {
                LED_status2 = 1;
            }
            else {
                LED_status2 = 0;
            }
        //}
       
        if (LED_status2) {    // switch LED on
            digitalWrite(3, HIGH);
            // checkbox is checked
            cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"3\" \
            onclick=\"submit();\" checked>On");
        }
        else {              // switch LED off
            digitalWrite(3, LOW);
            // checkbox is unchecked
            cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"3\" \
            onclick=\"submit();\">Off");
        }
    }


    Z góry dziękuje za pomoc



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 lis 2015, o 00:27 
    Offline
    Moderator zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 3228
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

    topic7402.html

    _________________
    http://www.jaglarz.info



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO