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. | ||