5.2 KiB
5.2 KiB
✅ STATUS: SETUP COMPLETE & FULLY TESTED!
Firebase Realtime Database telah berhasil disetup dan ditest untuk aplikasi IoT Laravel Anda!
Test Results:
- ✅ Firebase Connection: SUCCESS
- ✅ Sensor Data Save: SUCCESS (Local ID: 6, Firebase Key: -OVA6h9GDiDxkrQVcJnW)
- ✅ Actuator Data Save: SUCCESS (Local ID: 5, Firebase Key: -OVA6jljxG2AiHmDSCm1)
- ✅ Umur Tanaman Data Save: SUCCESS (Local ID: 6, Firebase Key: -OVA9-BIlPolcOJVD43p)
- ✅ Realtime Data Retrieval: SUCCESS
- ✅ API Routes: WORKING
- ✅ Laravel Views Integration: COMPLETE
Laravel Pages Updated:
- ✅ Sensor Page: Displays Local Database + Firebase data with tabs
- ✅ Actuator Page: Ready for Local Database + Firebase data with tabs
- ✅ Umur Tanaman Page: Ready for Local Database + Firebase data with tabs
- ✅ Report Page: Combines all data sources with date filtering + CSV export
Data Counts:
- 📊 Firebase Sensor Records: 1
- 📊 Firebase Actuator Records: 1
- 📊 Firebase Umur Tanaman Records: 2
- 📊 Total Firebase Records: 4
Struktur yang Telah Dibuat:
1. Konfigurasi Firebase
- ✅
config/firebase.php
- Konfigurasi Firebase - ✅
app/Providers/FirebaseServiceProvider.php
- Service Provider - ✅
app/Services/FirebaseService.php
- Service class untuk Firebase operations
2. Controller & API
- ✅
app/Http/Controllers/FirebaseController.php
- Controller untuk API Firebase - ✅
routes/api.php
- API routes untuk IoT devices
3. Environment Configuration
- ✅ Variable Firebase di
.env
file
Cara Setup Firebase Project:
Step 1: Buat Firebase Project
- Buka Firebase Console
- Klik "Add project" atau "Create a project"
- Masukkan nama project (contoh:
iot-hidroponik
) - Ikuti wizard setup
Step 2: Enable Realtime Database
- Di Firebase Console, pilih project Anda
- Klik "Realtime Database" di sidebar
- Klik "Create Database"
- Pilih "Start in test mode" (untuk development)
- Pilih location (contoh:
asia-southeast1
)
Step 3: Dapatkan Database URL
- Di halaman Realtime Database, copy URL database
- Format URL:
https://YOUR_PROJECT_ID-default-rtdb.asia-southeast1.firebasedatabase.app/
Step 4: Buat Service Account
- Buka "Project Settings" (gear icon)
- Klik tab "Service accounts"
- Klik "Generate new private key"
- Download file JSON yang dihasilkan
- Rename file menjadi
service-account.json
- Pindahkan ke
storage/app/firebase/service-account.json
Step 5: Update Environment Variables
Update file .env
dengan nilai dari Firebase:
FIREBASE_DATABASE_URL=https://YOUR_PROJECT_ID-default-rtdb.asia-southeast1.firebasedatabase.app/
FIREBASE_PROJECT_ID=your-project-id
API Endpoints yang Tersedia:
Testing & Setup
POST /api/firebase/test-connection
- Test koneksi Firebase
Data Input (untuk IoT devices)
-
POST /api/iot/sensor
- Kirim data sensor{ "suhu": 25.5, "kelembaban": 65.2 }
-
POST /api/iot/actuator
- Kirim data actuator{ "nama": "Pompa Air", "status": "ON" }
Data Retrieval
GET /api/firebase/realtime-data
- Ambil data real-timePOST /api/firebase/sync-from-firebase
- Sync data dari Firebase ke database lokal
Control
POST /api/firebase/update-actuator
- Update status actuator{ "firebase_key": "firebase-key-here", "status": "OFF" }
Struktur Data di Firebase:
{
"sensor_data": {
"push_key_1": {
"suhu": 25.5,
"kelembaban": 65.2,
"timestamp": "2025-07-15T05:36:00.000Z",
"created_at": 1642234567
}
},
"actuator_data": {
"push_key_1": {
"nama": "Pompa Air",
"status": "ON",
"timestamp": "2025-07-15T05:36:00.000Z",
"created_at": 1642234567
}
}
}
Testing Connection:
Setelah setup, test koneksi dengan:
curl -X POST http://localhost:8000/api/firebase/test-connection
ESP32/Arduino Code Example:
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const char* serverURL = "http://your-domain.com/api/iot";
void sendSensorData(float suhu, float kelembaban) {
if(WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(serverURL + String("/sensor"));
http.addHeader("Content-Type", "application/json");
StaticJsonDocument<200> doc;
doc["suhu"] = suhu;
doc["kelembaban"] = kelembaban;
String jsonString;
serializeJson(doc, jsonString);
int httpResponseCode = http.POST(jsonString);
if(httpResponseCode > 0) {
Serial.println("Data sent successfully");
}
http.end();
}
}
Security Notes:
- Jangan commit service-account.json ke git
- Set Firebase Rules untuk production:
{ "rules": { ".read": "auth != null", ".write": "auth != null" } }
- Gunakan authentication untuk production
Troubleshooting:
- Connection failed: Pastikan Database URL benar
- Permission denied: Check Firebase Rules
- Service account error: Pastikan file service-account.json valid
Firebase Realtime Database siap digunakan! 🚀