Files
kwh-fln/collector.py
2026-10-01 15:50:43 +07:00

44 lines
1.3 KiB
Python

import os
import django
import time
from pymodbus.client import ModbusTcpClient
# Setup Environment Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
django.setup()
from dashboard.models import KwhReadings
# Sesuaikan dengan IP ESP32 Anda
ESP32_IP = '192.168.1.100'
PORT = 502
def fetch_data():
client = ModbusTcpClient(ESP32_IP, port=PORT)
if client.connect():
# Membaca 4 register dari ESP32
result = client.read_holding_registers(address=0, count=4, slave=1)
if not result.isError():
v = result.registers[0] / 10.0
i = result.registers[1] / 100.0
p = result.registers[2] / 1000.0
kwh = result.registers[3] / 10.0
KwhReadings.objects.create(
voltage=v,
current=i,
active_power=p,
total_energy=kwh
)
print(f"[BERHASIL SIMPAN] V: {v}V | I: {i}A | P: {p}kW | Energy: {kwh}kWh")
else:
print("[ERROR] Gagal membaca register Modbus")
client.close()
else:
print(f"[ERROR] Tidak dapat terhubung ke ESP32 di IP: {ESP32_IP}")
if __name__ == '__main__':
print("Menjalankan Modbus Collector...")
while True:
fetch_data()
time.sleep(5)