esp01s 控制红外 遥控音箱开关 一段时间后不可以用了。-Arduino中文社区 - Powered by Discuz! Archiver

no2yulu 发表于 2021-3-20 07:33

esp01s 控制红外 遥控音箱开关 一段时间后不可以用了。

用的是 爆改车间主任的 代码
esp01s 控制红外 遥控音箱开关2021.3.18号之前一直好好的 19号早上开始就不行了
界面里点击 音响开关 没有反应了。一直出现
{"vibrate":200,"millis":2848391}
{"vibrate":200,"millis":2849828但有几个特殊情况可以使用 比如定时 倒计时 场景模式添加 点击就可以。
下面是图片 在下面是代码




#define BLINKER_WIFI
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRsend.h>
#include <IRutils.h>
#include <EEPROM.h>

#include <Blinker.h>

const uint16_t kIrLed = 3;//esp01的gpio03接口(RX接口)
uint16_t RECV_PIN = 2;      //esp01的gpio2接口
IRsend irsend(kIrLed);// 定义红外发射端接口 接红外发射器的正极
IRrecv irrecv(RECV_PIN);//定义红外接收端口

decode_results results;

char auth[] = "123";    //点灯科技硬件ID
char ssid[] = "456";    //Wi-Fi名
char pswd[] = "789";    //Wi-Fi密码

BlinkerButton Button0("btn-xuexi"); //学习开关数据键名
BlinkerButton Button1("btn-f");   //发射键数据键名


bool xuexi = false;


void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();

    uint32_t BlinkerTime = millis();

    Blinker.print("millis", BlinkerTime);
}

decode_type_t protocol;
uint16_t size;
const uint16_t kFrequency = 38000;
bool success = true;

String modedate;
String bitdate;
String date;


void button0_callback(const String & state)
{
    if(state == "on"){   
      Serial.println("开");   
      xuexi = true;
      Button0.print("on");   
      Blinker.delay(100);
      Blinker.println("开始接收");
    }else if (state == "off"){   
      Serial.println("关");
      xuexi = false;
      Button0.print("off");
      Blinker.delay(100);
      Blinker.println("停止接收");
    }


}



void button1_callback(const String & state)
{
   Serial.println(state);
   Serial.println(state.substring(0,state.indexOf(',')));
   Serial.println(state.substring(state.indexOf(',')+1,state.lastIndexOf(',')));
   Serial.println(state.substring(state.lastIndexOf(',')+1));
   String modes = state.substring(0,state.indexOf(','));
   char zhi ;
   strcpy(zhi,state.substring(state.indexOf(',')+1,state.lastIndexOf(',')).c_str());
   int data;
   sscanf(zhi, "%x", &data);
   int b = state.substring(state.lastIndexOf(',')+1).toInt();
   Serial.println(data);
   Serial.println(b);
   //irsend.sendRC5(data,b);
       if (modes == "NEC") {
      irsend.sendNEC(data,b);
      } else if (modes == "SONY") {
      irsend.sendSony(data,b);
      } else if (modes == "RC5") {
      irsend.sendRC5(data,b);
      } else if (modes == "RC6") {
      irsend.sendRC6(data,b);
      } else if (modes == "RCMM") {
      irsend.sendRCMM(data,b);
      } else if (modes == "PANASONIC") {
      irsend.sendPanasonic(data,b);
      } else if (modes == "LG") {
      irsend.sendLG(data,b);
      } else if (modes == "JVC") {
      irsend.sendJVC(data,b);
      } else if (modes == "AIWA_RC_T501") {
      irsend.sendAiwaRCT501(data,b);
      } else if (modes == "WHYNTER") {
      irsend.sendWhynter(data,b);
      } else if (modes == "NIKAI") {
      irsend.sendNikai(data,b);
      }




}


void dump(decode_results *results) {
uint16_t count = results->rawlen;
if (results->decode_type == UNKNOWN) {
    modedate = "Unknown encoding: ";
} else if (results->decode_type == NEC) {
    modedate ="NEC";
} else if (results->decode_type == SONY) {
    modedate ="SONY";
} else if (results->decode_type == RC5) {
    modedate ="RC5";
} else if (results->decode_type == RC5X) {
    modedate ="RC5X";
} else if (results->decode_type == RC6) {
    modedate ="RC6";
} else if (results->decode_type == RCMM) {
    modedate ="RCMM";
} else if (results->decode_type == PANASONIC) {
    modedate ="PANASONIC";
    Serial.print(results->address, HEX);
    Serial.print(" Value");
} else if (results->decode_type == LG) {
    modedate ="LG";
} else if (results->decode_type == JVC) {
    modedate ="JVC";
} else if (results->decode_type == AIWA_RC_T501) {
    modedate ="AIWA RC T501";
} else if (results->decode_type == WHYNTER) {
    modedate ="Whynter";
} else if (results->decode_type == NIKAI) {
    modedate ="Nikai";
}
date = uint64ToString(results->value, 16);
bitdate = results->bits;
modedate.concat(",");
modedate.concat(date);
modedate.concat(",");
modedate.concat(bitdate);
Blinker.println(modedate);

}


void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Blinker.delay(10);
    irsend.begin();
    irrecv.enableIRIn();
}

void loop()
{
    Blinker.run();
    Button0.attach(button0_callback);
    Button1.attach(button1_callback);

    if(xuexi==true){
      if (irrecv.decode(&results)) {
      dump(&results);
      irrecv.resume();
      }
    }
}






XlinliY.Zhang 发表于 2021-3-20 11:10

这个是APP更新后的BUG,APP更新后,按键自定义内容发送时不再增加双引号,导致设备端无法正常解析,在自定义发送的数据两端添加双引号即可恢复正常

no2yulu 发表于 2021-3-20 12:13

XlinliY.Zhang 发表于 2021-3-20 11:10
这个是APP更新后的BUG,APP更新后,按键自定义内容发送时不再增加双引号,导致设备端无法正常解析,在自定 ...

实在是太感谢了!好使

no2yulu 发表于 2021-3-20 13:34

XlinliY.Zhang 发表于 2021-3-20 11:10
这个是APP更新后的BUG,APP更新后,按键自定义内容发送时不再增加双引号,导致设备端无法正常解析,在自定 ...

不知道 能不能在麻烦下的这个代码一直只能点灯app操作 可不可以把小爱同学 加进去 我问爆改车间主任要 他那个语音控制的 代码 他可能忙 一直没理我的 !:lol

no2yulu 发表于 2021-3-20 13:36


380091482 发表于 2022-2-20 16:14

在哪里加引号啊
页: [1]
查看完整版本: esp01s 控制红外 遥控音箱开关 一段时间后不可以用了。