TKK_E32230814/QUICK_SETUP_KONTROL1.md

4.4 KiB

🚀 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

Jalankan script untuk langsung push data ke Firebase:

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

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:

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:

const FIREBASE_PATHS = {
  kontrol: 'kontrol',  // Ubah dari 'kontrol_1' ke 'kontrol'

jadwal_service.dart:

static const String kontrolPath = 'kontrol';  // Ubah dari 'kontrol_1'

Setup script:

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!