AI Hunter
Member
Hôm nay chúng ta sẽ biến Jarvis từ một trợ lý "gọi dạ bảo vâng" thành một người quản gia chủ động, biết báo cáo tình hình khẩn cấp.
Giải pháp đơn giản và hiệu quả nhất là tích hợp Telegram Bot. Nó miễn phí, nhanh, và bạn có thể nhận thông báo trên cả điện thoại lẫn máy tính.
Trước khi đụng vào code, chúng ta cần tạo một con bot và lấy ID của bạn để Jarvis biết phải nhắn cho ai.
Bước 1: Tạo Bot và lấy Token
Bước 2: Lấy Chat ID của bạn
Jarvis cần biết địa chỉ "nhà" (Chat ID) của bạn trên Telegram để gửi thư.
Chúng ta sẽ thêm một chức năng "gửi tin nhắn" vào bộ não của Jarvis.
Để đơn giản, ta dùng thư viện
Mở file
Giải thích:
Chúng ta cần cung cấp Token và Chat ID cho container Backend qua biến môi trường.
Mở file
Bước 1: Khởi động lại hệ thống
Bước 2: Test thử cảnh báo
Chúng ta sẽ giả lập việc cảm biến phòng Server báo nhiệt độ cao.
Bạn có thể dùng Postman hoặc đơn giản là mở Terminal và dùng lệnh
Kết quả:
Điện thoại của bạn sẽ rung lên "ting ting". Một tin nhắn từ con bot Jarvis sẽ xuất hiện:
Tuyệt vời! Jarvis đã biết "kêu cứu" khi gặp sự cố.
Giờ đây, Jarvis đã trở thành một hệ thống giám sát thực thụ, hoạt động 24/7 và luôn giữ liên lạc với bạn. Bạn có thể mở rộng tính năng này để:
Giải pháp đơn giản và hiệu quả nhất là tích hợp Telegram Bot. Nó miễn phí, nhanh, và bạn có thể nhận thông báo trên cả điện thoại lẫn máy tính.
1. Chuẩn bị: Tạo Bot Telegram
Trước khi đụng vào code, chúng ta cần tạo một con bot và lấy ID của bạn để Jarvis biết phải nhắn cho ai.
Bước 1: Tạo Bot và lấy Token
- Mở Telegram, tìm kiếm user @BotFather (Ông trùm quản lý bot).
- Chat lệnh
/newbotvà làm theo hướng dẫn đặt tên. - Sau khi xong, BotFather sẽ đưa cho bạn một chuỗi ký tự dài màu đỏ. Đó là BOT_TOKEN. Hãy giữ nó bí mật!
Bước 2: Lấy Chat ID của bạn
Jarvis cần biết địa chỉ "nhà" (Chat ID) của bạn trên Telegram để gửi thư.
- Tìm kiếm con bot bạn vừa tạo trên Telegram và nhấn Start (hoặc gửi một tin nhắn bất kỳ cho nó).
- Mở trình duyệt, truy cập đường link sau (thay Token của bạn vào):
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - Bạn sẽ thấy một chuỗi JSON. Tìm đoạn
"chat":{"id": 123456789, ...}. Con số123456789chính là CHAT_ID của bạn.
2. Cập nhật Backend (FastAPI)
Chúng ta sẽ thêm một chức năng "gửi tin nhắn" vào bộ não của Jarvis.
Để đơn giản, ta dùng thư viện
requests để gọi API của Telegram.Mở file
backend/server.py và thêm code:
Python:
import requests
import os
from fastapi import FastAPI, HTTPException, BackgroundTasks
from pydantic import BaseModel
app = FastAPI()
# Lấy cấu hình từ biến môi trường
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
TELEGRAM_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID")
# --- HÀM GỬI TIN NHẮN TELEGRAM ---
def send_telegram_message(message: str):
if not TELEGRAM_BOT_TOKEN or not TELEGRAM_CHAT_ID:
print("⚠️ Chưa cấu hình Telegram Token hoặc Chat ID")
return False
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
payload = {
"chat_id": TELEGRAM_CHAT_ID,
"text": f"🤖 [JARVIS ALERT]\n\n{message}"
}
try:
response = requests.post(url, json=payload, timeout=5)
return response.status_code == 200
except Exception as e:
print(f"Lỗi gửi Telegram: {e}")
return False
# --- VÍ DỤ: API MÔ PHỎNG CẢM BIẾN NHIỆT ĐỘ ---
class SensorData(BaseModel):
location: str
temperature: float
@app.post("/sensor/update")
async def update_sensor(data: SensorData, background_tasks: BackgroundTasks):
# Giả lập logic: Nếu nhiệt độ > 40 độ thì báo động
if data.temperature > 40:
alert_msg = f"🔥 CẢNH BÁO NHIỆT ĐỘ!\nKhu vực: {data.location}\nNhiệt độ: {data.temperature}°C"
# Dùng BackgroundTasks để gửi tin nhắn ngầm, không làm chậm API
background_tasks.add_task(send_telegram_message, alert_msg)
return {"status": "alert_sent"}
return {"status": "ok"}
Giải thích:
- Hàm
send_telegram_message: Đóng gói tin nhắn và gửi POST request lên API của Telegram. - Endpoint
/sensor/update: Đây là ví dụ mô phỏng. Trong thực tế, các thiết bị Smart Home của bạn sẽ gọi vào API này để báo cáo số liệu. Nếu có bất thường, Jarvis sẽ kích hoạt chức năng gửi tin nhắn.
3. Cập nhật Docker Compose
Chúng ta cần cung cấp Token và Chat ID cho container Backend qua biến môi trường.
Mở file
docker-compose.yml và thêm vào section backend:
Mã:
version: '3.8'
services:
backend:
build: ./backend
ports:
- "8000:8000"
environment:
- JARVIS_API_SECRET=sieumatkhau123456
# --- THÊM CẤU HÌNH TELEGRAM ---
- TELEGRAM_BOT_TOKEN=123456789:AAHxyz... # Thay token của bạn
- TELEGRAM_CHAT_ID=987654321 # Thay chat ID của bạn
# ... các biến khác
4. Trải nghiệm
Bước 1: Khởi động lại hệ thống
Mã:
docker-compose down
docker-compose up --build -d
Bước 2: Test thử cảnh báo
Chúng ta sẽ giả lập việc cảm biến phòng Server báo nhiệt độ cao.
Bạn có thể dùng Postman hoặc đơn giản là mở Terminal và dùng lệnh
curl:
Mã:
curl -X POST http://localhost:8000/sensor/update \
-H "Content-Type: application/json" \
-d '{"location": "Phòng Server", "temperature": 45.5}'
Kết quả:
Điện thoại của bạn sẽ rung lên "ting ting". Một tin nhắn từ con bot Jarvis sẽ xuất hiện:
Mã:
🤖 [JARVIS ALERT]
🔥 CẢNH BÁO NHIỆT ĐỘ!
Khu vực: Phòng Server
Nhiệt độ: 45.5°C
Tuyệt vời! Jarvis đã biết "kêu cứu" khi gặp sự cố.
Tổng kết
Giờ đây, Jarvis đã trở thành một hệ thống giám sát thực thụ, hoạt động 24/7 và luôn giữ liên lạc với bạn. Bạn có thể mở rộng tính năng này để:
- Báo cáo tóm tắt tin tức mỗi buổi sáng.
- Nhắc nhở lịch trình quan trọng.
- Gửi ảnh chụp từ camera an ninh khi phát hiện chuyển động (kết hợp với Vision).
Bài viết liên quan