Arduino UNO Q - Telegram-Bot

Möchten Sie Ihr Arduino UNO Q von überall mit Telegram steuern? Dieses Tutorial zeigt Ihnen, wie Sie einen Telegram-Bot erstellen, der auf der Arduino UNO Q Linux-Seite (Debian) läuft und auf feste Befehle wie /toggle_led oder /status antwortet — ohne KI oder Cloud-Dienst erforderlich.

In diesem Tutorial lernen Sie:

Arduino UNO Q Telegram-Bot

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Funktionsweise

Arduino UNO Q kombiniert zwei Prozessoren:

  • STM32 MCU — läuft Ihre Arduino-Skizze. Sie steuert Hardware (LEDs, Relais, Sensoren usw.) in Echtzeit.
  • Qualcomm MPU — läuft vollständiges Debian Linux. Sie verbindet sich mit Wi-Fi und kann ein Python-Skript ausführen, das mit Telegram kommuniziert.

Die beiden Prozessoren kommunizieren über die Bridge. Die MCU stellt Hardwarefunktionen über die Bridge bereit, und das Python-Skript auf der Linux-Seite ruft diese Funktionen auf, wenn ein Telegram-Befehl ankommt.

Hier ist der Ablauf für jede Benutzernachricht:

  1. Benutzer sendet einen Befehl an den Telegram-Bot: /toggle_led
  2. Python-Skript das auf der Arduino UNO Q Linux-Seite läuft, fragt die Telegram-API ab, empfängt die Nachricht und analysiert den Befehl
  3. Python-Skript ruft Bridge.call("toggle_led", "") auf, um die MCU zu erreichen
  4. MCU (STM32) schaltet die LED um und gibt das Ergebnis über Bridge zurück
  5. Python-Skript sendet die Antwort über Telegram an den Benutzer zurück: LED ist jetzt AN

※ Notiz:

Das Python-Skript verwendet Long Polling — es fragt wiederholt Telegram ab "gibt es neue Nachrichten?" Dies funktioniert ohne öffentliche IP-Adresse oder Portweiterleitung, daher funktioniert es in jedem Netzwerk.

Funktion Details
Befehlsstil Feste Befehle (z. B. /toggle_led, /status)
Erfordert KI-Modell Nein
Nachrichtenkanal Nur Telegram
Läuft auf Arduino UNO Q Linux-Seite (Debian)
Benötigt öffentliche IP Nein (nutzt Polling)

※ Notiz:

Wenn Sie Steuerung in natürlicher Sprache ("schalte die LED an", "wie ist der Status?") über mehrere Kanäle (Telegram, WhatsApp, Discord und mehr) wünschen, siehe das OpenClaw-Tutorial.

Voraussetzungen

Stellen Sie vor Beginn sicher, dass Sie haben:

  • Arduino UNO Q läuft — folgen Sie zunächst dem Erste Schritte mit Arduino UNO Q-Tutorial
  • Arduino App Lab installiert und funktionierend
  • Vertrautheit mit der Bridge — siehe das Kommunikation zwischen Linux und MCU-Tutorial
  • Ein Telegram-Konto — installieren Sie Telegram auf Ihrem Telefon oder Desktop von telegram.org
  • Arduino UNO Q verbunden mit Wi-Fi, damit die Linux-Seite das Internet erreichen kann

Schritt 1 — Erstellen Sie einen Telegram-Bot mit BotFather

BotFather ist der offizielle Telegram-Bot, der andere Bots erstellt und verwaltet. Sie werden ihn verwenden, um ein Bot-Token zu erhalten — der Schlüssel, den Ihr Python-Skript zum Senden und Empfangen von Nachrichten verwendet.

  • Öffnen Sie Telegram und suchen Sie nach @BotFather, oder öffnen Sie diesen Link: t.me/BotFather
  • Starten Sie einen Chat und senden Sie:
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.
BotFather

BotFather

bot
Today
/newbot
10:15 AM ✓✓
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
10:16 AM
  • Senden Sie einen Anzeigenamen für Ihren Bot (kann alles sein):
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.
BotFather

BotFather

bot
Today
My Arduino UNO Q
10:15 AM ✓✓
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
10:16 AM
  • Senden Sie einen Benutzernamen, der auf bot endet (muss eindeutig über alle Telegram sein):
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.
BotFather

BotFather

bot
Today
my_arduino_uno_q_bot
10:15 AM ✓✓
Done! Congratulations on your new bot. You will find it at t.me/my_arduino_uno_q_bot. You can now add a description, about section and profile picture for your bot... Use this token to access the HTTP API: 1234567890:ABCDefGhIJKlmNoPQRsTUVwXYZ1234567890 Keep your token secure and store it safely, it can be used by anyone to control your bot.
10:16 AM
  • Kopieren Sie das Bot-Token — es sieht so aus:
1234567890:ABCDefGhIJKlmNoPQRsTUVwXYZ1234567890

※ Notiz:

Halten Sie Ihr Bot-Token geheim. Jeder, der es hat, kann Nachrichten über Ihren Bot senden und empfangen.

Schritt 2 — Arduino UNO Q Code

MCU-Code

Die MCU-Skizze stellt Hardwarekontrollfunktionen über die Bridge bereit. Das Python-Skript auf der Linux-Seite ruft diese Funktionen auf, wenn ein Telegram-Befehl ankommt.

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-telegram-bot */ #include "Arduino_RouterBridge.h" // LED_BUILTIN is LED3 on the board, lights up RED, active LOW // LOW = ON, HIGH = OFF bool ledState = false; unsigned long startMs = 0; String toggle_led(String arg) { ledState = !ledState; digitalWrite(LED_BUILTIN, ledState ? LOW : HIGH); Monitor.println(ledState ? "LED turned ON" : "LED turned OFF"); return ledState ? "ON" : "OFF"; } String led_on(String arg) { ledState = true; digitalWrite(LED_BUILTIN, LOW); Monitor.println("LED turned ON"); return "ON"; } String led_off(String arg) { ledState = false; digitalWrite(LED_BUILTIN, HIGH); Monitor.println("LED turned OFF"); return "OFF"; } String get_status(String arg) { unsigned long uptime = (millis() - startMs) / 1000; String status = "MCU is running. Uptime: " + String(uptime) + "s. LED: "; status += ledState ? "ON" : "OFF"; Monitor.println("Status requested: " + status); return status; } void setup() { Monitor.begin(); Bridge.begin(); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); // Start with LED off (active LOW) startMs = millis(); Bridge.provide_safe("toggle_led", toggle_led); Bridge.provide_safe("led_on", led_on); Bridge.provide_safe("led_off", led_off); Bridge.provide_safe("get_status", get_status); Monitor.println("Telegram Bot Bridge ready"); } void loop() { }

Python-Code

Das Python-Skript läuft auf der Arduino UNO Q Linux-Seite. Es fragt die Telegram-API nach neuen Nachrichten ab, analysiert die Befehle, ruft die MCU über die Bridge auf und sendet Antworten.

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-telegram-bot */ from arduino.app_utils import * import urllib.request import urllib.parse import json import time # ── Configuration ──────────────────────────────────────────────────────────── BOT_TOKEN = "YOUR_BOT_TOKEN" # Replace with the token from BotFather # ───────────────────────────────────────────────────────────────────────────── TELEGRAM_API = "https://api.telegram.org/bot" + BOT_TOKEN HELP_TEXT = ( "Available commands:\n" "/toggle_led - Toggle the LED\n" "/led_on - Turn LED on\n" "/led_off - Turn LED off\n" "/status - Get MCU status\n" "/help - Show this message" ) def telegram_get(method, params=None): url = TELEGRAM_API + "/" + method if params: url += "?" + urllib.parse.urlencode(params) with urllib.request.urlopen(url, timeout=30) as resp: return json.loads(resp.read().decode()) def telegram_post(method, data): url = TELEGRAM_API + "/" + method payload = json.dumps(data).encode() req = urllib.request.Request( url, data=payload, headers={"Content-Type": "application/json"} ) with urllib.request.urlopen(req, timeout=10) as resp: return json.loads(resp.read().decode()) def send_message(chat_id, text): telegram_post("sendMessage", {"chat_id": chat_id, "text": text}) def handle_command(chat_id, command): if command == "/toggle_led": state = Bridge.call("toggle_led", "") reply = "LED is now " + state elif command == "/led_on": Bridge.call("led_on", "") reply = "LED is now ON" elif command == "/led_off": Bridge.call("led_off", "") reply = "LED is now OFF" elif command == "/status": reply = Bridge.call("get_status", "") elif command == "/help" or command == "/start": reply = HELP_TEXT else: reply = "Unknown command. Send /help for a list of commands." print(command + " from chat " + str(chat_id) + " -> " + reply) send_message(chat_id, reply) def main(): print("Telegram bot started. Waiting for commands...") offset = None while True: try: params = {"timeout": 20, "allowed_updates": ["message"]} if offset is not None: params["offset"] = offset result = telegram_get("getUpdates", params) for update in result.get("result", []): offset = update["update_id"] + 1 msg = update.get("message", {}) chat_id = msg.get("chat", {}).get("id") text = msg.get("text", "").strip() # Strip bot username suffix (e.g. /toggle_led@my_bot) command = text.split("@")[0].lower() handle_command(chat_id, command) except Exception as e: print("Error: " + str(e)) time.sleep(5) main()

Schnelle Schritte

Erstes Mal mit Arduino UNO Q? Folgen Sie dem Erste Schritte mit Arduino UNO Q-Tutorial, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.

  • Verbinden: Stecken Sie die Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer ein.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihre Arduino UNO Q erkennt. Dies kann beim ersten Start einige Minuten dauern.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.
Neue App im Arduino App Lab auf Arduino UNO Q erstellen
  • App benennen: TelegramBot
  • Klicken Sie auf Erstellen, um zu bestätigen.
  • Sie sehen einen Satz von Ordnern und Dateien, die in Ihrer neuen App generiert werden.
  • Fügen Sie die MCU-Skizze ein: Öffnen Sie sketch/sketch.ino und ersetzen Sie seinen Inhalt durch den MCU-Code oben.
  • Fügen Sie das Python-Skript ein: Öffnen Sie python/main.py. Wählen Sie den gesamten vorhandenen Inhalt aus und löschen Sie ihn, fügen Sie dann den Python-Code oben ein. Der Standardvorlagecode muss vollständig ersetzt werden — nicht anfügen.
  • Legen Sie Ihre Anmeldedaten fest: Ersetzen Sie im Python-Code BOT_TOKEN durch das Bot-Token, das Sie von BotFather kopiert haben.
    • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
    Add sketch library in Arduino App Lab on Arduino UNO Q
    • Search for Arduino_RouterBridge created by Arduino and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    Arduino_RouterBridge Arduino

    This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

    0.4.1
    Install
    More Info
    • Upload: Klicken Sie auf die Schaltfläche Ausführen im Arduino App Lab, um auf den STM32 zu kompilieren und hochzuladen, starten Sie dann das Python-Skript.
    Klicken Sie auf die Schaltfläche Ausführen im Arduino App Lab auf Arduino UNO Q
    • Pro-Tipp: Lassen Sie Arduino App Lab im Hintergrund laufen. Das Python-Skript muss ausgeführt werden, damit Telegram-Befehle die MCU erreichen.

    App Lab Konsolenausgabe

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Message (Enter to send a message to "Newbiely" on usb(2820070321))
    New Line
    9600 baud
    [2026-05-08 10:00:01] Telegram Bot Bridge ready [2026-05-08 10:00:04] LED turned ON [2026-05-08 10:00:09] Status requested: MCU is running. LED: ON [2026-05-08 10:00:15] LED turned OFF
    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-05-08 10:00:01] Telegram bot started. Waiting for commands... [2026-05-08 10:00:04] /toggle_led from chat 987654321 -> LED is now ON [2026-05-08 10:00:09] /status from chat 987654321 -> MCU is running. LED: ON [2026-05-08 10:00:15] /toggle_led from chat 987654321 -> LED is now OFF

    Verfügbare Befehle

    Sobald der Bot läuft, senden Sie diese Befehle an Ihren Bot in Telegram:

    Befehl Was es tut
    /toggle_led Schaltet die eingebaute LED ein oder aus und antwortet mit dem neuen Status
    /led_on Schaltet die LED ein
    /led_off Schaltet die LED aus
    /status Gibt den aktuellen MCU-Status zurück (Betriebszeit und LED-Status)
    /help Listet alle verfügbaren Befehle auf

    Test

    Stellen Sie sicher, dass die MCU Bridge-Skizze hochgeladen ist und das Python-Skript im Arduino App Lab läuft. Öffnen Sie dann Telegram, suchen Sie Ihren Bot nach seinem Benutzernamen und senden Sie Befehle:

    Telegram
    Telegram 12:45
    Welcome to Telegram!
    ArduinoBot 10:19
    Chatting with Arduino...
    telegram-botfather
    BotFather Yesterday
    Your bot has been created.

    ArduinoBot

    bot
    Today
    /toggle_led
    10:15 AM ✓✓
    LED is now ON
    10:16 AM
    /status
    10:17 AM ✓✓
    MCU is running. LED: ON
    10:18 AM
    /toggle_led
    10:19 AM ✓✓
    LED is now OFF
    10:20 AM
    /help
    10:21 AM ✓✓
    Available commands: /toggle_led - Toggle the LED /led_on - Turn LED on /led_off - Turn LED off /status - Get MCU status /help - Show this message
    10:22 AM

    Wenn der Bot nicht antwortet, überprüfen Sie, dass:

    • Arduino App Lab offen ist und das Python-Skript ausgeführt wird
    • Arduino UNO Q mit Wi-Fi verbunden ist
    • BOT_TOKEN im Python-Code korrekt eingestellt ist
    • Sie von dem Telegram-Konto aus schreiben, dessen Chat-ID Sie im Code eingestellt haben

    Bot erweitern

    Um weitere Hardwaresteuerungen hinzuzufügen, folgen Sie diesen Schritten:

    • MCU-Seite: Fügen Sie einen neuen Bridge.provide_safe()-Aufruf in der MCU-Skizze für die neue Funktion hinzu.
    • Python-Seite: Fügen Sie einen neuen elif command == "/your_command":-Block im Python-Skript hinzu, rufen Sie Bridge.call("your_function", "") auf und senden Sie die Antwort.

    Beispiel: Um ein Relaissteuerungsbefehl hinzuzufügen, stellen Sie toggle_relay auf der MCU bereit, fügen Sie dies dann zum Python-Skript hinzu:

    elif command == "/toggle_relay": result = bridge.call("toggle_relay", "") bot.send_message(chat_id, result)

    Fügen Sie dann /toggle_relay — Relais umschalten zum Text der Antwort /help hinzu.

    Projektideen

    Sie können dies auf jede Hardware ausweiten, die mit der Arduino UNO Q MCU verbunden ist:

    • Remote LED-Streifen-Steuerung: Senden Sie /led_on und /led_off, um dekorative Beleuchtung von überall ein- und auszuschalten
    • Sensor-Dashboard: Verwenden Sie /status, um auf Anforderung Temperatur-, Feuchtigkeits- oder Bewegungssensoren-Messwerte zu erhalten
    • Türöffner oder Tor-Steuerung: Senden Sie /unlock, um ein Relais auszulösen, das ein elektromagnetisches Schloss öffnet
    • Alarmsystem: Kombinieren Sie Polling mit periodischen MCU-Statusprüfungen, um Ihnen eine Telegram-Nachricht zu senden, wenn ein Schwellwert überschritten wird (z. B. Temperatur zu hoch)
    • Multi-Command-Panel: Fügen Sie Befehle für mehrere Geräte hinzu und steuern Sie Ihr ganzes Labor aus einem Telegram-Chat

    Fordern Sie sich selbst heraus

    Bereit, weiterzugehen?

    • Einfach: Fügen Sie einen /blink-Befehl hinzu, der die LED dreimal blinken lässt und antwortet "Erledigt!", wenn fertig.
    • Mittel: Fügen Sie einen Passwort-Check hinzu — der Bot antwortet nur auf Befehle, die mit einem geheimen Schlüsselwort beginnen (z. B. /abc123 toggle_led), sodass selbst wenn jemand Ihren Bot-Benutzernamen kennt, die Hardware ohne Passwort nicht gesteuert werden kann.
    • Fortgeschritten: Verbinden Sie einen Temperatursensor mit der MCU, stellen Sie ihn über die Bridge bereit, fügen Sie einen /temperature-Befehl hinzu und konfigurieren Sie den Bot, um Ihnen eine automatische Benachrichtigung zu senden, wenn die Temperatur einen festgelegten Schwellwert überschreitet.

    ※ UNSERE NACHRICHTEN

    • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!