# Implementasi Smart IoT & Integrasi WhatsApp (Milestone 5)

Kita telah sampai di tahap paling modern dan diferensiatif dari visi sistem Anda: **Smart Farming**. Milestone ini menjembatani gap antara perangkat keras (Hardware/Mesin di Kandang) dengan peranti lunak (Aplikasi Backend) tanpa campur tangan manusia.

Sistem akan dikonfigurasi untuk siap mendengarkan laporan sensor (IoT) 24/7 dan memberikan respon siaga (Auto-Alert WhatsApp) jika parameternya abnormal!

## User Review Required

> [!IMPORTANT]
> Milestone ini memiliki interaksi Webhook langsung tanpa form login. Backend akan membuka gerbang `POST` pasif yang bertugas menyedot ribuan data sensor. Skema logikanya perlu kita sepakati.

## Proposed Changes

### 1. Struktur Database: Modul IoT Log
Membangun tabel pembuangan riwayat metrik mesin.

#### [NEW] `database/migrations/xxxx_create_sensor_logs_table.php`
Akan mendata seluruh log mesin (*raw ingestion*):
- `coop_id` (Relasi dari hardware ini dipasang di kandang mana).
- Parameter Udara: `temp_celsius`, `humidity_pct`, `ammonia_ppm`.
- Status Alat: `fan_voltage_status` (Apakah kipas sedang nyala/mati).

### 2. Endpoint Data Pipeline (Hardware ke Cloud)
Membangun Controller gerbang utama khusus Robot/Mesin.

#### [NEW] `IotPipelineController.php`
- Membuat API `POST /api/webhook/iot-sensors`.
- Men-sinkronisasikan format JSON dari ESP32 (Suhu, Amonia, Kelembaban).
- **Protokol Keamanan**: Tidak menggunakan JWT karena mesin sulit menjaga status Token dinamis, melainkan sistem keamanan *Hardcoded Static API Key* (seperti `Authorization: Sensor_Key_XXX`).

### 3. Sistem Peringatan Fajar / Malam (WhatsApp Engine Event)
Aplikasi bisa "berteriak" kepada Manajer jika kondisi gawat.

#### [NEW] `app/Events/CriticalConditionDetected.php` & `app/Listeners/SendWhatsAppAlert.php`
- Menerapkan arsitektur standar Laravel berbasis *Events & Listeners* (Asynchronus / Background).
- Di dalam controller Webhook IoT, logika disisipkan: *Jika suhu yang masuk > 34 Derajat Celcius ATAU < 22 Derajat, tembakkan Event Critical.*
- Skenario Event: *Listener* akan tereksekusi di bawah layar, memanggil CURL/HTTP Post ke layanan **WhatsApp Gateway Fonnte** (*Seperti yang pernah kita pakai pada proyek Koperasi Merah Putih Anda*).
- Kami akan mendarapkan struktur layanan API Broadcast Notification yang memuat format pesan: *"🚨 [DARURAT IoT] Kandang A1 kepanasan (35°C)! Mohon periksa nyala genset kipas!"*

---

## Open Questions

> [!WARNING]
> Mohon konfirmasinya untuk memperlancar perancangan:
> 1. **Trigger WhatsApp (Kondisi Kritis):** Sebagai permulaan simulasi di kode saya nanti, setrigger apa yang ingin Anda fungsikan secara *mock* agar Webhooks melemparkan Alert WA? (Contoh: Suhu > 34°C, Kelembaban < 50%, atau Kipas Mati?).
> 2. **Provider WhatsApp API Gateway:** Apakah kita masih menggunakan arsitektur pemanggilan API `curl` berbasis **Fonnte API** layaknya sistem Koperasi Anda terdahulu, atau ada vendor API Notifikasi (*Wablas / Zenziva*) spesifik yang Anda targetkan untuk PoultryMS?

## Verification Plan
1. Migrasi eksekusi DB *sensor_logs*.
2. Membuka Postman/cURL, menembakkan JSON "*Payload Panas Kritis*" secara paksa ke Endpoint webhook-sensors.
3. Melihat Log Backend ter-trigger dengan rapi menunjukkan rentetan respons *"Memanggil Fonnte API untuk mengirim peringatan ke 08123xxxx"*.
