首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >UniversalTelegramBot不能与ESP32一起工作,但它不会显示错误。我想这是一个库版本兼容性的问题,有人能帮我吗?

UniversalTelegramBot不能与ESP32一起工作,但它不会显示错误。我想这是一个库版本兼容性的问题,有人能帮我吗?
EN

Stack Overflow用户
提问于 2021-06-17 13:38:16
回答 1查看 310关注 0票数 1

我正在用Arduino Ide (v1.8.13)开发一个程序,它获取亮度值并将它们发送到ESP32 Web Server。另外,我还想增加通过电报查看数据的可能性。目前,我只想向Telegram机器人和Arduino程序发送“/start”,并以欢迎消息作为回答。然而,机器人没有收到我的消息。我读到这是ArduinoJson,通用电报机器人,Arduino Ide和ESP32核心版本之间的版本问题。谁能告诉我哪些版本可以在ESP32中正常工作?我都快疯了。

我添加了我的实际代码。

以下是我使用的版本: Arduino Ide:1.8.13,Arduino Json:6.18,Universal Telegram Bot:1.3.0,Wifi Client Secure:1.0,ESP32:1.04。

提前感谢:)

代码语言:javascript
运行
AI代码解释
复制
// Import required libraries
#include <WiFi.h>
#include <Wire.h>
#include <ESPAsyncWebServer.h>
#include <SPIFFS.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_TSL2561_U.h>

#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>

#include <TimeAlarms.h>
#include <Time.h>
#include <TimeLib.h>


   
const char* ssid_STA = "XXXXXX";
const char* password_STA = "XXXXXX";
IPAddress ip(192,168,1,44);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

#define BOTtoken "XXXXXX"
#define CHAT_ID "XXXXXXX"

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

time_t fecha;

int botRequestDelay = 1000;
unsigned long lastTimeBotRan;

// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345);


void configureSensor(void)
{
  /* You can also manually set the gain or enable auto-gain support */
  // tsl.setGain(TSL2561_GAIN_1X);      /* No gain ... use in bright light to avoid sensor saturation */
  // tsl.setGain(TSL2561_GAIN_16X);     /* 16x gain ... use in low light to boost sensitivity */
  tsl.enableAutoRange(true);            /* Auto-gain ... switches automatically between 1x and 16x */
  
  /* Changing the integration time gives you better sensor resolution (402ms = 16-bit data) */
  tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);      /* fast but low resolution */
  //tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_101MS);  /* medium resolution and speed   */
  // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS);  /* 16-bit data but slowest conversions */

  /* Update these values depending on what you've set above! */  
  Serial.println("------------------------------------");
  Serial.print  ("Gain:         "); Serial.println("Auto");
  Serial.print  ("Timing:       "); Serial.println("13 ms");
  Serial.println("------------------------------------");
}

String readLuz() {
 
 /* Get a new sensor event */ 
  sensors_event_t event;
  tsl.getEvent(&event);
 
  /* Display the results (light is measured in lux) */
  
  Serial.print(event.light); Serial.println(" lux");
  
  return String(event.light);
  
  
}
void Informacion(){
  Serial.println("voy a enviar");
  sensors_event_t event;
  tsl.getEvent(&event);
  //bot.sendMessage(chat_ID, "La luminosidad en tu jardín es de " ,"");
  Serial.println("enviado");  
}

void handleNewMessages(int numNewMessages) {
  Serial.println("handleNewMessages");
  Serial.println(String(numNewMessages));

  for (int i = 0; i < numNewMessages; i++) {
    String chat_id = String(bot.messages[i].chat_id);
    Serial.println(chat_id);
    if (chat_id != CHAT_ID){
      bot.sendMessage(chat_id, "Unauthorized user", "");
      continue;
    }
    //COger texto
    String text = bot.messages[i].text;
    Serial.println(text);
    //Coger nombre
    String from_name = bot.messages[i].from_name;
    
    //if (text == "/get_info") {
      
    //}    
    if (text == "/start") {
      String welcome = "Bienvenida "+from_name+"\n";
      welcome += "Properties.\n\n";
      welcome += "/get_info : Obtener información actual del jardín\n";
      
      bot.sendMessage(chat_id, welcome, "");
    }
  }
}
/**************************************************************************/
/*
    Arduino setup function (automatically called at startup)
*/
/**************************************************************************/
void setup(void) 
{
  
  Serial.begin(115200);
//  client.setInsecure();
  /* Initialise the sensor */
  //use tsl.begin() to default to Wire, 
  //tsl.begin(&Wire2) directs api to use Wire2, etc.
  if(!tsl.begin())
  {
    /* There was a problem detecting the TSL2561 ... check your connections */
    Serial.print("Ooops, no TSL2561 detected ... Check your wiring or I2C ADDR!");
    while(1);
  }  
  /* Display some basic information on this sensor and  Setup the sensor gain and integration time */
  //displaySensorDetails();
  configureSensor();

   
  ///EJEMPLO SREVER
 
  // Initialize SPIFFS
  if(!SPIFFS.begin()){
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }
 
 ;
  // Connect to Wi-Fi
  //WiFi.softAP(ssid_AP, password_AP);
  WiFi.mode(WIFI_STA);
  WiFi.config(ip, gateway, subnet);
  WiFi.begin(ssid_STA, password_STA);
  
  
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(3000);
    Serial.println("Connecting to WiFi..");
  }
  
  // Print ESP32 Local IP Address
  Serial.println("IP");
  Serial.println(WiFi.localIP());
  

  // Route for root / web page
 
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/index.html");
  });
  
  server.on("/luz", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", readLuz().c_str());
  });
  
  // Start server
  server.begin();

  /*
  //ALARMS
  //Coger la hora real al reiniciar
  //fecha = now();
  //Serial.print(hour(fecha));  Serial.print(minute(fecha)); Serial.print(second(fecha)); Serial.print(day(fecha)); Serial.print(month(fecha)); Serial.println(year(fecha));
  //setTime(hour(fecha), minute(fecha),second(fecha), day(fecha), month(fecha),year(fecha));
  setTime(12, 42, 00, 16, 6, 21);
  
  // Crear las alarmas y configurar las funciones correspondientes a cada una
  Alarm.alarmRepeat(8, 0, 0, Informacion);  // Evento a las 14:00 diario
  Alarm.alarmRepeat(12,43, 0, Informacion);  // Evento a las 14:05 diario
  Alarm.alarmRepeat(21, 0, 0, Informacion);  // Evento a las 14:10 diario
  */
}

/**************************************************************************/
/*
    Arduino loop function, called once 'setup' is complete (your own code
    should go here)
*/
/**************************************************************************/
void loop(void){  
  if (millis() > lastTimeBotRan + botRequestDelay)  {
    Serial.println("loop");
    Serial.println(bot.last_message_received);
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

    while (numNewMessages) {
      Serial.println("got response");
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }

    lastTimeBotRan= millis();
  }
  // Mostrar el reloj en el monitor serial
  //digitalClockDisplay();
 
  // Esperar 1 segundo y procesar las Alarmas mientras tanto...
  //Alarm.delay(1000);
}

/*
void digitalClockDisplay() {
  Serial.print(hour());
  printDigits(minute());
  //printDigits(second());
  Serial.println();
}
void printDigits(int digits) {
  Serial.print(":");
  if (digits < 10)
    Serial.print('0');
  Serial.print(digits);
}
*/
EN

回答 1

Stack Overflow用户

发布于 2021-09-17 06:55:07

我想你没有听懂这句话

代码语言:javascript
运行
AI代码解释
复制
// Add root certificate for api.telegram.org    
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68020536

复制
相关文章
webpack 中版本兼容性问题错误总结
一定不要运行npm i  XXX  -g(-d) 一定要指定版本,尽量低版本,也不最新版本,会导致不兼容和指令不一样的问题。
李文杨
2018/10/18
5.2K0
​harmony、不harmony,这是个问题
harmony应用主成分分析,将转录组表达谱嵌入到低维空间中,然后应用迭代过程去除数据集特有的影响
生信技能树jimmy
2023/08/31
1.3K0
​harmony、不harmony,这是个问题
我是不会运行你的代码吗?不,我是不会导入自己的数据!
常常遇到有人问起看到分享的教程导入数据的方式是data(dune)等直接调用系统的数据,而自己怎么读入自己的数据呢?
生信宝典
2022/01/18
1.5K0
没有人能阻挡我通过面试
当面试官多简单,提出问题,看看对方的知识底蕴,以及应变能力,偶尔还能小小刁难,完美。
灬沙师弟
2023/03/20
3070
没有人能阻挡我通过面试
CheckBox,选择Or不选,这是个问题!
前面我们讲过了 RadioButton与 RadioGroup,利用单选按钮组的属性来实现仿微信底部 Tab切换的效果。对比记忆一下,今天我们来讲解第二个类似的控件 CheckBox,按照惯例先看下它的类继承关系如下:
下码看花
2019/09/02
9680
CheckBox,选择Or不选,这是个问题!
刘华:上云还是不上云,这是一个问题
由于所有业务都在跑在旧版本,不能长时间停机。而且新版本的架构设计和对服务器的要求不一样,需要搭建一套新的服务器。
DevOps云学堂
2021/03/16
1.7K0
刘华:上云还是不上云,这是一个问题
微信小程序——火还是不火?这是一个问题
最初,小程序是功能,微信没有给它赋予任何内容属性。所以,一开始官方坚决不允许小程序做游戏。
iCDO互联网数据官
2018/07/27
4570
没有人能阻挡我通过面试-2
我是Java小面,一个普通的面试官,本职是个老程序员,偶尔对应聘的新人进行面试。接着上次没有人能阻挡我通过面试,开启新一天的面试。
灬沙师弟
2023/03/20
2000
没有人能阻挡我通过面试-2
技术公司与非技术公司的区别,太真实了…
以下原文,分享给大家: 来源:cnblogs.com/yhyjy/p/13298044.html
代码随想录
2021/07/16
3410
xadmin 因为版本问题的错误
1.ModuleNotFoundError: No module named 'django.core.urlresolvers'
Centy Zhao
2019/12/26
1.5K0
技术公司与非技术公司的区别,太真实了…
工作八年多了,走过好多公司,现在已经过了三十,不想再这么奔波,这几天由于领导对我的评价,对自己产生了一系列怀疑,是自己能力不行?还是自己态度不行?还是自己工作方式不对?等等很多。这个年纪已经不再是年少轻狂的年纪了。
肉眼品世界
2021/04/20
3820
这是你的芯片!不,这是你的芯片!
清晨6点,沉浸在深深的梦乡里,我追逐着恋人在草地上嬉笑、奔跑、打滚,杠铃般的笑声弥漫了整个梦境......
一斤代码
2018/08/21
5510
这是你的芯片!不,这是你的芯片!
我想转行程序员,上个编程培训班,能找到工作吗?我可以自学吗?
而且之所以叫编程培训班,不叫职业介绍所,是因为编程培训班的本质是教编程知识。学知识和找工作,这是2件事。
程序员晚枫
2022/06/13
1.1K0
我想转行程序员,上个编程培训班,能找到工作吗?我可以自学吗?
向后兼容,Go1.21,Go2
Go 1.21包含了新的特性以提高兼容性。在你停止阅读之前,我知道这听起来很无聊。但无聊可以是好事。在Go 1的早期,Go是令人兴奋的,充满了惊喜。每周我们都会发布一个新的快照版本,每个人都可以掷骰子看看我们改变了什么,他们的程序会如何崩溃。我们发布了Go 1和它的兼容性承诺,以消除这种兴奋,使得Go的新版本变得无聊。
孟斯特
2023/10/16
3940
向后兼容,Go1.21,Go2
这是一个好问题:既然机器可以学习,它们能忘掉吗?
机器学习正在寻找如何在人工智能软件中诱发选择性失忆的方法。目标是从机器学习系统中删除特定人员或数据点的所有痕迹,而不影响其性能。
AI科技大本营
2021/09/27
4610
YYDS!大神自己动手制造游戏机
MicroByte 是一款微型主机,能够运行 NES、GameBoy、GameBoy Color、Game Gear 和 Sega Master 系统的游戏,所有元器件都设计在这 78 x 17 x 40 mm 的封装中。尽管成品尺寸很小,但它符合 SNES 游戏板的布局并且具有操作按钮。
程序员小猿
2022/03/16
1.5K0
YYDS!大神自己动手制造游戏机
C++都从事哪些工作能挣钱不?
java大行其道的今天我们来谈谈c++,现在学c++的人越来越少了。问题在哪?互联网盛行的年代,能吸引眼球的就是能赚钱的。所以一看招聘,发现做java开发是抢手货,起步价比c++高。 再则学习c++难度都比其它语言较高。而它的学习难度,太复杂性。现在c++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替c++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器,网络等。 一、游戏开发 游戏开发都有哪些,引擎开发(
程序员互动联盟
2018/03/15
2.8K0
C++都从事哪些工作能挣钱不?
分享一些<Linus Torvalds 访谈>中不错的问答,应该会有收获~
最近看了一篇文章<Linux 的 30 年Linus Torvalds 访谈>,linus作为嵌入式领域的技术大牛,在访谈中发表了自己的一些观点,有一些挺有参考价值的,这里挑了一些出来供大家学习参考。
嵌入式与Linux那些事
2022/05/24
4900
掌握设计模式之适配器模式
由于所在行业的需求,需要跟许多第三方系统进行接口对接,并且虽然每个系统大同小异,但每次对接开发都采用重写一套,独立维护,对接时间久了就开始考虑有什么方式能将这么多的三方系统接口接入现有系统时统一规范化,按照固定模式接入,带着这个疑惑我开始四处寻求答案。在近期参加的《Head First Design Patterns》技术读书营中,本着学习设计模式,提高编码设计能力为目的,我看到适配器模式之后,明白它就是解除我疑惑的那个答案,紧接深入学习研究,于是就有了这篇文章。那么这是个怎样的模式,以及如何使用的呢,接下来就让我们学习下吧。
闻人的技术博客
2019/09/19
5930
掌握设计模式之适配器模式
你《提问的智慧+如何有效地报告Bug》了吗?
http://iamin.blogdriver.com/iamin/1204404.html
阿敏总司令
2019/02/28
8330

相似问题

我找不到这段代码中的任何错误,但它显示了seg错误,有人能帮我吗?

17

LinkedHashMap问题...有人能帮我吗?

10

我的代码不能工作:有人能帮我吗?

10

我的CSRF PoC不工作,请求csrf得到302错误!!有人能帮我吗

12

我想连接我的:在线MySQL数据库,但是我得到了这个错误。有人能帮我吗?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档