186 lines
4.4 KiB
Markdown
186 lines
4.4 KiB
Markdown
# 🚀 Quick Setup Firebase Jadwal ke kontrol_1
|
|
|
|
## ✅ Yang Sudah Diupdate
|
|
|
|
1. ✅ **Worker.js** - Sekarang pakai path `/kontrol_1`
|
|
2. ✅ **jadwal_service.dart** - Flutter app pakai path `/kontrol_1`
|
|
3. ✅ **Setup script** - Script untuk push data otomatis ke Firebase
|
|
|
|
## 🔥 Cara Setup Data ke Firebase
|
|
|
|
### Opsi 1: Via Script (Recommended - Otomatis)
|
|
|
|
Jalankan script untuk langsung push data ke Firebase:
|
|
|
|
```bash
|
|
cd f:\ApsGo\ApsGo\railway-worker
|
|
node setup-firebase-jadwal.js
|
|
```
|
|
|
|
Script akan:
|
|
- ✅ Connect ke Firebase kamu
|
|
- ✅ Push data jadwal ke `/kontrol_1`
|
|
- ✅ Setup 5 jadwal (3 aktif, 2 nonaktif)
|
|
- ✅ Log summary hasil setup
|
|
|
|
**Output yang diharapkan:**
|
|
```
|
|
🚀 Starting Firebase setup...
|
|
📍 Path: /kontrol_1
|
|
✅ Firebase setup completed successfully!
|
|
📊 Summary:
|
|
- Path: /kontrol_1
|
|
- Mode Waktu: ENABLED
|
|
- Total Jadwal: 5
|
|
- Jadwal Aktif: 3
|
|
|
|
📝 Jadwal yang di-setup:
|
|
✅ jadwal_1: 08:00 → Pot [1, 2, 3] (60s)
|
|
✅ jadwal_2: 09:00 → Pot [4, 5] (45s)
|
|
✅ jadwal_3: 16:00 → Pot [1, 2, 3, 4, 5] (30s)
|
|
❌ jadwal_4: 12:00 → Pot [2, 4] (40s)
|
|
❌ jadwal_5: 18:00 → Pot [1, 5] (50s)
|
|
|
|
🎉 Done! Data sudah tersimpan di Firebase.
|
|
```
|
|
|
|
### Opsi 2: Manual via Firebase Console
|
|
|
|
1. Buka [Firebase Console](https://console.firebase.google.com)
|
|
2. Pilih project ApsGo
|
|
3. Klik **Realtime Database**
|
|
4. Klik `+` untuk add new node
|
|
5. Name: `kontrol_1`
|
|
6. Copy-paste JSON dari `firebase-structure-complete.json`
|
|
|
|
## 📱 Test Flutter App
|
|
|
|
Setelah data di-setup, test Flutter app:
|
|
|
|
```bash
|
|
cd f:\ApsGo\ApsGo
|
|
flutter pub get
|
|
flutter run
|
|
```
|
|
|
|
**Test checklist:**
|
|
- [ ] Buka tab **Kontrol**
|
|
- [ ] Tap button **Waktu**
|
|
- [ ] Lihat list jadwal (harus ada 5 jadwal)
|
|
- [ ] Toggle mode waktu on/off
|
|
- [ ] Tambah jadwal baru
|
|
- [ ] Edit jadwal existing
|
|
- [ ] Delete jadwal
|
|
|
|
## 🔄 Deploy ke Railway
|
|
|
|
Setelah verify lokal OK, push ke Railway:
|
|
|
|
```bash
|
|
cd railway-worker
|
|
git add .
|
|
git commit -m "feat: Update to use kontrol_1 path + flexible jadwal system"
|
|
git push origin main
|
|
```
|
|
|
|
Railway akan auto-deploy dalam 2-3 menit.
|
|
|
|
## 📊 Verify di Railway Logs
|
|
|
|
Setelah deploy, check logs Railway:
|
|
|
|
```
|
|
🚀 Starting ApsGo Railway Worker...
|
|
📍 Kontrol Path: /kontrol_1
|
|
✅ Firebase /kontrol_1 readable - waktu mode: ENABLED
|
|
📋 Total Jadwal: 3
|
|
✅ jadwal_1: 08:00 → Pot [1, 2, 3]
|
|
✅ jadwal_2: 09:00 → Pot [4, 5]
|
|
✅ jadwal_3: 16:00 → Pot [1, 2, 3, 4, 5]
|
|
```
|
|
|
|
## ⚠️ Troubleshooting
|
|
|
|
### Script error: "Firebase initialization failed"
|
|
|
|
**Check:**
|
|
1. File `.env` ada di folder `railway-worker`?
|
|
2. Environment variables lengkap?
|
|
```
|
|
FIREBASE_PROJECT_ID=...
|
|
FIREBASE_CLIENT_EMAIL=...
|
|
FIREBASE_PRIVATE_KEY=...
|
|
FIREBASE_DATABASE_URL=...
|
|
```
|
|
|
|
### Flutter app: "No jadwal found"
|
|
|
|
**Check:**
|
|
1. Path di `jadwal_service.dart` = `kontrol_1`? ✅ (sudah diupdate)
|
|
2. Data sudah di-push ke Firebase?
|
|
3. Firebase rules allow read?
|
|
|
|
### Worker tidak detect jadwal
|
|
|
|
**Check:**
|
|
1. Worker sudah redeploy dengan code terbaru?
|
|
2. Path di worker = `kontrol_1`? ✅ (sudah diupdate)
|
|
3. Railway logs show path `/kontrol_1`?
|
|
|
|
## 🔧 Ubah Path Kembali ke /kontrol
|
|
|
|
Jika mau pakai path `/kontrol` (bukan `/kontrol_1`):
|
|
|
|
**Worker.js:**
|
|
```javascript
|
|
const FIREBASE_PATHS = {
|
|
kontrol: 'kontrol', // Ubah dari 'kontrol_1' ke 'kontrol'
|
|
```
|
|
|
|
**jadwal_service.dart:**
|
|
```dart
|
|
static const String kontrolPath = 'kontrol'; // Ubah dari 'kontrol_1'
|
|
```
|
|
|
|
**Setup script:**
|
|
```javascript
|
|
await db.ref('kontrol').set(kontrolData); // Ubah dari 'kontrol_1'
|
|
```
|
|
|
|
## 📋 Summary Changes
|
|
|
|
**Files modified:**
|
|
- ✅ `railway-worker/worker.js` - Added FIREBASE_PATHS constant, updated all refs
|
|
- ✅ `lib/services/jadwal_service.dart` - Updated path to kontrol_1
|
|
- ✅ `railway-worker/setup-firebase-jadwal.js` - New script untuk setup
|
|
|
|
**Data structure:**
|
|
```
|
|
Firebase Root
|
|
├── aktuator/
|
|
├── data/
|
|
├── history/
|
|
├── kontrol/ ← Your existing data (unchanged)
|
|
└── kontrol_1/ ← New data with flexible jadwal
|
|
├── waktu: true
|
|
├── sensor: false
|
|
├── jadwal_1/
|
|
├── jadwal_2/
|
|
└── jadwal_3/
|
|
```
|
|
|
|
## 🎯 Next Steps
|
|
|
|
1. ✅ Run setup script: `node setup-firebase-jadwal.js`
|
|
2. ✅ Verify data di Firebase Console
|
|
3. ✅ Test Flutter app locally
|
|
4. ✅ Commit & push to Railway
|
|
5. ✅ Monitor Railway logs
|
|
6. ✅ Test jadwal trigger di waktu yang ditentukan
|
|
|
|
---
|
|
|
|
**Ready to go!** 🚀🌱
|
|
|
|
Jika ada error atau pertanyaan, check logs atau tanya!
|