Включить выключить светодиод через строку браузера.

JesterKING
Offline
Зарегистрирован: 09.03.2021

Здравствуйте. Нужна помощь в работе с esp8266. Есть стандартный код для светодиода, то есть включить выключить через строку браузера. Такой вопрос: как дописать, что бы при написании 180.250.140.190/1/1 светодиод начинал мигать, когда 180.250.140.190/1/0 просто выключался?

#include <ESP8266WiFi.h>
const char* ssid = "///";
const char* password = "///";
WiFiServer server(80);
void setup() {
 Serial.begin(115200);
 delay(10);
 
 pinMode(5, OUTPUT);
 digitalWrite(5, 1);

 
 Serial.println();
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);
 WiFi.begin(ssid, password);
 

 while (WiFi.status() != WL_CONNECTED) {
 delay(500);
 Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");
 

 server.begin();
 Serial.println("Server started");
 

 Serial.println(WiFi.localIP());
}
 
void loop() {
 

 WiFiClient client = server.available();
 if (!client) {
 return;
 }
 

 Serial.println("new client");
 while (!client.available()) {
 delay(1);
 }
 

 String req = client.readStringUntil('\r');
 Serial.println(req);
 client.flush();

 if (req.indexOf("/1/0") != -1)
 digitalWrite(5, 0);
 else if (req.indexOf("/1/1") != -1)
 digitalWrite(5, 1);

 else if (req.indexOf("/5") != -1) {
 Serial.println("TEST OK");
 String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nTest OK. Uptime: ";

 int Sec = (millis() / 1000UL) % 60;
 int Min = ((millis() / 1000UL) / 60UL) % 60;
 int Hours = ((millis() / 1000UL) / 3600UL) % 24;
 int Day = ((millis() / 1000UL) / 3600UL / 24UL);
 s += Day;
 s += "d ";
 s += Hours;
 s += ":";
 s += Min;
 s += ":";
 s += Sec;
 s += "</html>\n";
 client.print(s);
 client.stop();
 return;
 }
 else

 {
 Serial.println("invalid request");
 String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nInvalid request";
 s += "</html>\n";
 client.print(s);
 client.stop();
 return;
 }
 
 client.flush();
 
 
 

 String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO set OK";
 s += "</html>\n";
 

 client.print(s);
 delay(1);
 Serial.println("Client disonnected");
 
}

 

b707
Offline
Зарегистрирован: 26.05.2017

JesterKING пишет:

Здравствуйте. Нужна помощь

 

припоминая ваши предыдушие темы - вам только в платный раздел

inspiritus
Offline
Зарегистрирован: 17.12.2012

А что у вас означают цифры 180.250.140.190 ?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Индонезийский IP ...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

JesterKING пишет:

Такой вопрос: как дописать, что бы при написании 180.250.140.190/1/1 светодиод начинал мигать, когда 180.250.140.190/1/0 просто выключался?

Такой вопрос: а как Вы пробовали?

JesterKING
Offline
Зарегистрирован: 09.03.2021

180.250.140.190 это строка просто рандомный набор чисел. Я имел ввиду когда мы пишем в строке браузера IP адрес ну и на конце 1/1 или 1/0

JesterKING
Offline
Зарегистрирован: 09.03.2021

Разве это не форум, на котором люди помогают другим разобраться в программирование? Да, я пишу, стараюсь разобраться, спасибо тем кто мне помогает. А от Вас всегда негатив в мою сторону, я уже привык...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

JesterKING пишет:

Разве это не форум, на котором люди помогают другим разобраться в программирование?

Нет.

Цели форума описаны здесь: https://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/pesochnitsa-novichok-prochti

И, вообще-то, за полтора года пребывания на форуме не прочесть этот текст - неуважение к тем, от кого Вы хотите получить помощь.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

JesterKING пишет:

180.250.140.190 это строка просто рандомный набор чисел. Я имел ввиду когда мы пишем в строке браузера IP адрес ну и на конце 1/1 или 1/0

тогда должны отработать два файла в папке 1 от корня сайта или 0.html и 1.html

sadman41
Offline
Зарегистрирован: 19.10.2016

html-то причём тут?

sadman41
Offline
Зарегистрирован: 19.10.2016

JesterKING пишет:

Разве это не форум, на котором люди помогают другим разобраться в программирование?


Где тут про вопрос программирование?
Я вижу только одно: сделайте мне и расскажите, что сделали.
Вот человек пытается разобраться:
https://arduino.ru/forum/programmirovanie/razrabotka-biblioteki

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
html-то причём тут?

RE когда мы пишем в строке браузера IP адрес ну и на конце 1/1 или 1/0

sadman41
Offline
Зарегистрирован: 19.10.2016

ua6em пишет:

sadman41 пишет:
html-то причём тут?

RE когда мы пишем в строке браузера IP адрес ну и на конце 1/1 или 1/0


html тут где упомянут?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

JesterKING пишет:

А от Вас всегда негатив в мою сторону, я уже привык...

Т.е. мой вопрос 

ЕвгенийП пишет:

Такой вопрос: а как Вы пробовали?

негатив?

А что в нём негативного? Почему Ваш вопрос не негатив, а мой - негатив? Поясните, пожалуйста, чтобы мне знать.

olegue
Offline
Зарегистрирован: 23.09.2020

поставь вместо обычного мигающий диод.

b707
Offline
Зарегистрирован: 26.05.2017

JesterKING пишет:

Разве это не форум, на котором люди помогают другим разобраться в программирование? Да, я пишу, стараюсь разобраться, спасибо тем кто мне помогает.

хорошо, помогаю.

То что вы хотите, очень легко делается через "машину состояний" (если не знаете что это - велком в гугль).

Вам нужно создать машину с двумя состояниями -

 а) диод мигает

 б) диод выключен

Теперь по получению запроса на 1/1 - включаете состояние а, по получению 1/0 - б

 

В помошь - Arduino State Machine Tutorial

olegue
Offline
Зарегистрирован: 23.09.2020

попробуй, должно сработать.

 

int interval =500;

void setup() {
  // put your setup code here, to run once:
 timerMillis = millis(); 
}

void loop() {
  if (req.indexOf("/1/0") != -1)  digitalWrite(5, 0);
 
   while (req.indexOf("/1/1") != -1)
   {  
   unsigned long currentMillis = millis();    
  if(millis() - timerMillis > interval) {   
    timerMillis = millis();  
    // если светодиод не горит, то зажигаем, и наоборот
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;    
    digitalWrite(5, ledState);
  }
  }
   
}

 

b707
Offline
Зарегистрирован: 26.05.2017

olegue пишет:

попробуй, должно сработать.

олежек...

уж лучше бы не лез, если не понимаешь

этот код будет работать только если непрерывно посылать браузеру строчку "1/1"

olegue
Offline
Зарегистрирован: 23.09.2020

b707 пишет:

этот код будет работать только если непрерывно посылать браузеру строчку "1/1"

 

ахаха

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

JesterKING пишет:
Есть стандартный код

Каким именно ГОСТ'ом или иным стандартом он стандартизован?

Это любительский говнокод, который изредка "необъяснимо" глючит, но не часто и не "повторябельно" - глюки иногда "появляются из ниоткуда" и "исчезают в никуда". А автор, который эти глюки иногда видит, свято уверен в том, что код у него замечательный, а глюки нет-нет да и появляются потому, что ардуина китайская. 

Могу показать пример "китайскости ардуины" в этом коде. Вам интересно? Если интересно, скажите и, ответьте на вопрос из #13 - покажу. Если же не интересно, то не вижу смысла лишний раз пальцы об клавиши бить.

olegue
Offline
Зарегистрирован: 23.09.2020

ТС, ты где? Тут вторая часть марлезонского балета началась. Опоздаешь на премьеру.

в второй части:

1. Теперь уже весь код будет признан говном

2. Пути решения надвигающейся катастрофы посредством платного раздела.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, Вы, olegue, видимо, знаете в чём глюкавость кода, а кому-то, не такому продвинутому как Вы, разбор ошибки может оказаться полезным.

JesterKING
Offline
Зарегистрирован: 09.03.2021

Спасибо, учту ошибки. Про машину состояний понял, буду разбираться

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

как-то работать оно конечно будет...)))
 

#include <ESP8266WiFi.h>
const char* ssid = "Open";
const char* password = "12345678";

bool blinks = false;
uint32_t oldm;
uint32_t uptime;

WiFiServer server(80);


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

  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);


  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");


  server.begin();
  Serial.println("Server started");


  Serial.println(WiFi.localIP());
  oldm = millis();
}

void loop() {

  if (blinks && millis() - oldm >= 500) {
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    oldm = millis();
  }

  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  Serial.println("new client");
  while (!client.available()) {
    delay(1);
  }

  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();

  if (req.indexOf("/1/0") != -1){
    //digitalWrite(LED_BUILTIN, 0);
    blinks = false;
    digitalWrite(LED_BUILTIN, LOW);
  } else if (req.indexOf("/1/1") != -1)
    // digitalWrite(LED_BUILTIN, 1);
    blinks = true;
  else if (req.indexOf("/5") != -1) {
    Serial.println("TEST OK");
    String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nTest OK. Uptime: ";
    uptime = millis();
    int Sec = (uptime / 1000UL) % 60;
    int Min = ((uptime / 1000UL) / 60UL) % 60;
    int Hours = ((uptime / 1000UL) / 3600UL) % 24;
    int Day = ((uptime / 1000UL) / 3600UL / 24UL);
    s += Day;
    s += "d ";
    s += Hours;
    s += ":";
    s += Min;
    s += ":";
    s += Sec;
    s += "</html>\n";
    client.print(s);
    client.stop();
    return;
  }  else  {
    Serial.println("invalid request");
    String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nInvalid request";
    s += "</html>\n";
    client.print(s);
    client.stop();
    return;
  }

  client.flush();

  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO set OK";
  s += "</html>\n";

  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

} // ************************* E N D ****************************

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

Ну, Вы, olegue, видимо, знаете в чём глюкавость кода, а кому-то, не такому продвинутому как Вы, разбор ошибки может оказаться полезным.

многим!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

многим!

Акромя ТС. Ему это нахрен не нужно, как я понял. Это для него "негатив".

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

многим!

Акромя ТС. Ему это нахрен не нужно, как я понял. Это для него "негатив".

а я бы послушал...тем более что уже вижу что глючит, диод не выключает к примеру

olegue
Offline
Зарегистрирован: 23.09.2020

ua6em,

да, отличная работа

то что в этом месте

void loop() {
 

 WiFiClient client = server.available();
 if (!client) {
 return;
 }
 

return останавливает loop я лишь потом заметил. Просто не мог такое предположить.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

olegue пишет:

ua6em,

да, отличная работа

то что в этом месте

void loop() {
 

 WiFiClient client = server.available();
 if (!client) {
 return;
 }
 

return останавливает loop я лишь потом заметил. Просто не мог такое предположить.

Что, правда?

А которая именно из семи строк останавливает?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

andriano пишет:

А которая именно из семи строк останавливает?

Восьмая  ))))))))

olegue
Offline
Зарегистрирован: 23.09.2020

Ардуиновский юмор? Ржу немогу!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

olegue пишет:

ua6em,

да, отличная работа

Блинк на миллис, это самое первое, что отправляют изучать новичков )))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

BOOM пишет:

andriano пишет:

А которая именно из семи строк останавливает?

Восьмая  ))))))))

Бум, тебя не напрягает, что сервер, вместо того, чтобы вернуть код ошибки 404 кинулся исполнять кривые запросы?

b707
Offline
Зарегистрирован: 26.05.2017

olegue пишет:
Ардуиновский юмор? Ржу немогу!

так а где останавливает то? отвечай

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

olegue пишет:
Ардуиновский юмор? Ржу немогу!

так а где останавливает то? отвечай

Так это и был ардуиновский юмор. Он сейчас ржёт и не может отвечать.

olegue
Offline
Зарегистрирован: 23.09.2020

 

b707 пишет:

 

так а где останавливает то? отвечай

 

так ты создай тему в платнике, там тебе и ответят.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

olegue пишет:

 

b707 пишет:

 

так а где останавливает то? отвечай

 

так ты создай тему в платнике, там тебе и ответят.


А здесь слабо?

olegue
Offline
Зарегистрирован: 23.09.2020

v258 пишет:

А здесь слабо?

эй, моряк, ты слишком долго плавал!  Тема уже решена, ТС еще вчера попрощался.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

И чо? Сливаешься?

b707
Offline
Зарегистрирован: 26.05.2017

olegue пишет:

v258 пишет:

А здесь слабо?

эй, моряк, ты слишком долго плавал!  Тема уже решена, ТС еще вчера попрощался.

олежек, ну вот что ты отсвечиваешь? Ж)

На Радиокоте ты ведь честно признался что много раз пытался писать коды, но потом бросал... а через полгода уже и вспомнить ничего не можешь...

Не расстраивайся, не всем дано

Чего ты тут строишь из себя? :)

b707
Offline
Зарегистрирован: 26.05.2017

v258 пишет:
И чо? Сливаешься?

а то не видишь - сказать-то ему нечего, а признаться стыдно...

olegue
Offline
Зарегистрирован: 23.09.2020

b707 пишет:

На Радиокоте ты ведь честно признался что много раз пытался писать коды

 

b707 пишет:

 сказать-то ему нечего, а признаться стыдно...

 

так это разные люди ?

b707
Offline
Зарегистрирован: 26.05.2017

olegue пишет:

так это разные люди ?

ты тут и olegue на Радиокоте? - а я вот уверен, что одинаковые

olegue
Offline
Зарегистрирован: 23.09.2020

Ты меня так обожаешь, что уже гуглишь мои посты! А мой ты золотой!

b707
Offline
Зарегистрирован: 26.05.2017

olegue пишет:

Ты меня так обожаешь, что уже гуглишь мои посты! А мой ты золотой!

ничего личного. Я всегда проверяю другие посты человека поиском, если его сообщения меня заинтересовали - либо глубиной, либо тупостью :)

Дополнительная инфа часто помогает в общении.

olegue
Offline
Зарегистрирован: 23.09.2020

b707 пишет:

либо тупостью :)

да,твои вопросы наводят на мысль что ты иногда не догоняешь даже примитивы.

 

 

b707
Offline
Зарегистрирован: 26.05.2017

olegue пишет:

да,твои вопросы наводят на мысль что ты иногда не догоняешь даже примитивы.

все мы немножко лошади, как сказал поэт...

Ты бы помог, обьяснил, как там космические корабли бороздят... то бишь как return останавливает loop

olegue
Offline
Зарегистрирован: 23.09.2020

теперь уже нет,  продолжай гуглить меня, перечитывай, думай и вероятно ты поймешь, что я имел под словом "останавливает"

 

 Встретимся в другой теме. И я уверен там обязательно снова будет срач.

 

покеда!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

пора сносить

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Таки слился ))

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ua6em пишет:

Бум, тебя не напрягает, что сервер, вместо того, чтобы вернуть код ошибки 404 кинулся исполнять кривые запросы?

А чего это оно меня напрягать должно?