Laboratorul 08: Trimiterea de mesaje Telegram cu Raspberry Pi Pico W

Scopul Laboratorului:

Obiective:

  • Înțelegerea integrării unui microcontroller (Raspberry Pi Pico W) cu servicii de mesagerie prin internet.
  • Configurarea unui bot Telegram și utilizarea acestuia pentru trimiterea mesajelor.
  • Implementarea unei aplicații simple care trimite mesaje automate pe baza unui prag de temperatură.

Materiale necesare:

  • Raspberry Pi Pico W.
  • Cabluri de conectare.
  • Un cont Telegram pentru crearea unui bot.

Teorie

Raspberry Pi Pico W:

Raspberry Pi Pico W este o versiune a Pico cu conectivitate Wi-Fi, perfectă pentru proiecte IoT (Internet of Things).

Conexiunea Wi-Fi permite comunicarea cu servicii externe, cum ar fi Telegram.

Telegram Bot API:

Telegram oferă un API simplu care permite interacțiunea cu utilizatorii prin intermediul boturilor.

Funcții importante ale API-ului:

  • Trimiterea de mesaje: Printr-un apel POST la endpoint-ul `sendMessage`.
  • Obținerea de mesaje noi: Prin apelul `getUpdates`.

Avantaje:

  • Permite notificări în timp real.
  • Interfață simplă, bazată pe HTTP.

Partea 1: Configurarea botului Telegram

Crearea unui bot:

  • Deschide Telegram și contactează @BotFather.
  • Folosește comanda /newbot pentru a crea un bot.
  • Alege un nume și un username pentru bot.
  • Notează-ți token-ul API furnizat de BotFather.

Obtinerea chat_id:

  • Trimite un mesaj botului (de exemplu, Hello).
  • Accesează URL-ul: https://api.telegram.org/bot<TOKEN>/getUpdates.
  • Găsește chat_id în răspuns.

Partea 2: Configurarea conexiunii Wi-Fi pe Pico W

import network
import requests  # Pentru cereri HTTP
import time
import machine  # Pentru citirea senzorului intern
 
# Configurare Wi-Fi
SSID = 'Nume_Retea'       # Introdu numele retelei Wi-Fi
PASSWORD = 'Parola_Retea'  # Introdu parola retelei
 
# Configurare Telegram
bot_token = 'TOKEN_BOT'  # Introdu token-ul botului tau
chat_id = 'ID_CHAT'      # Introdu ID-ul de chat
 
def connect_to_wifi():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('Connecting to Wi-Fi...')
        wlan.connect(SSID, PASSWORD)
        while not wlan.isconnected():
            time.sleep(1)
    print('Connected to Wi-Fi:', wlan.ifconfig())
 
def send_telegram_message(message):
    url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
    payload = {"chat_id": chat_id, "text": message}
    try:
        response = requests.post(url, json=payload)
        response.close()
        print("Message sent successfully!")
    except Exception as e:
        print(f"Error sending message: {e}")
 
# Conectare la Wi-Fi
connect_to_wifi()
 
# Exemplu simplu: Trimitere mesaj
send_telegram_message("Hello, World!")

Exercitii

  • Modificați scriptul de mai sus pentru a trimite mesaje de alertă pe Telegram dacă temperatura depășește 30°C.
  • Scrie un program Python care se conectează la o rețea Wi-Fi, obține prețul Bitcoin în USD folosind API-ul Binance https://api.coindesk.com/v1/bpi/currentprice.json, verifică dacă prețul depășește un prag definit, trimite o alertă pe Telegram cu prețul curent și repetă procesul continuu.
priot/laboratoare/08.txt · Last modified: 2024/11/28 20:13 by jan.vaduva
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0