Pembacaan Nilai Total Energi PZEM-017 Kembali Nol (Ter-reset)

Sehari yang lalu, nilai pembacaan pada dashboard plts sangat aneh. Sebuah nilai energi yang terbaca minus. Sampai siang coba saya tunggu tidak berubah, karena saya beranggapan karena proses agregasi nilai yang belum sinkron.

Usut punya usut, ternyata nilai pembacaan energi dari pzem nya ter-reset kembali ke nol lagi. Saya tidak tau sebabnya, seharunya nilai 60.000 masih dalam rentang pembacaan, karena nilai maksimalnya adalah 99.999 kalau tidak salah.

Bisa dilihat pada tangkapan layar diatas bagian energy yang dilingkari merah. Pembacaannya kembali nol, sehingga wajar kalau nilai total akumulatifnya jadi minus.

Belajar dari kasus ini, saya ubah penyimpanan datanya di database. Yang sebelumnya menyimpan nilai raw data begitu saja dari device. Saya olah dulu supaya data yang disimpan adalah data total ditambah selisih. Sehingga walaupun reset, data total yang tersimpan akan tetap bertambah.

Sistem saya pakai Node-RED, jadi proses ini bisa dilakukan di Node-Red. Berikut adalah fungsi perantara untuk koreksi datanya.

if (msg.topic = "pzem/battery/energy"){
    let prev = context.get("prev") || 0;
    let total = context.get("total") || 0;

    let curr = msg.payload.energy;
    let delta = curr >= prev ? curr - prev : curr;

    total += delta;

    context.set("prev", curr);
    context.set("total", total);

    msg.payload.energy = total;
}
return msg;

block fungsi ini berada setelah mqtt in dan sebelum set message payload. Jadi kita modifikasi payload yang akan disimpan di database. Berikut kira kira alurnya

mqtt in --> modif function --> set msg.payload --> database

Sejauh ini tampak berhasil, tinggal kita tunggu jika kejadian serupa muncul. Sejak saat ini, semua flow sejenis, saya terapkan modif function ini sebagai middleware.

30 Oct 2025

Menghubungkan Node-RED dengan Blynk

Seharian penuh saya mengikuti dokumentasi cara menghubungkan Node-RED dengan Blynk, tetapi tidak membuahkan hasil. Disitu dijelaskan beberapa garis besar tahapnya, yaitu menyiapkan template di Blynk, Install Node-RED, Konfigurasi MQTT Broker, Buat Node-RED flow, Jalankan.

Dari sekian langkah diatas, saya terganjal di Konfigurasi MQTT Broker. Diutak-atik tetep statusnya connecting alias tidak berhail connect dengan Blynk. Padahal semua langkah sudah saya ikuti. Kemudian saya berhenti menggunakan cara ini dan mulai berfikir untuk menggunakan cara lain.

Cara yang lain yaitu pakai add-on, plugin, atau di Node-RED disebutnya pallet. Saya coba install ternyata ada kendala juga. Jadi, Node-RED saya ini diinstall di containernya docker. Dan menurut beberapa info, error ini disebabkan oleh problem DNS. Saya coba masuk ke container dan coba ping ke domain google memang tidak bisa tetapi kalau ping alamat IP di internet bisa.

Saya cari cara untuk setting DNS di docker container dan menemukan cara setting pakai docker compose. Dengan kata lain, saya perlu membuat ulang containernya dengan cara docker compose down kemudian nyalakan lagi dengan docker compose up. Cara ini beresiko hilangnya data, dan benar saja, data influxdb hilang, dan memang container influxdb ini dulu seingat saya masih ada masalah dengan persisten data nya. Singkat cerita akhirnya berhasil setting DNS dengan cara ini sekaligus perbaiki persisten data untuk influxdb juga di docker compose.

Saya pakai node-red-contrib-blynk-iot dan alhamdulillah berhasil connect atau tersambung dengan Blynk cloud. Selanjutnya tinggal setting di sisi Blynk untuk menerima data dan menampilkannya di dalam dashboard web dan mobile.