Arduino Uno R4 WiFi Telegram Nachricht senden

Moin

Ich möchte ein Programm schreiben, dass eine Telegram Nachricht versendet, sobald ein Taster betätigt wird. Das Programm läuft soweit super, aber es werden keine Telegram Nachrichten versendet.
Daher habe ich zum testen erst einmal ein sehr einfaches Programm geschrieben das einfach nur eine Telegram Nachricht versenden soll, welches leider auch nicht funktioniert.
Kann mir jemand sagen wo mein Fehler liegt?


#include <WiFiS3.h>
#include <WiFiSSLClient.h>
#include <UniversalTelegramBot.h>

const char* ssid = "xxxxxx";
const char* password = "xxxxxxx";

#define BOT_TOKEN "xxxxxxxx"
#define CHAT_ID "xxxxxxxx"

WiFiClient client;
UniversalTelegramBot bot(BOT_TOKEN, client);



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

  WiFi.begin(ssid, password);
  while (WiFi.localIP() == "0.0.0.0") 
  {
    delay(1000);
    Serial.println("Connecting to Wi-Fi...");
  }
  Serial.println("Connected to Wi-Fi");

  bot.sendMessage(CHAT_ID, "Hello World", "");
}


void loop() 
{
}

Tausch das mal:

WiFiClientSecure sslClient;
UniversalTelegramBot bot(BOT_TOKEN, sslClient);

Und im setup() muss zwingend noch ein

bot.begin();

vorher eingefügt werden.

@Jani007 ,

Ihr anderes Thema zum gleichen Thema wurde gelöscht.

Bitte stellen Sie keine doppelten Fragen. Das verschwendet Zeit und Mühe der Freiwilligen, die Ihnen helfen möchten, da sie dann an verschiedenen Stellen dasselbe beantworten müssen.

Bitte erstellen Sie nur ein Thema für Ihre Frage und wählen Sie die Forenkategorie sorgfältig aus. Wenn Sie mehrere Fragen zum selben Projekt haben, stellen Sie diese bitte in einem einzigen Thema. Die Antworten auf eine Frage liefern einen nützlichen Kontext für die anderen und Sie müssen Ihr Projekt nicht immer wieder erklären.

Wiederholtes Doppelposten kann zu einem vorübergehenden oder dauerhaften Ausschluss aus dem Forum führen.

Könnten Sie sich bitte kurz Zeit nehmen, um sich mit der Nutzung des Forums vertraut zu machen?

So können Sie das Forum in Zukunft optimal nutzen.

Vielen Dank.

Tut mir leid kommt nicht wieder vor. War mir fast klar das der doppelpost nicht gut ankommt. Habe zu spät gemerkt das es ein deutsches Forum gibt und keine Möglichkeit gefunden den anderen Post zu löschen

Danke für die schnelle Antwort. Werde ich heute Abend testen

Habe jetzt versucht deine Änderungen umzusetzen. Hier der neue Code:

#include <WiFiS3.h>
#include <WiFiSSLClient.h>
#include <UniversalTelegramBot.h>

const char* ssid = "xxxxxx";
const char* password = "xxxxxxx";

#define BOT_TOKEN "xxxxxxxx"
#define CHAT_ID "xxxxxxxx"

WiFiClientSecure sslClient;
UniversalTelegramBot bot(BOT_TOKEN, sslClient);



void setup() 
{
 
  Serial.begin(115200);
  
  bot.begin();
  WiFi.begin(ssid, password);
  while (WiFi.localIP() == "0.0.0.0") 
  {
    delay(1000);
    Serial.println("Connecting to Wi-Fi...");
  }
  Serial.println("Connected to Wi-Fi");

  bot.sendMessage(CHAT_ID, "Hello World", "");
}


void loop() 
{
}

Hier die erhaltenen Fehlermeldungen beim Kompilieren:

C:\Users\Jan\Desktop\Arduino\test110\test110.ino:11:1: error: 'WiFiClientSecure' does not name a type; did you mean 'WiFiClient'?
 WiFiClientSecure sslClient;
 ^~~~~~~~~~~~~~~~
 WiFiClient
C:\Users\Jan\Desktop\Arduino\test110\test110.ino:12:37: error: 'sslClient' was not declared in this scope
 UniversalTelegramBot bot(BOT_TOKEN, sslClient);
                                     ^~~~~~~~~
C:\Users\Jan\Desktop\Arduino\test110\test110.ino:12:37: note: suggested alternative: 'DNSClient'
 UniversalTelegramBot bot(BOT_TOKEN, sslClient);
                                     ^~~~~~~~~
                                     DNSClient
C:\Users\Jan\Desktop\Arduino\test110\test110.ino: In function 'void setup()':
C:\Users\Jan\Desktop\Arduino\test110\test110.ino:21:7: error: 'class UniversalTelegramBot' has no member named 'begin'
   bot.begin();
       ^~~~~
exit status 1

Compilation error: 'WiFiClientSecure' does not name a type; did you mean 'WiFiClient'?

Anschließend habe ich noch versucht die Bibliothek WiFiClientSecure zu installieren, aber diese scheint es für mein Board nicht zu geben.

Hach, ist ja noch ganz anders.
Also ausgehend von dem Example kommst Du selbst drauf, wie der client eingebunden werden muß?

Und das bot.begin() kann raus.
Macht der allein.

Danke aber so auf die Schnelle nein komme ich leider nicht drauf. Ich merke ich bin einfach zu lange aus dem Arduino draußen und bisher habe ich auch keinen internetfähigen Arduino verwendet. Ist also komplett neu für mich. Da darf ich dann wohl noch ein wenig experimentieren

Renn mal nicht weg.... - Dieses Post wird editiert

Das wäre mein Versuch.

#include "WiFiS3.h"
#include "WiFiSSLClient.h"
#include "IPAddress.h"

#include "arduino_secrets.h"

#include <UniversalTelegramBot.h>

const char *ssid = "xxxxxx";
const char *password = "xxxxxxx";

#define BOT_TOKEN "xxxxxxxx"
#define CHAT_ID "xxxxxxxx"

int status = WL_IDLE_STATUS;

WiFiSSLClient client;

UniversalTelegramBot bot(BOT_TOKEN, client);

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

  while (status != WL_CONNECTED)
  {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network.
    WiFi.begin(ssid, password);
    // wait 10 seconds for connection:
    delay(10000);
  }

  while (WiFi.localIP() == "0.0.0.0")
  {
    delay(1000);
    Serial.println("Connecting to Wi-Fi...");
  }

  Serial.println("Connected to Wi-Fi");
  bot.sendMessage(CHAT_ID, "Hello World", "");
}

void loop()
{
}

Habe ich gerade getestet. Zumindest bekomme ich beim kompilieren keine Fehlermeldung mehr. Allerdings komme ich mit dem Code noch nicht einmal ins WLAN. Bekomme nur als Endlosschleife Attempting to connect to SSID

Habe den Code mal ein klein wenig abgeändert:

#include "WiFiS3.h"
#include "WiFiSSLClient.h"
#include "IPAddress.h"


#include <UniversalTelegramBot.h>

const char *ssid = "xxxx";
const char *password = "xxx";

#define BOT_TOKEN "xxxxx"
#define CHAT_ID "xxxx"

int status = WL_IDLE_STATUS;

WiFiSSLClient client;

UniversalTelegramBot bot(BOT_TOKEN, client);

void setup()
{
  Serial.begin(115200);
  delay(100);
  
  while (WiFi.localIP() == "0.0.0.0")
  {
    WiFi.begin(ssid, password);
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network.
    // wait 10 seconds for connection:
    delay(10000);
  }

  

  Serial.println("Connected to Wi-Fi");
  bot.sendMessage(CHAT_ID, "Hello World", "");
}

void loop()
{
}

So komme ich zumindest wieder ins WLAN. Aber die Telegram Nachricht wird leider weiterhin nicht gesendet.

Ich nehme alles zurück scheint nur ein wenig zeitverzögert zu sein.

Vielen Dank mit dem Code klappt es wie erhofft.

Hab ich mir gedacht.

Ich würde mich freuen, wenn Du den als gelöst markierst, damit auch die Nachwelt das findet, da Du auch deine Frage betitelt hast, funktioniert das dann auch mit der Suchfunktion.

Ach ja....

Den kannst Du auch auf 1000 setzen. Dann bekommst ggfls. nur eine weitere Meldung. aber musst nicht weiter warten.
Sollte keine 2te Meldung Attempting kommen kannst auch auf 500 gehen.

Bräuchte bitte noch mal eure Hilfe. Theoretisch soll eine Telegram Nachricht gesendet werden, wenn der taster betätigt wird und eine andere Nachricht wenn der Taster innerhalb von 2 Sekunden ein zweites mal betätigt wird. Irgendwie erkennt der aber den zweiten Tasterdruck nicht

String message = "Achtung";
String altMessage = "Alarm";
const int buttonPin = 7;
int lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 200;
bool msgSent = false;
unsigned long lastMsgTime = 0;
const unsigned long doublePressWindow = 2000;
int zaehler = 0;
int stop = 0;

int status = WL_IDLE_STATUS;

WiFiSSLClient client;

UniversalTelegramBot bot(BOT_TOKEN, client);

void setup()
{
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(115200);
  delay(100);
  
  while (WiFi.localIP() == "0.0.0.0")
  {
    WiFi.begin(ssid, password);
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network.
    // wait 10 seconds for connection:
    delay(10000);
  }
  Serial.println("Connected to Wi-Fi");
}

void loop()
{
  stop = 0;
  long long int timer;
  int buttonState = digitalRead(buttonPin);
  if (buttonState == LOW && zaehler == 0)
  {
    zaehler++;
    Serial.print("Zählerstand: ");
    Serial.println(zaehler);
    timer = millis();
    Serial.print("Timer: ");
    Serial.println(timer);
    delay(500);
    lastButtonState = buttonState;
    delay(500);
  }
  while ((millis() - timer) < doublePressWindow && zaehler == 1 && digitalRead(buttonPin) == HIGH)
  {
      if (digitalRead(buttonPin) == LOW)
      {
        zaehler++;
        Serial.print("Zählerstand: ");
        Serial.println(zaehler);
      }
    }
  if (zaehler >= 1)
  {
    while (zaehler != 0 && stop == 0)
    {
      Serial.println("Vorgang abgeschlossen!");
      if (zaehler == 1 && stop == 0)
      {
        bot.sendMessage(CHAT_ID, message, "");
        msgSent = true;
        stop = 1;
      }
      if (zaehler == 2 && stop == 0)
      {
        bot.sendMessage(CHAT_ID, altMessage, "");
        msgSent = true;
        stop = 1;
      }
    }
  }
  if (msgSent == true)
  {
        Serial.print("Telegram Nachricht ");
    Serial.println(zaehler);
    Serial.println(" erfolgreich gesendet");
    zaehler = 0;
    msgSent = false;
  }
}

#include "WiFiS3.h"
#include "WiFiSSLClient.h"
#include "IPAddress.h"

#include <UniversalTelegramBot.h>

const char *ssid = "xxxx";
const char *password = "xxx";

#define BOT_TOKEN "xxxxx"
#define CHAT_ID "xxxx"

WiFiSSLClient client;
UniversalTelegramBot bot(BOT_TOKEN, client);

constexpr uint8_t buttonPin {7};
uint8_t zaehler = 0;

int status = WL_IDLE_STATUS;

void setup()
{
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(115200);
  delay(100);

  while (WiFi.localIP() == "0.0.0.0")
  {
    WiFi.begin(ssid, password);
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network.
    // wait 10 seconds for connection:
    delay(10000);
  }

  Serial.println("Connected to Wi-Fi");
}

bool lastState = LOW;
constexpr uint32_t debounceTime {50};
constexpr uint32_t _twoSecond {2000};
uint32_t pressTime;

void sendZaehler()
{
  char buffer[15] = {'\0'};

  if (zaehler == 1)
  { sprintf(buffer, "Achtung %i", zaehler); }
  else
  { sprintf(buffer, "Alarm %i", zaehler); }

  bot.sendMessage(CHAT_ID, buffer, "");
  Serial.print(F("Sende: "));
  Serial.println(buffer);
}

void getButton()
{
  if (!digitalRead(buttonPin))
  {
    if (lastState == LOW)
    {
      lastState = HIGH;
      pressTime = millis();
      zaehler++;
      sendZaehler();
    }
  }
  else if (lastState)
  {
    if (millis() - pressTime > debounceTime)
    { lastState = LOW; }
  }

  if (zaehler)
  {
    if (millis() - pressTime > _twoSecond)
    {
      zaehler = 0;
    }
  }
}

void loop()
{
  getButton();
}

danke das funktioniert.