113 lines
2.6 KiB
Arduino
113 lines
2.6 KiB
Arduino
|
#include <ESP8266WiFi.h>
|
||
|
#include <WiFiClientSecure.h>
|
||
|
#include <UniversalTelegramBot.h>
|
||
|
|
||
|
// Wifi network station credentials
|
||
|
#define WIFI_SSID WIFISSID
|
||
|
#define WIFI_PASSWORD WIFIPASS
|
||
|
|
||
|
#define BOT_TOKEN BOTTOKEN
|
||
|
|
||
|
const String CHAT_ID = CHATID;
|
||
|
const unsigned long BOT_MTBS = 1000; // mean time between scan messages
|
||
|
|
||
|
// GPIO Pin Definition
|
||
|
const int inputPin = 0;
|
||
|
|
||
|
// Initiale Zustandsvariablen
|
||
|
bool lastState = LOW;
|
||
|
bool again = true;
|
||
|
int count = 0;
|
||
|
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
|
||
|
WiFiClientSecure secured_client;
|
||
|
UniversalTelegramBot bot(BOT_TOKEN, secured_client);
|
||
|
unsigned long bot_lasttime; // last time messages' scan has been done
|
||
|
bool Start = false;
|
||
|
|
||
|
void handleNewMessages(int numNewMessages)
|
||
|
{
|
||
|
Serial.println("handleNewMessages");
|
||
|
Serial.println(String(numNewMessages));
|
||
|
|
||
|
for (int i = 0; i < numNewMessages; i++)
|
||
|
{
|
||
|
String chat_id = bot.messages[i].chat_id;
|
||
|
String text = bot.messages[i].text;
|
||
|
|
||
|
String from_name = bot.messages[i].from_name;
|
||
|
if (from_name == "")
|
||
|
from_name = "Guest";
|
||
|
|
||
|
if (text == "/send_test_action")
|
||
|
{
|
||
|
bot.sendChatAction(chat_id, "typing");
|
||
|
delay(4000);
|
||
|
bot.sendMessage(chat_id, "Did you see the action message?");
|
||
|
}
|
||
|
|
||
|
if (text == "/start")
|
||
|
{
|
||
|
String welcome = "Willkommen beim Klingelbot";
|
||
|
bot.sendMessage(chat_id, welcome);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void setup()
|
||
|
{
|
||
|
Serial.begin(115200);
|
||
|
|
||
|
pinMode(inputPin, INPUT_PULLUP);
|
||
|
// Set WiFi to station mode and disconnect from an AP if it was Previously
|
||
|
// connected
|
||
|
WiFi.mode(WIFI_STA);
|
||
|
WiFi.disconnect();
|
||
|
delay(100);
|
||
|
|
||
|
// attempt to connect to Wifi network:
|
||
|
Serial.print("Connecting to Wifi SSID ");
|
||
|
Serial.print(WIFI_SSID);
|
||
|
Serial.print(" ");
|
||
|
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
|
||
|
secured_client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
|
||
|
while (WiFi.status() != WL_CONNECTED)
|
||
|
{
|
||
|
Serial.print(".");
|
||
|
delay(500);
|
||
|
}
|
||
|
Serial.println();
|
||
|
|
||
|
Serial.print("WiFi connected. IP address: ");
|
||
|
Serial.println(WiFi.localIP());
|
||
|
}
|
||
|
|
||
|
void loop()
|
||
|
{
|
||
|
if (millis() - bot_lasttime > BOT_MTBS)
|
||
|
{
|
||
|
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);
|
||
|
}
|
||
|
delay(100); // Kurze Pause, um Prellen zu vermeiden
|
||
|
bot_lasttime = millis();
|
||
|
}
|
||
|
if (digitalRead(inputPin) == LOW) {
|
||
|
if (again) {
|
||
|
bot.sendMessage(CHAT_ID, "Ding Dong");
|
||
|
again = false;
|
||
|
} else {
|
||
|
count ++;
|
||
|
Serial.println (count);
|
||
|
if (count >20) {
|
||
|
again = true;
|
||
|
count=0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|