Korban Ke-2 PZEM-004T

1 Agu 2025.

Kali ini saya tidak tau apa penyebabnya, tiba-tiba pzem-004T saya tidak memberikan respon. Dua indikator tx dan rx menyala terang, tidak berkedip, kedua-duanya.

Awalnya setelah kejadian terbakar yang lalu karena salah sambung, saya beli pzem-004T lagi, dengan tekad untuk berhati-hati. Proses sambung dan testing juga berjalan dengan lancar. Modul ESP juga bisa membaca nilainya.

Saat ditempatkan di dalam box dan dipasang di tempat pengukuran, pzem ini tiba-tiba tidak memberikan respon. Kedua led indikator tx dan rx menyala terang dan tidak berkedip. ESP 01 yang dipakai untuk membaca nilainya juga terasa sangat panas ketika disentuh.

Akhirnya saya copot lagi dari tempat pengukuran, saya coba lagi tetap tidak ada respon. Sampai saat ini saya belum menemukan jawabannya kenapa bisa rusak.

foto saat dimasukkan kedalam kotak dan siap untuk dipasang ditempat

Korban Satu PZEM-004T

Kediri, 21 Juli 2025

Kesalahan akibat human error kali ini menimbulkan korban satu Pzem-004T, alat monitoring beban arus AC, terbakar dan mati.

✨ Awal Eksperimen: Membaca Data dari PZEM-004T TTL

Sebagai pecinta sistem monitoring energi, saya mencoba membaca data dari PZEM-004T TTL—modul mungil yang bisa mengukur tegangan, arus, dan daya secara real-time. Dengan hanya ESP8266 dan kabel jumper, saya rasa tidak ada hal rumit yang perlu dikhawatirkan. Tanpa RS485 converter, proses jadi jauh lebih sederhana.

📑 Membaca Datasheet dan Manual Pabrik

Saya baca datasheet dan manual resmi dari Peacefair, mencoba memahami dengan cermat pinout dan cara kerja. Pin RX dan TX saya hubungkan ke GPIO ESP8266, CT ke salah satu jalur AC, dan input power langsung dari colokan rumah. Diagram wiring terlihat solid. Saya yakin dengan skema ini.

🔌 Menyambungkan dan Menyalakan Colokan AC

Dengan penuh semangat, saya nyalakan sistem… dan seketika — TSSHHH! terjadi ledakan kecil disertai percikan api dan asap dari modul. Bau terbakar langsung menusuk hidung. Saya terkejut, jantung rasanya ikut nyala bareng PZEM.

🔍 Membaca Ulang Manual (dengan Wajah Tertunduk)

Setelah modul jadi korban, saya buka manual lagi. Ternyata… kesalahan fatal ada pada jalur AC dan CT. Saya memasang jalur AC di jalur CT, padahal arus AC harus sesuai sambungannya. Modul tidak dirancang untuk menahan kesalahan wiring seperti ini.

🧠 Pasrah dan Jadi Pembelajaran

Saya pasrah. PZEM-004T saya gugur, tapi pelajaran yang saya dapat sangat mahal nilainya:

  • Modul TTL memang praktis, tapi posisi jalur AC dan posisi CT sangat krusial.
  • Manual harus dibaca lebih dari sekali, jangan hanya sekilas.
  • Selalu uji koneksi dengan simulasi daya minimal sebelum full-on colokan AC.

Membaca PZEM-004T

Membaca nilai dari PZEM-004T sangat sederhana dan jelas karena terdapat library yang langsung tinggal pakai. Koneksinya juga tidak rumit karena langsung menggunakan interface tx dan rx yang bisa langsung dihubungkan dengan ESP.

PZEM-004T adalah modul sensor untuk membaca parameter aliran listrik AC seperti Voltase, Power, Energy, Frequency, dan Power Factor.

Wiring-nya juga sangat sederhana hubungkan modul pzem dengan ESP, Tx-Rx dan Rx-Tx. Tambahkan library dan tuliskan kode seperti dibawah. Jika semua sudah benar, harusnya akan menampilkan hasil bacaan pada serial monitor.

#include <SoftwareSerial.h>
#include <PZEM004Tv30.h>

#define RX_PIN 4  // D2
#define TX_PIN 5  // D1

SoftwareSerial pzemSerial(RX_PIN, TX_PIN);
PZEM004Tv30 pzem(pzemSerial);

void setup() {
  Serial.begin(115200);
  pzemSerial.begin(9600);
  Serial.println("Monitoring PZEM-004T via ESP8266");
}

void loop() {
  float voltage = pzem.voltage();
  float current = pzem.current();
  float power   = pzem.power();
  float energy  = pzem.energy();
  float frequency = pzem.frequency();
  float pf = pzem.pf();

  if (isnan(voltage)) {
    Serial.println("Gagal membaca data dari sensor");
  } else {
    Serial.printf("Tegangan: %.2f V\n", voltage);
    Serial.printf("Arus: %.2f A\n", current);
    Serial.printf("Daya: %.2f W\n", power);
    Serial.printf("Energi: %.3f kWh\n", energy);
    Serial.printf("Frekuensi: %.1f Hz\n", frequency);
    Serial.printf("Power Factor: %.2f\n", pf);
    Serial.println("-----------------------------");
  }

  delay(1000);
}

HATI-HATI!!!

karena modul ini mengukur tegangan tinggi, jadi pastikan secara berulang kali kalau koneksi sudah benar dan aman.!

Juli 2025

Membaca PZEM-017 Dengan ESP 8266

Disclimer dulu bahwa ini sebenarnya adalah cerita eksperimen yang hampir sama dengan cerita sebelumnya tentang membaca PZEM-017 dengan Wemos D1 Mini. Tetapi di tulisan ini saya akan lebih membahas kendala yang muncul kembali setelah sebelumnya berhasil.

Hampir seharian saya nyari penyebab kenapa pembacaan nilai PZEM-017 yang dulu berhasil, kenapa sekarang jadi gagal. Setidaknya ada beberapa faktor berikut sesuai pengalaman saya kemarin.

Baterai (Sumber Tegangan) Tidak Tersambung

Ternyata input test voltase yang akan kita ukur, dalam skema rangkaian yang ada dibelakang digambarkan baterai, harus disambungkan dengan pzem-017. Sebelumnya saya berasumsi bahwa karena pzem-017 sudah saya kasih tegangan 5v dari sumber lain sehingga tidak perlu menyambung sumber, ternyata ini jadi salah satu penyebab tidak terbacanya data.

Tx dan Rx yang Terbalik

Hal yang tidak saya duga bisa terjadi adalah sambungan Tx dan Rx yang terbalik. Dari berbagai referensi, Tx ESP harusnya tersambung dengan Rx nya modul TTL to RS485, bgeitu juga sebaliknya dengan Rx nya tersambung dengan Tx. Tetapi secara desperate saya balik, ternyata secara mengejutkan malah bisa terbaca datanya. Dari referensi saya dapatkan bahwa ternyata bisa jadi penamaan label modulnya yang tidak sesuai standar. Misalnya Tx itu yang harusnya transmit, bisa jadi bermaksud bahwa di titik itu tempat tersambungnya Tx dari lawannya.

Kesimpulan

Dari beberapa hari experimen ini, sudah ada satu modul pzem-017 yang rusak. Ketika diberikan catu daya 5v, seakan terjadi korsleting, sehingga menimbulkan reaksi pada power supply yang menyediakan tegangan.

Sudah seharusnya kita membaca dokumentasi atau datasheet dari modul yang akan kita pakai, cuma masalahnya tidak semua modul memiliki datasheet, terutama modul-modul murah yang tidak disertai datasheet. Apalagi karena populer dan murah, banyak versi dan juga versi kw nya.

Setup Docker Container untuk CodeIgniter 4, MySQL (Debian), dan phpMyAdmin

🧭 Awal Mula: Ide Membuat Kontainer Dev

Saya ingin membuat lingkungan pengembangan berbasis Docker untuk CodeIgniter 4, agar proses development lebih stabil, portable, dan mudah direplikasi. Untuk itu, saya butuh stack yang terdiri dari:

  • Apache + PHP untuk menjalankan CI4
  • MySQL sebagai database backend
  • phpMyAdmin sebagai UI administrasi database
  • Aktifnya mod_rewrite agar CI4 bisa routing tanpa index.php

🏗️ Merancang Dockerfile dan docker-compose.yml

Alih-alih menggunakan image php:8.2-apache secara langsung, saya memutuskan membuat Dockerfile kustom agar bisa mengaktifkan mod_rewrite dan menyusun konfigurasi Apache sesuai kebutuhan.

📄 Dockerfile untuk Apache + PHP

Dockerfile

# Menggunakan image dasar PHP dengan Apache
FROM php:8.2-apache

# Perbarui package manager dan install ekstensi yang diperlukan
RUN apt-get update && apt-get install -y \
    libicu-dev \
    libpq-dev \
    unzip

# Aktifkan ekstensi PHP Intl 
RUN docker-php-ext-install intl 

# Aktifkan mod_rewrite Apache
RUN a2enmod rewrite

# Restart Apache agar perubahan berlaku
RUN service apache2 restart

EXPOSE 80
CMD ["apache2-foreground"]

📄 apache-config.conf

apache

<VirtualHost *:80>
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

📦 docker-compose.yml

yaml

name: 'ci4app'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ci4_app
    ports:
      - "8080:80"
    volumes:
      - ./ci4:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:8.0-debian
    container_name: mysql_db
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: ci4db
      MYSQL_USER: ci4user
      MYSQL_PASSWORD: ci4pass
    volumes:
      - ./mysql:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db
      PMA_USER: ci4user
      PMA_PASSWORD: ci4pass
    depends_on:
      - db

⚠️ Masalah yang Terjadi: MySQL Error x86-64-v2

Saat pertama kali saya jalankan stack ini dengan docker compose up --build, CI4 langsung muncul di port 8080, tapi phpMyAdmin gagal tersambung ke database.

Setelah saya cek log mysql_db, ternyata muncul error:

Fatal glibc error: CPU does not support x86-64-v2

Saya baru sadar kalau image mysql:8.0 berbasis Oracle Linux 9 yang butuh CPU dengan dukungan modern. Dan processor saya belum mendukung x86-64-v2 😅.

🔄 Solusi: Ganti dengan mysql:8.0-debian

Setelah mencari tahu, saya menemukan kalau image mysql:8.0-debian lebih ringan dan tidak butuh instruksi CPU canggih. Saya langsung ganti di docker-compose.yml:

yaml

image: mysql:8.0-debian

Lalu saya jalankan ulang:

bash

docker compose down
docker compose up --build -d

Dan… berhasil! 🎉 Semua kontainer hidup dengan baik, CI4 bisa routing dengan .htaccess, dan phpMyAdmin langsung tersambung ke database.

✅ Kesimpulan

  • Gunakan Dockerfile untuk kontrol penuh terhadap konfigurasi Apache dan PHP.
  • Aktifkan mod_rewrite dengan a2enmod rewrite agar CI4 tidak butuh index.php.
  • Gunakan mysql:8.0-debian jika CPU kamu tidak mendukung x86-64-v2.
  • Pantau log dan error agar lebih cepat mendeteksi masalah.