Konsep Sederhana LSTM : Aplikasi pada Power Meter

1.Apa Itu LSTM?

LSTM (Long Short-Term Memory) adalah jenis jaringan saraf tiruan yang termasuk dalam Deep Learning (DL), yang merupakan cabang dari Machine Learning (ML) dalam Artificial Intelligence (AI). LSTM dirancang khusus untuk memproses dan menganalisis data sekuensial dengan kemampuan mengingat informasi jangka panjang, menjadikannya efektif dalam tugas seperti prediksi deret waktu, pemrosesan bahasa alami, dan pengenalan pola dalam data temporal.

Long Short-Term Memory (LSTM) adalah jenis jaringan saraf tiruan yang dirancang untuk memproses data berurutan. LSTM bisa mengingat informasi dari waktu sebelumnya, sehingga sangat cocok untuk prediksi data berbasis waktu, seperti:

✅ Prediksi cuaca 🌤
✅ Prediksi harga saham 📈
✅ Prediksi tegangan dari power meter ⚡

2.Bayangkan LSTM Seperti Seorang Pelajar 📚

Misalkan ada seorang siswa bernama Adi yang sedang belajar fisika.

Ads Jadwal Training bisaioti Offline
NoMateriTanggalWaktuHargaLokasiViewAction
1IOT PLC SCADA Siemens7-8 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
2IOT PLC SCADA Omron14 - 15 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
3IOT PLC SCADA Schneider21-22 Juni 202508.00 -16.002000000SurabayaSilabusDaftar Sekarang
4IOT PLC SCADA Allen Bradley28-29 Juni 202508.00-16.002000000SurabayaSilabusDaftar Sekarang
  • 💡 Kasus 1 (Tanpa Memori)

Jika Adi hanya mengingat pelajaran hari ini tanpa memperhatikan materi sebelumnya, maka dia akan kesulitan memahami konsep yang lebih kompleks.

  • 💡 Kasus 2 (Dengan Memori)

Jika Adi bisa mengingat pelajaran dari hari sebelumnya, dia dapat lebih mudah memahami konsep baru karena ada koneksi antar informasi.

  • 👉 LSTM bekerja seperti Adi yang bisa mengingat informasi penting dari masa lalu dan melupakan yang tidak relevan!

3.Bagaimana Cara LSTM Mengingat?

LSTM memiliki tiga “Gerbang” utama yang berfungsi seperti filter pintar:

Gerbang Fungsi Analogi
Forget Gate Menentukan informasi mana yang perlu dilupakan “Oke, teori lama ini sudah tidak relevan, kita lupakan aja!”
Input Gate Menentukan informasi baru yang harus disimpan “Materi ini penting, kita catat!”
Output Gate Menghasilkan output berdasarkan informasi yang diingat “Dengan ingatan ini, saya bisa menjawab pertanyaan!”

4.Contoh Sederhana Prediksi dengan LSTM

Misalnya, kita ingin memprediksi tegangan listrik berdasarkan data sebelumnya.

  • 💡 Data Input ke LSTM:

[220V, 221V, 219V, 220V, 222V, 223V, ???]

    • 👉 LSTM akan belajar pola dari data ini dan mencoba memprediksi nilai selanjutnya (misalnya, 224V).
  • 💡 Cara Kerja LSTM Secara Sederhana:

    1. LSTM melihat tegangan 220V, 221V, 219V…
    2. Menyimpan informasi penting & melupakan yang tidak perlu.
    3. Menggunakan pola data sebelumnya untuk memprediksi tegangan selanjutnya.

5.Ilustrasi Visual Sederhana

🔵 Data Masuk:

Day 1: 220V  →  Day 2: 221V  →  Day 3: 219V  →  Day 4: 220V  →  ???

🟢 LSTM Memproses: Mengingat pola: naik-turun-tegangan…

Dengan cara ini, LSTM dapat mengenali pola perubahan tegangan dan menghasilkan prediksi yang lebih akurat untuk data berikutnya!

6.Prediksi Tegangan dengan LSTM (Lanjutan)

LSTM akan belajar pola tegangan dari data sebelumnya dan mencoba menebak nilai tegangan di waktu berikutnya.

💡 Misalnya kita punya data tegangan setiap detik:

220V → 221V → 219V → 220V → 222V → 223V → ???

LSTM akan mengenali pola ini dan mencoba memprediksi nilai berikutnya.

Bagaimana caranya?

      1. LSTM membaca data beberapa waktu sebelumnya (misalnya 5 detik terakhir).
      2. LSTM menentukan pola berdasarkan data lama (apakah naik, turun, atau fluktuatif?).
      3. LSTM memprediksi tegangan berikutnya berdasarkan pola yang telah dipelajari.

7.Timestamp Pengambilan Data dan Prediksi

Dalam aplikasi IoT dengan power meter yang terhubung ke Orange Pi, kita harus menentukan interval pengambilan data agar prediksi lebih akurat.

Timestamp Pengambilan Data:

    • Disarankan mengambil setiap 1 detik jika data sangat dinamis.
    • Bisa juga setiap 5 detik jika perubahan tegangan tidak terlalu cepat.

Timestamp Prediksi:

    • Jika kita punya data per detik, kita bisa memprediksi 1 detik ke depan.
    • Bisa juga memprediksi 5 detik ke depan untuk melihat pola jangka pendek.

Contoh timestamp data:

Timestamp Tegangan (V)
12:00:00 220.1
12:00:01 220.3
12:00:02 220.5
12:00:03 220.6
12:00:04 ???

🔍 Jika kita ingin prediksi untuk 12:00:04, LSTM akan melihat 12:00:00 – 12:00:03 sebagai referensi.

8.Saran dan Rekomendasi untuk Data Power Meter

Agar prediksi LSTM lebih akurat, ada beberapa hal yang perlu diperhatikan:

1. Gunakan Data yang Cukup

    • Jangan hanya pakai beberapa detik data, coba ambil data dari 1 jam terakhir jika memungkinkan.
    • Semakin banyak data, semakin baik prediksinya.

2. Tambahkan Variabel Lain (Multivariat)

    • Jangan hanya gunakan tegangan, tapi juga:
      🔹 Arus (A) – untuk melihat fluktuasi beban.
      🔹 Daya (W) – agar bisa menghubungkan pola dengan konsumsi daya.
    • LSTM bisa bekerja lebih baik dengan lebih banyak variabel.

Contoh dataset lebih lengkap:

Timestamp

Tegangan (V)

Arus (A)

Daya (W)

12:00:00

220.1

1.5

330

12:00:01

220.3

1.6

340

12:00:02

220.5

1.7

345

12:00:03

220.6

1.8

350

12:00:04

???

???

???

🚀 Dengan data lebih banyak, model bisa memahami hubungan antar variabel.

9.Implementasi LSTM untuk Power Meter dengan Orange Pi

Oke, sekarang kita coba bikin implementasi real untuk mengambil data dari power meter yang terhubung ke Orange Pi, lalu memprediksi tegangan berikutnya.

1️ Mengambil Data dari Power Meter

Misalnya kita menggunakan power meter yang mendukung Modbus RTU melalui RS485, kita bisa ambil datanya menggunakan Python.

Cara Ambil Data:

    • Pake Python di Orange Pi, baca data lewat protokol komunikasi (I2C/SPI/Modbus) tergantung sensor.
    • Library keren: pyModbusRPi.GPIO, atau pymysql (kalau nyimpen ke database).
from datetime import datetime
import sensor_library # Ganti dengan library sensormu

timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
voltage = sensor.read_voltage()
current = sensor.read_current()
power = voltage * current # Atau baca langsung dari sensor

# Simpen ke CSV atau database
with open("power_data.csv", "a") as f:
f.write(f"{timestamp},{voltage},{current},{power}\n")
    • Timestamp yang Disarankan ⏰:
      • Sampling Interval:
        • Untuk general monitoring1-5 menit (hemat storage, cukup untuk tren harian).
        • Untuk deteksi anomali (e.g., voltage drop): 1 detik (tapi siapkan SSD 1TB 😅).
      • Durasi Pengumpulan: Minimal 2 minggu (biar model ngerti pola harian/mingguan).
      • Tips: Jika pakai interval 1 detik, resample jadi 1 menit sebelum training (kecuali lo mau prediksi detik-an).

ATAU bisa juga menggunakan program seperti dibawah ini

import minimalmodbus
import time

# Setup koneksi Modbus RTU

instrumen = minimalmodbus.Instrument('/dev/ttyUSB0', 1)  # Port serial & slave ID

instrumen.serial.baudrate = 9600

instrumen.serial.timeout = 1




def get_power_meter_data():

    tegangan = instrumen.read_register(0, 1)  # Misalnya, register 0 untuk tegangan

    arus = instrumen.read_register(1, 1)      # Register 1 untuk arus

    daya = instrumen.read_register(2, 1)      # Register 2 untuk daya

    return tegangan, arus, daya

while True:

    v, a, w = get_power_meter_data()

    print(f"Tegangan: {v}V, Arus: {a}A, Daya: {w}W")

    time.sleep(1)  # Ambil data tiap 1 detik

📌 Kode diatas membaca tegangan, arus, dan daya dari power meter via RS485.

2️ Mempersiapkan Data untuk LSTM  / Preposesing Data

Setelah kita punya data, kita harus mengubahnya menjadi format yang bisa dipakai oleh LSTM.

    • Handle Missing Data:
      • Data kosong? Isi pake linear interpolation atau forward fill (isi pake data sebelumnya).
      • Jangan lupa hapus outlier (e.g., tegangan 1000V di rumah? Itu salah sensor bang 💥).
    • Normalisasi:
      • LSTM itu manja, perlu data di-scale antara 0-1 atau -1-1.
      • Pake MinMaxScaler dari sklearn biar aman.
      from sklearn.preprocessing import MinMaxScaler
      scaler = MinMaxScaler(feature_range=(0, 1))
      scaled_data = scaler.fit_transform(data[['voltage', 'current', 'power']])
    • Bikin Sequence Data:
      • LSTM butuh data dalam bentuk time steps. Contoh:
        • Input: 60 data terakhir (1 jam terakhir jika interval 1 menit).
        • Output: 1 data berikutnya (tegangan di menit ke-61).
      import numpy as np
      
      def create_sequences(data, seq_length):
          X, y = [], []
          for i in range(len(data)-seq_length):
              X.append(data[i:i+seq_length])
              y.append(data[i+seq_length, 0])  # Asumsi kolom 0 = tegangan
          return np.array(X), np.array(y)

ATAU bisa menggunakan program lain seperti dibawah ini

import pandas as pd

from sklearn.preprocessing import MinMaxScaler

import numpy as np


# Contoh dataset dari power meter

data = {

    'tegangan': [220.1, 220.3, 220.5, 220.6, 220.8, 221.0, 221.2, 221.3, 221.5, 221.6],

    'arus': [1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4],

    'daya': [330, 340, 350, 360, 370, 380, 390, 400, 410, 420]

}

df = pd.DataFrame(data)



# Normalisasi data

scaler = MinMaxScaler()

df_scaled = scaler.fit_transform(df)




# Buat dataset untuk LSTM

def create_sequences(data, n_steps=5):

    X, y = [], []

    for i in range(len(data) - n_steps):

        X.append(data[i:i+n_steps])

        y.append(data[i+n_steps])

    return np.array(X), np.array(y)

X, y = create_sequences(df_scaled, n_steps=5)

3️ Membangun Model LSTM

  • Model Simple LSTM (Pakai Keras/TensorFlow):
    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import LSTM, Dense, Dropout
    
    model = Sequential()
    model.add(LSTM(units=50, return_sequences=True, input_shape=(seq_length, 3)))  # 3 fitur: V, I, P
    model.add(Dropout(0.2))  # Biar ga overfitting
    model.add(LSTM(units=50))
    model.add(Dense(1))  # Output: prediksi tegangan
    
    model.compile(optimizer='adam', loss='mean_absolute_error')
  • Tips Arsitektur:
    • Kalau data kompleks, tambah layer LSTM (tapi jangan lebih dari 3 layer).
    • Gunakan Dropout (0.2-0.5) atau L2 Regularization kalau model mulai ngafal data.

    Training: “Jangan Lupa Validasi”

  • Split Data: 80% training, 20% testing.
  • Pakai Callback:
    from tensorflow.keras.callbacks import EarlyStopping
    
    early_stop = EarlyStopping(monitor='val_loss', patience=5)  # Stop kalau loss ga turun 5 epoch
    history = model.fit(X_train, y_train, epochs=50, batch_size=32, 
                        validation_data=(X_test, y_test), callbacks=[early_stop])
  • Evaluasi:
    • Hitung MAE (Mean Absolute Error) dan RMSE.
    • Kalau MAE < 5% skala tegangan (e.g., error < 11.5V untuk tegangan 230V), model bisa dibilang oke.

4️ Prediksi Tegangan Berikutnya

    • Timestamp Prediksi:
      • Untuk interval 1 menit: Prediksi 15-60 menit ke depan (buat antisipasi beban naik/turun).
      • Untuk interval 1 detik: Prediksi 5-60 detik ke depan (real-time monitoring).
    • Rekomendasi Pengambilan Data:
      • High Load Hours: Ambil data jam 18.00-22.00 (biasanya beban listrik rumah tinggi).
      • Low Load Hours: Ambil juga data jam 02.00-04.00 (buat latih model paham pola beban rendah).
      • Pro Tip: Jika pakai IoT Platform (e.g., ThingsBoard), bisa set adaptive sampling: interval pendek saat tegangan fluktuatif, interval panjang saat stabil.
# Ambil data terakhir sebagai input prediksi

last_steps = df_scaled[-5:].reshape(1, 5, 3)

predicted_voltage = model.predict(last_steps)




# Kembalikan ke skala asli

predicted_voltage = scaler.inverse_transform([[predicted_voltage[0][0], 0, 0]])[0][0]




print(f"Prediksi Tegangan Berikutnya: {predicted_voltage:.2f} V")


Contoh Hasil Prediksi:

Waktu Sekarang: 2023-10-01 18:30:00  
Tegangan Prediksi 15 Menit Lagi: 220V (Actual: 218V)  
Rekomendasi: Naikkan kapasitor bank di jam 18.45! 🔌

Yang Perlu Diwaspadai:

      • Sensor error → data sampah → prediksi absurd.
      • Listrik mati → Orange Pi ikut mati → pakai UPS kecil.

10.Kesimpulan

1️⃣ LSTM sangat cocok untuk prediksi berbasis waktu, termasuk tegangan listrik.
2️⃣ Gunakan data power meter yang lengkap (tegangan, arus, daya) untuk hasil lebih akurat.
3️⃣ Ambil data setiap 1 detik atau 5 detik agar bisa menangkap pola perubahan tegangan.
4️⃣ Gunakan Orange Pi untuk membaca data power meter via Modbus RTU, lalu proses dengan LSTM.

Saran Tambahan 🚀

    • Edge Computing: Proses data langsung di Orange Pi (pakai TensorFlow Lite) biar ga perlu kirim data ke cloud.
    • Tambahkan Fitur:
      • Suhu sekitar (penggunaan AC bisa pengaruhi beban).
      • Hari libur/weekday (beban listrik beda).
    • Maintenance Model: Retrain model tiap 1 bulan pakai data terbaru (karena pola beban listrik bisa berubah).

🔥 Next Step: Bisa kita coba implementasi lebih lanjut dengan database atau Node-RED untuk visualisasi hasil prediksi! 🚀

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Sekarang