# SOP Instalasi Sensor Suhu & Humidity Data Center ## 1. Tujuan Dokumen ini digunakan sebagai panduan teknisi untuk menghubungkan sensor **Xiaomi MJWSD06MMC** ke **Home Assistant** menggunakan: **MJWSD06MMC → PVVX Firmware → BTHome v2 → ESP32 BLE Proxy → Wi-Fi/LAN → Home Assistant** Metode ini **TIDAK menggunakan Zigbee** dan tidak membutuhkan Zigbee Coordinator. --- ## 2. Perangkat yang Dibutuhkan ### Hardware * Xiaomi MJWSD06MMC * Baterai CR2450 yang sehat * ESP32 standar * Kabel USB untuk ESP32 * Komputer untuk flashing ESP32 * Android atau komputer dengan Chrome untuk flashing sensor * Wi-Fi yang dapat dijangkau ESP32 ### Software * Google Chrome/Chromium * ESPHome * Home Assistant * PVVX TelinkMiFlasher PVVX TelinkMiFlasher: `https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html` --- # BAGIAN A — FLASH SENSOR MJWSD06MMC ## 3. Identifikasi Firmware Sensor Buka PVVX TelinkMiFlasher menggunakan Chrome. Klik: **Connect** Pilih: **MJWSD06MMC** Untuk unit firmware Xiaomi yang digunakan pada pengujian ini, informasi awal adalah: ```text Hardware Revision String: V1.3 Software Revision String: 0009 Firmware Revision String: 0009 Detected Mi device Connected ``` Firmware Xiaomi `0009` membutuhkan autentikasi Mi Home. Pastikan field berikut berhasil didapatkan: ```text Device known id Mi Token Mi Bind Key ``` Kemudian klik: **Login** Pastikan log menunjukkan: ```text Login successful ``` --- ## 4. Flash PVVX Firmware Setelah Login berhasil, pilih: **Custom Firmware: MJ6_v59.bin** PERHATIAN: **JANGAN pilih Zigbee Firmware.** Firmware yang digunakan dalam deployment ini adalah: ```text MJ6_v59.bin ``` Tunggu proses DFU. Contoh proses yang berhasil: ```text Load firmware file 'bin/MJ6_v59.bin' Start DFU Update done after 50.xxx seconds ``` ### DILARANG Selama `Start DFU` berlangsung: * Jangan cabut baterai. * Jangan matikan Bluetooth. * Jangan menutup Chrome. * Jangan menjauhkan sensor dari perangkat flashing. --- # BAGIAN B — VERIFIKASI PVVX ## 5. Reconnect Sensor Setelah flashing selesai, sensor akan reboot. Nama Bluetooth dapat berubah menjadi: ```text MJ6_XXXXXX ``` Reconnect menggunakan TelinkMiFlasher. Pastikan informasi seperti berikut muncul: ```text Hardware Revision String: V1.3 Software Revision String: V5.9 Firmware Revision String: github.com/pvvx Detected custom Firmware Hardware Version: MJWSD06MMC V1.3 Software Version: 5.9 ``` Jika informasi tersebut muncul, flashing PVVX berhasil. LCD sensor harus tetap menyala dan menampilkan temperature/humidity secara normal. --- # BAGIAN C — KONFIGURASI BTHOME ## 6. Set Advertising Mode Setelah terhubung ke PVVX, buka bagian: **Configuration** Klik: **Get Config** Atur: ```text Advertising type: BTHome v2 Encrypted beacon: OFF AdFlags: ON Advertising interval: 5000 ms Measure interval: 4 ``` Dengan konfigurasi tersebut: ```text Advertisement = setiap ±5 detik Measurement = 4 × 5 detik = ±20 detik ``` Untuk kompatibilitas awal: ```text BT5+ PHY: OFF LE Long Range: OFF Sensor LowPower mode: ON ``` RF TX Power dapat dibiarkan default. Setelah selesai klik: **Send Config** Pastikan log menunjukkan: ```text Settings ... was sent successfully ``` --- ## 7. Disconnect Sensor Setelah konfigurasi berhasil: 1. Klik **Disconnect** pada TelinkMiFlasher. 2. Tutup tab PVVX. 3. Jangan pair sensor dari Bluetooth Settings komputer/HP. 4. Bila diperlukan, cabut baterai ±10 detik lalu pasang kembali. Sensor sekarang harus melakukan broadcast: ```text BTHome v2 Unencrypted ``` --- # BAGIAN D — ESP32 BLE PROXY ## 8. Konfigurasi ESPHome Contoh konfigurasi: ```yaml esphome: name: dc-ble-proxy friendly_name: DC BLE Proxy esp32: board: esp32dev framework: type: esp-idf logger: level: INFO api: ota: - platform: esphome wifi: ssid: "NAMA-WIFI" password: "PASSWORD-WIFI" ap: ssid: "DC-BLE-Proxy-Fallback" password: "PASSWORD-FALLBACK" captive_portal: esp32_ble_tracker: scan_parameters: interval: 1100ms window: 1100ms active: true bluetooth_proxy: active: true ``` ### PENTING — TIPE ESP32 Pastikan tipe chip sesuai hardware. ESP32 biasa: ```yaml esp32: board: esp32dev ``` JANGAN menggunakan: ```yaml board: esp32-s3-devkitc-1 ``` untuk ESP32 biasa. Jika salah, flashing akan menghasilkan error: ```text This chip is ESP32, not ESP32-S3. Wrong chip argument? ``` --- ## 9. Compile dan Flash ESP32 Bersihkan build lama: ```bash esphome clean xiaomi-gateway.yaml ``` Compile dan upload: ```bash esphome run xiaomi-gateway.yaml ``` Jika muncul: ```text [1] /dev/cu.usbserial-0001 [2] Over The Air ``` Untuk initial installation melalui USB pilih: ```text 1 ``` Tunggu sampai ESP32 berhasil boot dan terkoneksi ke Wi-Fi. --- # BAGIAN E — HOME ASSISTANT ## 10. Tambahkan ESPHome Di Home Assistant buka: **Settings → Devices & services** Tambahkan: **ESPHome** Masukkan IP/hostname ESP32. Contoh hostname: ```text dc-ble-proxy.local ``` Pastikan ESPHome device berstatus connected. --- ## 11. BTHome Discovery ESP32 bertindak sebagai Bluetooth Proxy. Alurnya: ```text MJWSD06MMC │ │ BLE / BTHome v2 ▼ ESP32 BLE Proxy │ │ ESPHome API / Wi-Fi ▼ Home Assistant │ ▼ BTHome Integration ``` Home Assistant seharusnya otomatis mendeteksi perangkat BTHome. Buka: **Settings → Devices & services** Cari discovery: **BTHome** Tambahkan perangkat yang ditemukan. --- ## 12. Entity yang Diharapkan Pada unit yang sudah berhasil diuji, Home Assistant mendeteksi: ```text Temperature Humidity Battery Voltage Opening Power ``` Contoh hasil: ```text Temperature : 28.6 °C Humidity : 66.56 % Battery : 79 % Voltage : 3 V ``` MAC sensor pengujian: ```text A4:C1:38:0F:E9:9F ``` MAC ini hanya contoh. Setiap sensor memiliki MAC berbeda. --- # BAGIAN F — TROUBLESHOOTING ## 13. Sensor Tidak Muncul di Home Assistant Pertama pastikan sensor **tidak sedang Connected ke PVVX**. TelinkMiFlasher menggunakan koneksi BLE langsung. Untuk deployment normal: ```text PVVX → DISCONNECT ``` Kemudian: 1. Tutup TelinkMiFlasher. 2. Power-cycle sensor. 3. Tunggu 20–60 detik. 4. Periksa Home Assistant kembali. --- ## 14. Periksa ESP32 BLE Proxy Jalankan: ```bash esphome logs xiaomi-gateway.yaml \ --device /dev/cu.usbserial-0001 ``` ESP32 yang bekerja normal akan menghasilkan log seperti: ```text bluetooth_proxy: Queuing raw packet from ... bluetooth_le_raw_advertisements_response Sent batch of ... BLE advertisements ``` Artinya: ```text BLE scan = OK ESP32 Bluetooth = OK Bluetooth Proxy = OK ESPHome API → HA = OK ``` --- ## 15. Filter MAC Sensor Hilangkan tanda `:` dari MAC. Contoh: ```text A4:C1:38:0F:E9:9F ``` menjadi: ```text A4C1380FE99F ``` Kemudian: ```bash esphome logs xiaomi-gateway.yaml \ --device /dev/cu.usbserial-0001 | \ grep -i 'A4C1380FE99F' ``` Jika muncul secara periodik, ESP32 berhasil menerima advertisement sensor. --- ## 16. Port USB Busy Jika muncul: ```text Could not exclusively lock port Resource temporarily unavailable ``` cek: ```bash lsof /dev/cu.usbserial-0001 ``` Jika ada proses lama yang memegang port: ```bash kill PID ``` Jika masih tidak berhenti: ```bash kill -9 PID ``` Kemudian cabut dan pasang kembali ESP32. --- # BAGIAN G — DEPLOYMENT BANYAK SENSOR Satu ESP32 BLE Proxy dapat menerima advertisement dari banyak sensor sekaligus. Untuk deployment awal, gunakan guideline: ```text ±10–20 sensor / ESP32 BLE Proxy ``` Jumlah tersebut bukan hard limit. Kapasitas aktual bergantung pada: * Jarak sensor. * Posisi rack. * Material rack/logam. * Interferensi RF. * Advertising interval. * Kondisi Wi-Fi. * Penempatan ESP32. BTHome menggunakan broadcast BLE sehingga ESP32 tidak perlu mempertahankan koneksi BLE permanen ke setiap sensor. Beberapa ESP32 Bluetooth Proxy juga dapat menerima sensor yang sama. Contoh: ```text ┌── ESP32 Proxy #1 ──┐ Sensor BTHome ───┤ ├── Home Assistant └── ESP32 Proxy #2 ──┘ ``` Hal ini berguna untuk coverage area data center. --- # BAGIAN H — STANDARD DEPLOYMENT Untuk setiap sensor baru: ```text 1. Install baterai sehat ↓ 2. Connect MJWSD06MMC ke PVVX ↓ 3. Login Mi Home jika firmware 0009 memerlukannya ↓ 4. Flash MJ6_v59 ↓ 5. Tunggu "Update done" ↓ 6. Reconnect sebagai MJ6_xxxxxx ↓ 7. Get Config ↓ 8. Advertising Type = BTHome v2 ↓ 9. Encrypted Beacon = OFF ↓ 10. Advertising = 5000 ms ↓ 11. Measure interval = 4 ↓ 12. Send Config ↓ 13. Disconnect PVVX ↓ 14. Tempel label MAC + lokasi rack ↓ 15. Pastikan ditemukan ESP32 ↓ 16. Add BTHome device di Home Assistant ↓ 17. Rename sesuai lokasi ↓ 18. Verifikasi Temperature/Humidity/Battery ``` --- # BAGIAN I — NAMING STANDARD Disarankan setiap sensor diberi nama berdasarkan lokasi fisik. Format: ```text DC-[ROOM]-[RACK]-[POSITION] ``` Contoh: ```text DC-JAX-R01-FRONT DC-JAX-R02-FRONT DC-JAX-R03-FRONT ``` Catat minimal: ```text Nama Sensor MAC Address Rack Posisi Tanggal Install Battery % ESP32 Proxy terdekat ``` Jangan hanya mengandalkan nama Bluetooth karena saat jumlah sensor bertambah akan sulit mengidentifikasi perangkat fisik. --- # BAGIAN J — CATATAN PENTING UNTUK TEKNISI **JANGAN flash Zigbee Firmware jika deployment menggunakan ESP32 BLE Proxy.** Firmware yang digunakan: ```text PVVX MJ6 v5.9 Advertising: BTHome v2 Encryption: OFF ``` Arsitektur final: ```text MJWSD06MMC │ │ BTHome v2 / BLE ▼ ESP32 Bluetooth Proxy │ │ Wi-Fi ▼ ESPHome API │ ▼ Home Assistant │ ├── Temperature ├── Humidity ├── Battery └── Voltage ``` Setelah commissioning selesai, ESP32 logger sebaiknya menggunakan: ```yaml logger: level: INFO ``` dan bukan `VERY_VERBOSE`, kecuali sedang melakukan troubleshooting.