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.
No | Materi | Tanggal | Waktu | Harga | Lokasi | View | Action |
---|---|---|---|---|---|---|---|
1 | IOT PLC SCADA Siemens | 7-8 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
2 | IOT PLC SCADA Omron | 14 - 15 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
3 | IOT PLC SCADA Schneider | 21-22 Juni 2025 | 08.00 -16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
4 | IOT PLC SCADA Allen Bradley | 28-29 Juni 2025 | 08.00-16.00 | 2000000 | Surabaya | Silabus | Daftar 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:
-
- LSTM melihat tegangan 220V, 221V, 219V…
- Menyimpan informasi penting & melupakan yang tidak perlu.
- 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?
-
-
- LSTM membaca data beberapa waktu sebelumnya (misalnya 5 detik terakhir).
- LSTM menentukan pola berdasarkan data lama (apakah naik, turun, atau fluktuatif?).
- 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.
- Jangan hanya gunakan tegangan, tapi juga:
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:
pyModbus
,RPi.GPIO
, ataupymysql
(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 monitoring: 1-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).
- Sampling Interval:
- Timestamp yang Disarankan ⏰:
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
darisklearn
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)
- LSTM butuh data dalam bentuk time steps. Contoh:
- Handle Missing Data:
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.
- Timestamp Prediksi:
# 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! 🚀