This shows you the differences between two versions of the page.
priot:laboratoare:08 [2024/10/01 17:01] 127.0.0.1 external edit |
priot:laboratoare:08 [2024/11/28 20:13] (current) jan.vaduva [Teorie] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 08. ===== | + | ===== 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 ==== | ||
+ | |||
+ | <code send_msg.py> | ||
+ | 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!") | ||
+ | |||
+ | |||
+ | </code> | ||
+ | |||
+ | ==== 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. | ||