Membuat Modul IoT Membaca Banyak Device dengan RS485

Postingan ini sebenarnya sudah ada judulnya dari beberapa bulan lalu, tapi baru sempet menulis isinya sekarang. Saat itu, sistem PLTS saya baru ada inverter dan baterai, belum ada panel surya, sehingga saya fokus pada komponen IoT-nya dulu.

Saya sudah membuat desain jalur kabel dan flow arusnya. Mulai dari string panel surya yang sudah saya persiapkan menjadi dua string, sampai arah inverter dan baterai. Tiap titik bagian sudah saya rencanakan akan dipasang sensor untuk mengetahui parameter yang akan saya ukur. Salah satu parameter misalnya voltase dan energi dari baterai ke inverter. Ini sudah bisa saya implementasikan sebelum menunggu panel surya terpasang.

Pada tahap awal ini, saya akan memasang 4 sensor, dua untuk memantau arus DC dan dua lagi untuk memantau arus AC. Dua arus DC adalah dari SCC ke inverter serta baterai dan satu lagi dari baterai dan SCC ke inverter. Dua sensor ini untuk memantau berapa banyak energi yang dipanen dari SCC dan berapa besar energi yang terpakai. Sedangkan untuk arus AC, saya memasang sensor untuk arus dari PLN dan satu lagi untuk memantau arus keluaran dari Inverter. Ini untuk memantau berapa besar energi PLN dan PLTS yang terpakai.

Saya menggunakan PZEM016 dan PZEM017. Dua alat ini memiliki interface RS485 sehingga saya membutuhkan modul RS485. Untuk modul kontrolernya saya menggunakan ESP dari keluarga ESP8266 yaitu ESP Wemos D1 Mini. Saya berencana membuat satu modul ini untuk memantau banyak device RS485.

Sat, 29 Nov 2025

Menata Ulang Jalur Panel MCB

Dengan bertambahnya kapasitas Inverter untuk suplay tenaga listrik di rumah, maka jalur yang dibackup sama inverter yang dulunya hanya lampu saja, perlu ditambah opsi atau pilihan agar jalur lain bisa menggunakan juga. Kemampuan untuk memilih jalur ini bisa diwujudkan di panel MCB yang sudah ada.

Saya sudah menyiapkan empat jalur untuk membagi beban berdasarkan kegunaan, seperti lampu, AC, stop kontak, dan keperluan berkaitan dengan air. Untuk keperluan listrik yang berhubungan dengan air saya tambahkan ELCB 10 ma, tingkat sensitifitas lebih tinggi dari ELCB umumnya yang 30 ma.

Pemilihan jarus sumber ini saya buat di panel MCB dengan menggunakan COS atau change over switch. COS saya pasang per jalur beban, sehinga kita bisa aktifkan per jalur. Dengan konfigurasi ini kita bisa memilih untuk mengaktifkan PLTS untuk Lampu saja atau kombinasi dengan yang lain.

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.

Modul IoT Monitor dan Kontrol

Beberapa hari terakhir saya sedang mengerjakan project untuk memonitor kondisi lingkungan. Lingkungan ini nantinya akan ditempatkan alat elektronik yang bisa mengeluarkan hawa panas. Nah, masalahnya tempat itu adalah tempat semacam kabinet yang teretutup, sehingga perlu dipertimbangkan mekanisme pendinginannya dan pembuangan hawa panas.

Bersambut dengan project saya di tahun ini lebih banyak ke mikrokontroller, saya gabungkan saja dengan konsep IoT dan kontrol. Saya menggunakan mikrokontroller keluarga ESP sebagai otaknya. Kebutuhannya adalah untuk memonitor dan mengontrol pendingin berdasarkan nilai temperatur yang didapat.

Dari berbagai produknya ESP saya pakai ESP-01 untuk kebutuhan ini. Ternyat cukup pakai GPIO yang disediakan. Simple mudah murah.

Install IoT Stack dengan Docker Compose

Terbaru, saya sedang ada project untuk membuat IoT Stack. Stack ini terdiri dari mqtt broker yang menerima data dari sensor, kemudian ada nodered sebagai penghubung antara broker dengan database. Untuk database saya pakai influxdb. Dan, yang terakhir yaitu Grafana untuk menampilkan data yang sudah disimpan dalam database.

Berikut contoh docker composenya:

version: '3.9'

services:
  mqtt:
    image: eclipse-mosquitto
    container_name: mqtt
    user: "0"
    ports:
      - "1883:1883"
      - "9001:9001"
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log

  nodered:
    image: nodered/node-red
    container_name: nodered
    user: "0"
    ports:
      - "1880:1880"
    dns:
      - "8.8.8.8"
      - "1.1.1.1"
    volumes:
      - ./nodered/data:/data

  influxdb:
    image: influxdb:latest
    container_name: influxdb
    user: "0"
    ports:
      - "8086:8086"
    volumes:
      - ./influxdb/data/influxdb2:/var/lib/influxdb2
      - ./influxdb/data/etc:/etc/influxdb2
    environment:
      - INFLUXDB_ADMIN_USER=admin
      - INFLUXDB_ADMIN_PASSWORD=adminpassword
      - INFLUXDB_DB=mydatabase

  grafana:
    image: grafana/grafana
    container_name: grafana
    user: "0"
    ports:
      - "3000:3000"
    volumes:
      - ./grafana/data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=adminpassword

Docker compose diatas menggunakan persisten data yang disimpan dalam directory host-nya.

Pengalaman sebelumnya ada kendala soal persisten data untuk influxdb. Sehingga data yang tersimpan hilang saat container dibuat ulang atau dihapus, padahal settingan volume sudah diset dengan benar.

Ketika di-cek di portainer, ada volume yang di-create oleh container influxdb ini, jadi tidak memakai mount directory yang sudah disetting di docker compose.

Ada dua volume yang di-create oleh container. dari dua volume itu akhirnya saya buatkan directory mount nya. Saya coba-coba lagi docker compose down and up lagi dan lagi, akhirnya tidak ter-create volume lagi, dan berhasil mount directory host.