Probleem met Arduino HTML refresh

Arduino specifieke Software
Berichten: 3
Geregistreerd: 31 Mei 2022, 16:28

Probleem met Arduino HTML refresh

Berichtdoor arduino prutser » 23 Jun 2022, 15:14

Goedemiddag,
Ik loop tegen een klein probleemje aan. Zoals veel mensen ben ik bezig om een automatisch kippenluikje te maken met Arduino, maar dan net even geavanceerder ;). Ik heb onder andere de DS3231 samen met de Dusk2Dawn library om het luikje met zonsopgang en zonsondergang open en dicht te laten doen en ik heb een Android app gemaakt om het luikje handmatig binnen het netwerk te kunnen bedienen.
Nu loop ik tegen het volgende probleem aan. In het HTML gedeelte heb ik de regel client.print("<meta http-equiv=\'refresh\' content=\'5\' URL='192.168.2.179' >"); staan. Hiermee wil ik om de 5 seconden de webpagina laten refreshen, zodat de aangegeven tijd op de webpagina actueel blijft zonder handmatig te hoeven refreshen. Ik heb het volgende probleem. Zodra ik in de browser naar de webpagina 192.168.2.179/h ga, gaat de DC motor draaien. Dit is precies de bedoeling, maar sinds ik de meta tag gebruik draait blijft het motortje steeds draaien voor 10 seconden met 5 seconden pauze er tussen. Ik wil graag dat het motortje eenmalig gaat draaien voor 10 seconden lang, en daarna stopt met draaien. De webpagina wil ik graag elke 5 seconden laten verversen.

Iemand een idee hoe ik dit doel kan bereiken? Ik heb mijn code toegevoegd aan deze post.

Groetjes.

Code: Alles selecteren

#include <SPI.h>
#include <WiFiNINA.h>
#include <Dusk2Dawn.h>
#include <Wire.h>
#include "RTClib.h"

char ssid[] = "xxxxxxxxx";
char pass[] = "xxxxxxxxx";
int status = WL_IDLE_STATUS;
WiFiSSLClient client;
WiFiServer server(80);

int motor1 = 7;     
int motor2 = 8;
int ENB = 5;

int currentsec;
int zonsopkomst;
int zonsopkomstsec;
int zonsondergang;
int zonsondergangsec;
int deurdicht;
int deurdichtstop;
int deuropen;
int deuropenstop;

DateTime now;

RTC_DS3231 rtc;

void setup() {
Serial.begin(115200);

pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);

server.begin();

rtc.begin();

 if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}


void loop() {
  now = rtc.now();
  Dusk2Dawn thuis(xx.xxxx, xx.xxxx, 1);
  zonsopkomst = thuis.sunrise(now.year(), now.month(), now.day(), true);
  zonsopkomstsec = zonsopkomst*60;
  zonsondergang = thuis.sunset(now.year(), now.month(), now.day(), true);
  zonsondergangsec = zonsondergang*60;
  currentsec = (now.hour() * 3600 + now.minute() * 60 + now.second());
  deuropen= zonsopkomstsec-900;
  deuropenstop = zonsopkomstsec-890;
  deurdicht = zonsondergangsec+900;
  deurdichtstop = zonsondergangsec+910;
  char zonsopkomsttijd[6];
  char zonsondergangtijd[6];
  Dusk2Dawn::min2str(zonsopkomsttijd, zonsopkomst);
  Dusk2Dawn::min2str(zonsondergangtijd, zonsondergang);
 
  char tijd[] = "hh:mm";
 
  status = WiFi.begin(ssid, pass);
  IPAddress ip = WiFi.localIP();


   Serial.println();
   Serial.print("Tijd: ");
   Serial.print(now.toString(tijd));
   Serial.println();
   Serial.print("Zonsopkomst: ");
   Serial.print(zonsopkomsttijd);
   Serial.println();
   Serial.print("Zonsondergang: ");
   Serial.print(zonsondergangtijd);
   Serial.println();
   Serial.print("IP Address: ");
   Serial.print(ip);
   Serial.println();
   delay(1000);
   
   if (currentsec >= deurdicht && currentsec <= deurdichtstop) {
    digitalWrite(motor1,HIGH);
    digitalWrite(motor2,LOW);
    analogWrite(ENB,60);
  }

   else if (currentsec >= deuropen && currentsec <= deuropenstop) {
    digitalWrite(motor1,LOW);
    digitalWrite(motor2,HIGH);
    analogWrite(ENB,60);
  }
   else {
    digitalWrite(motor1,LOW);
    digitalWrite(motor2,LOW);
  }

  WiFiClient client = server.available();

    if (client) {                     
    String currentLine = "";             
    while (client.connected()) {         
      if (client.available()) {         
        char c = client.read();                     
        if (c == '\n') {               

          if (currentLine.length() == 0) {
           client.println("<html>");
           client.print("<body>");
           client.print("<center>");
           client.print("<style>");
           client.print("body{font-size: 26px;}");
           client.print("</style>");
           client.print("<meta http-equiv=\'refresh\' content=\'5\' URL='192.168.2.179' >");
           client.println();
           client.print("Tijd: ");
           client.print(tijd);
           client.print("<\p>");
           client.print("Zonsopkomst: ");
           client.print(zonsopkomsttijd);
           client.print("<\p>");
           client.print("Zonsondergang: ");
           client.print(zonsondergangtijd);       
           client.print("</center>");
           client.print("</body>");
           client.print("</html>");
            break;
          }
          else { 
            currentLine = "";
          }
        }
        else if (c != '\r') {   
          currentLine += c;   
        }
       
        if (currentLine.endsWith("GET /H")) {
            digitalWrite(motor1,HIGH);
            digitalWrite(motor2,LOW);
            analogWrite(ENB,60);
            delay(10000);
        }
        if (currentLine.endsWith("GET /L")) {
              digitalWrite(motor1,LOW);
              digitalWrite(motor2,HIGH);
              analogWrite(ENB,60);
              delay(10000);
        }
      }
    }
    client.stop();
  }
}


Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Probleem met Arduino HTML refresh

Berichtdoor shooter » 25 Jun 2022, 18:59

als het motortje draait zet je een vlag aan en die vlag gaat uit als je iets doet.
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: eruzepuj, oriijub en 21 gasten