DUVIDA - Como comparar uma String obtida de um webserver - ESP8266

Pessoal, estou precisando adaptar um codigo que obtive desse video do André Michelon, no caso ele criou um programa que agenda funções atraves de comandos via string, bem interessante

o código esta disponivel no link https://www.youtube.com/watch?v=Jxl1LJAwwjU&t=2477s

no caso eu criei essa função abaixo para comparar uma string inserida em uma caixa de texto e  ligar um pino por x milissegundos através do comando string por exemplo: ADH1000 (que seria: Agendamento Delay High 1000ms) 

//check interval para alimentador - ADHmmmm

String stringdelay;
int d;

s = "ADH" + stringdelay; //deveria concatenar o valor recebido via webserver
d = stringdelay.toInt(); // converte para inteiro
Serial.println("turning on relay for " + stringdelay + " milliseconds");
if (schedule.indexOf(s) != -1 && digitalRead(pin)) {
    event = s;
    Serial.print("event");
    Serial.println(s);
    relay = HIGH; 
    delay(d);
    relay = LOW;
    goto process; //função que verifica o status do pino
}

mas esta faltando alguma coisa para ele reconhecer o valor de stringdelay depois da String "ADH", alguém sabe como fazer?

A função esta no arquivo IeCESPReleV4Lib.h  na linha 567 do arquivo em anexo.

Desde de já agradeço, faz mais de 3 dias que estou tentando.

Exibições: 290

Anexos

Responder esta

Respostas a este tópico

Boa tarde TA,

estou em viagem, e só tenho um tablet, e assim não consigover muito do code que anexou.

Mas algo me chmou a atenção:

Vc criou uma variavel tipo String stringdelay, em seguda concartenou com "AD",

sequindo vc transforma esta string em int, mas stringdelay nao tem valor ainda.

RV

RV de fato tem 3 erros neste exemplo que eu conheço rsrs, 2 deles eu até dou conta de resolver, mas dependo da solução do 3º erro/desafio.

No código em anexo, o programa consegue recuperar a hora da string somada a um texto/comando,  para criar os eventos em horários determinados na caixa de texto, no entanto eu preciso criar uma função parecida para variável que criei String stringdelay aproveitando a estrutura do schedule (agendamento) do código. 

O segundo erro, fácil de resolver é criar uma função simples para utilizar o valor do stringdelay, como intervalo de acionamento.

Tenho uma versão deste código no meu github, mas não tem essa modificação ainda, mas da para  entender o funcionamento do programa https://github.com/tbagro/IeCESPReleV41/blob/master/IeCESPReleV41/

os eventos que podem ser inseridos no agendador na aba de configuração são os seguintes


Options:
- Scheduled at a specific Date/Time
On (High): SHyyyy-mm-dd hh:mm
Off (Low): SLyyyy-mm-dd hh:mm
- Monthly
On (High): MHdd hh:mm
Off (Low): MLdd hh:mm
- Weekly
On (High): WHd hh:mm domingo = 1 sábado = 7
Off (Low): WLd hh:mm
- Daily
On (High): DHhh:mm
Off (Low): DLhh:mm
- Intervaled
On (High): IHhh:mm
Off (Low): ILhh:mm
Millis(high): ADHmmmm


Example Strings:
SH2018-10-12 16:30 - set On on Oct 12 2018 16:30
MH12 16:30 - set On monthly on day 12 16:30
WL6 16:30 - set Off weekly on Fridays 16:30
DH16:30 - set On daily at 16:30
IH00:30 - set Off after being On for 30 minutes
IL00:10 - set On after being Off for 10 minutes

Esse programa ficou muito bom e o mais legal é que ele aceita combo de eventos, ai no caso eu só queria criar mais um:

ADH0500 - fica  ON por 500 millisegundos por exemplo

Mas preciso de um norte, pois não sei fazer esta recuperação de string para este caso

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço