Telegram IoT Bot
Tell Me More

ABOUT

Dein Kaffee ist schon wieder kalt, weil Du vergessen, hast ihn aus der Kaffemaschine zu holen, als der fertig war?
Du möchtest benachrichtigt werden, wenn Dein Kaffee fertig ist?
Du überlegst, wie Du deine Kaffemaschine mit deinem Handy verbindest?
Und was passiert, wenn Du gerade Dein Tablet statt Dein Handy benutzt?

Der Telegram-Internet of things-Bot hilft Dir dabei! Alles was Du benötigst, ist ein Internet fähiges Gerät, an welches Du Deinen Sensor anschließt. Den Rest übernimmt der Bot für Dich.
Du kannst einen ESP8266, Arduino-Ethernet, Raspberry-Pi, Banana-Pi und viele andere Boards benutzen.
Das einzige was dein Sensor machen muss, ist einen GET (HTTP oder HTTPS) Request absenden.
Du brauchst natürlich keine extra Sensoren und kannst auch direkt von Deinem PC Benachrichtigungen versenden. (Wenn z.B. das System Update fertig ist.)

Wie funktioniert`s?

  • Finde den Bot unter dem Namen @IoTNotificationBot oder klicke hier
  • Klicke auf Start
  • Registriere Dein Gerät mit dem Befehl /register
  • Trage Die URL, die Dir der Bot mitgeteilt hat in Dein Gerät ein
  • Abonniere Dein Gerät mit /subscribe DerNameDeinesGerätes
Fertig, Du wirst jetzt immer benachrichtigt, sobald die URL aufgerufen wird!

Falls Du möchtest, Dass jemand anderes auch benachrichtigt werden soll, kann dieser das Gerät ebenfalls mit dem /subscribe Befehl abonnieren.

ESP8266

Hier eine Anleitung für den ESP8266.

img02

ESP8266 Beispiel Aufbau

Hardware

Als Beispiel benutze ich hier ein WeMos D1 mini Board mit einem ESP12, da sich dieses via (Micro)-USB programmieren lässt und über dieses auch seine Spannungsversorgung bezieht.
Daher ist der Aufbau denkbar einfach. Es wird nur ein Taster zur Eingabe benötigt. Der Taster wird hier an D4 (Arduino Pin 2) angeschlossen und schaltet gegen GND.

Software

Zur Programmierung kann man die Arduino IDE benutzen, hierzu musst Du nur die ESP8266 Bibliotheken installieren. Wie Du das machst, wird hier erklärt:
https://github.com/esp8266/Arduino#installing-with-boards-manager

#include <Arduino.h>

#include <ESP8266WiFi.h>

#include <ESP8266HTTPClient.h>

const byte interruptPin = 2;

const String SSID="YOUR WIFI SSID";
const String PASSWORD="YOUR WIFI PASSWORD";

const String BASEURI="http://telegramiotbot.com/api/notify?token=";

const String TOKEN_NOTIFY="YOUR TOKEN";


bool interrupted=false;
void inputChanged(){
    interrupted=true;
}

void notify(String token){
    HTTPClient http;

    Serial.print("[HTTP] begin...\n");
    http.begin(BASEURI+token);

    Serial.print("[HTTP] GET...\n");
    int httpCode = http.GET();
    if(httpCode) {
        Serial.printf("[HTTP] GET... code: %d\n", httpCode);
    } else {
        Serial.print("[HTTP] GET... failed, no connection or no HTTP server\n");
    }
}

bool connect(){
    WiFi.begin(SSID.c_str(), PASSWORD.c_str());
    Serial.print("[Connecting]");
    int tries=0;
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
        tries++;
        if (tries > 30){
            Serial.println();
            Serial.print("[connecting failed]");
            Serial.println();
            return false;
        }
    }
    Serial.print("You're connected to the network");
    Serial.println();
    return true;
}


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

    pinMode(interruptPin, INPUT_PULLUP);
    attachInterrupt(digitalPinToInterrupt(interruptPin), inputChanged, FALLING);
}

void loop() {
    if(interrupted){
        if((WiFi.status() == WL_CONNECTED)) {
            notify(TOKEN_NOTIFY);
            interrupted=false;
        }
    }
}

verbundene Geräte

Nutzer

versendete Notifications

Raspberry Pi

Hier eine Anleitung für den Raspberry Pi

Prinzipiell musst Du auch hier wieder nur die URL aufrufen, das funktioniert unter Linux am einfachsten mit dem Befehl wget.

wget -O- telegramiotbot.com/api/notify?token=TOKEN
Der Parameter -O- sorgt dafür, dass die Ausgabe nicht in eine Datei geschrieben wird.

Hier findest Du eine Anleitung dazu, wie Du auf einem Raspberry Pi etwas Interrupt gesteuert ausführst: http://kampis-elektroecke.de/?page_id=3740 In Python kannst Du Konsolen Befehle mit os.print("Befehl") ausführen, womit sich dann dieses Script ergibt:
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

def Interrupt(channel):
    os.print("wget -O- telegramiotbot.com/api/notify?token=TOKEN");

GPIO.add_event_detect(24, GPIO.RISING, callback = Interrupt, bouncetime = 200)

while True:
    time.sleep(1)

Kontakt

Du hast noch Fragen?

Impressum

Sebastian Deppisch
Jungfernstraße 15
64291 Darmstadt

Haftungsausschluss

Datenschutzerklärung