Dự án này đã được chuyển đổi hoàn toàn từ Python sang Next.js với TypeScript, tích hợp đầy đủ API Xiaomi Mijia để điều khiển thiết bị thông minh.
types.ts- Định nghĩa các interface và type cho Mijia APIauth.ts- Xử lý đăng nhập (QR code và tài khoản/mật khẩu)api.ts- API chính để giao tiếp với Mijia servicesdevice.ts- Wrapper class để điều khiển thiết bị dễ dàngindex.ts- Export tất cả modules
/api/devices- Lấy danh sách thiết bị/api/devices/[id]- Cập nhật và điều khiển thiết bị/api/homes- Lấy danh sách nhà/phòng/api/scenes/[homeId]- Lấy danh sách kịch bản/api/scenes/[sceneId]/run- Thực thi kịch bản
- QR Code: Quét mã QR bằng ứng dụng Mi Home
- Tài khoản/Mật khẩu: Đăng nhập trực tiếp với thông tin Mi Home
- Xem danh sách thiết bị thực tế từ Mi Home
- Điều khiển thiết bị (bật/tắt, điều chỉnh độ sáng, màu sắc, v.v.)
- Cập nhật thuộc tính thiết bị real-time
- Xem danh sách kịch bản từ Mi Home
- Thực thi kịch bản tự động
- Quản lý trạng thái kịch bản
- Sử dụng Shadcn UI và Tailwind CSS
- Responsive design
- Dark/Light mode support
- Real-time updates
npm installnpm run dev- Mở trình duyệt tại
http://localhost:3001 - Đăng nhập bằng QR code hoặc tài khoản Mi Home
- Bắt đầu điều khiển thiết bị
import { mijiaAuth } from '@/lib/mijia';
// Đăng nhập bằng tài khoản
const session = await mijiaAuth.login('username', 'password');
// Đăng nhập bằng QR
const session = await mijiaAuth.QRlogin();import { mijiaAPI, createMijiaDevice } from '@/lib/mijia';
// Lấy danh sách thiết bị
const devices = await mijiaAPI.get_devices_list();
// Tạo device wrapper
const device = await createMijiaDeviceByName(mijiaAPI, 'Đèn phòng khách');
// Điều khiển thiết bị
await device.turnOn();
await device.setBrightness(80);
await device.setColor('#ff0000');// Lấy danh sách kịch bản
const scenes = await mijiaAPI.get_scenes_list('home_id');
// Thực thi kịch bản
await mijiaAPI.run_scene('scene_id');Tạo file .env.local:
# Mijia API Configuration
MIJIA_API_BASE_URL=https://api.io.mi.com/app
MIJIA_AUTH_BASE_URL=https://account.xiaomi.com
# Next.js Configuration
NEXT_PUBLIC_APP_URL=http://localhost:3001- Bảo mật: Không lưu trữ thông tin đăng nhập trong localStorage
- Rate Limiting: API Mijia có giới hạn request, cần implement caching
- Error Handling: Luôn xử lý lỗi khi gọi API
- Authentication: Cần refresh token định kỳ
- Kiểm tra tài khoản Mi Home có hợp lệ
- Đảm bảo thiết bị có kết nối internet
- Thử đăng nhập bằng QR code thay vì tài khoản
- Kiểm tra thiết bị có online không
- Đảm bảo thiết bị được kết nối với Mi Home
- Kiểm tra quyền truy cập thiết bị
- Kiểm tra kết nối internet
- Xem console log để debug
- Thử refresh trang
- Cập nhật interface trong
types.ts - Thêm properties trong
device.ts - Cập nhật UI components
- Tạo scheduler service
- Implement rule engine
- Thêm UI để tạo rules
- Tích hợp WebSocket cho real-time updates
- Thêm push notification
- Implement email alerts
- Developer: ScodeVN
- Phone/Zalo: 0582392345
- GitHub: https://github.com/scodevn2025/mijia-api
GPL-3.0 License