Label

Asterisk (2) CMD (2) Elektronika (7) Fisika Mekanik (1) Matematika (1) Nginx (2) Software (8)
Tampilkan postingan dengan label Software. Tampilkan semua postingan
Tampilkan postingan dengan label Software. Tampilkan semua postingan

Senin, 17 Maret 2025

Komunikasi antara server dan client dalam protokol HTTP

Komunikasi antara server dan client dalam protokol HTTP dilakukan dalam bentuk teks, tetapi teks ini sebenarnya dikirim sebagai bit (biner) melalui jaringan. Berikut adalah prosesnya:


1. Pengiriman Data dalam Bentuk Teks

HTTP menggunakan format teks berbasis ASCII atau UTF-8, sehingga permintaan (request) dan respons (response) dapat dibaca manusia. Contohnya:

Contoh Permintaan HTTP (Request)

GET /index.html HTTP/1.1
Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html
  • GET → Metode HTTP yang meminta sumber daya.
  • Host → Nama domain server tujuan.
  • User-Agent → Identitas perangkat/klien yang mengakses.
  • Accept → Jenis konten yang dapat diterima oleh klien.

Contoh Respons HTTP (Response)

http
HTTP/1.1 200 OK
Content-Type: text/html Content-Length: 1024 <html> <head><title>Contoh</title></head> <body><h1>Hello, World!</h1></body> </html>
  • HTTP/1.1 200 OK → Status respons bahwa permintaan berhasil.
  • Content-Type: text/html → Jenis data yang dikirim adalah HTML.
  • Content-Length: 1024 → Panjang konten dalam byte.

2. Pengiriman Data dalam Bentuk Bit (Biner)

Walaupun HTTP berbasis teks, ketika data dikirim melalui jaringan, data tersebut diubah menjadi bit (0 dan 1).

Sebagai contoh, teks GET /index.html HTTP/1.1 dalam ASCII dikonversi ke kode biner:

01000111 01000101 01010100 00100000 00101111 01101001 01101110 ...
  • 01000111 → Huruf G
  • 01000101 → Huruf E
  • 01010100 → Huruf T
  • 00100000 → Spasi
  • 00101111/
  • 01101001i
  • dan seterusnya...

Setiap huruf dan simbol dikonversi ke bentuk bit menggunakan kode ASCII atau UTF-8, lalu dikirim melalui protokol TCP/IP.


3. Bagaimana Data Ditransmisikan?

(1) TCP/IP Menangani Pengiriman Data

HTTP bekerja di atas protokol TCP/IP, yang membagi data menjadi paket-paket kecil sebelum dikirim melalui jaringan.

  1. Client mengirim permintaan HTTP → Data teks diubah menjadi bit dan dikirim ke server menggunakan TCP.
  2. Server menerima permintaan → Data bit dikonversi kembali ke teks oleh server.
  3. Server mengirim respons → Data teks dikonversi menjadi bit, dikirim ke klien, lalu ditampilkan di browser.

(2) Penggunaan Enkripsi (HTTPS)

Jika menggunakan HTTPS, data dikodekan dengan TLS/SSL sebelum dikirim. Ini membuat data lebih aman karena dikonversi menjadi bit terenkripsi, sehingga tidak bisa langsung dibaca oleh pihak ketiga.


Kesimpulan

  • HTTP dikirim dalam bentuk teks yang bisa dibaca manusia.
  • Tetapi, saat dikirim di jaringan, data dikonversi menjadi bit (0 dan 1).
  • TCP/IP membagi data menjadi paket kecil agar bisa dikirim dengan lebih efisien.
  • Dengan HTTPS, data dienkripsi sebelum dikirim untuk keamanan tambahan.

Kalau mau lihat lebih dalam, bisa pakai Wireshark untuk menganalisis bagaimana data HTTP sebenarnya dikirim! 

Berikut adalah daftar kode status HTTP beserta penjelasannya:

 Berikut adalah daftar kode status HTTP beserta penjelasannya:

1xx: Informational (Informasi)

  • 100 Continue – Server menerima permintaan dan klien dapat melanjutkan.
  • 101 Switching Protocols – Server menyetujui perubahan protokol yang diminta.
  • 102 Processing – Server sedang memproses permintaan tetapi belum ada respons final.

2xx: Success (Berhasil)

  • 200 OK – Permintaan berhasil diproses.
  • 201 Created – Permintaan berhasil dan sumber daya baru dibuat.
  • 202 Accepted – Permintaan diterima, tetapi masih dalam proses.
  • 203 Non-Authoritative Information – Respons berhasil tetapi informasi berasal dari sumber lain.
  • 204 No Content – Permintaan berhasil tetapi tidak ada konten yang dikembalikan.
  • 205 Reset Content – Permintaan berhasil, tetapi klien harus mereset tampilan.
  • 206 Partial Content – Sebagian dari konten dikirim sesuai dengan permintaan.

3xx: Redirection (Pengalihan)

  • 300 Multiple Choices – Ada beberapa pilihan untuk permintaan ini.
  • 301 Moved Permanently – Sumber daya telah dipindahkan secara permanen ke URL baru.
  • 302 Found – Sumber daya sementara dipindahkan ke lokasi baru.
  • 303 See Other – Sumber daya dapat ditemukan di lokasi lain.
  • 304 Not Modified – Tidak ada perubahan sejak permintaan terakhir.
  • 307 Temporary Redirect – Pengalihan sementara dengan metode yang sama.
  • 308 Permanent Redirect – Pengalihan permanen dengan metode yang sama.

4xx: Client Errors (Kesalahan Klien)

  • 400 Bad Request – Permintaan tidak valid atau salah format.
  • 401 Unauthorized – Akses ditolak karena autentikasi diperlukan.
  • 403 Forbidden – Akses ditolak meskipun autentikasi benar.
  • 404 Not Found – Sumber daya yang diminta tidak ditemukan.
  • 405 Method Not Allowed – Metode HTTP tidak diizinkan untuk sumber daya ini.
  • 406 Not Acceptable – Konten tidak sesuai dengan yang dapat diterima oleh klien.
  • 407 Proxy Authentication Required – Autentikasi melalui proxy diperlukan.
  • 408 Request Timeout – Server tidak menerima permintaan dalam waktu tertentu.
  • 409 Conflict – Terjadi konflik dalam permintaan.
  • 410 Gone – Sumber daya tidak tersedia secara permanen.
  • 411 Length Required – Header Content-Length diperlukan.
  • 412 Precondition Failed – Prasyarat dalam permintaan gagal.
  • 413 Payload Too Large – Ukuran permintaan terlalu besar.
  • 414 URI Too Long – URL permintaan terlalu panjang.
  • 415 Unsupported Media Type – Tipe media tidak didukung.
  • 416 Range Not Satisfiable – Permintaan rentang tidak dapat dipenuhi.
  • 417 Expectation Failed – Server tidak dapat memenuhi header Expect.
  • 418 I'm a teapot – Kode lelucon dari HTTP/1.1 (RFC 2324).
  • 422 Unprocessable Entity – Data yang dikirim tidak dapat diproses.
  • 425 Too Early – Permintaan dikirim terlalu cepat.
  • 426 Upgrade Required – Klien harus memperbarui protokol.
  • 429 Too Many Requests – Terlalu banyak permintaan dalam waktu singkat.

5xx: Server Errors (Kesalahan Server)

  • 500 Internal Server Error – Kesalahan umum pada server.
  • 501 Not Implemented – Metode tidak didukung oleh server.
  • 502 Bad Gateway – Server menerima respons tidak valid dari upstream.
  • 503 Service Unavailable – Server sedang tidak tersedia.
  • 504 Gateway Timeout – Timeout saat menunggu respons dari upstream.
  • 505 HTTP Version Not Supported – Versi HTTP tidak didukung.
  • 507 Insufficient Storage – Server tidak memiliki cukup penyimpanan.
  • 508 Loop Detected – Terjadi loop yang tak terbatas dalam pemrosesan permintaan.

Rabu, 12 Maret 2025

mengonversi file WAV ke SLN

 Untuk mengonversi file WAV ke SLN (Asterisk raw signed linear audio) menggunakan SoX, gunakan perintah berikut:

Konversi WAV ke SLN (8 kHz, 16-bit PCM)

sh

sox input.wav -t raw -r 8000 -e signed -b 16 -c 1 output.sln

Konversi WAV ke SLN16 (16 kHz, 16-bit PCM)

sh

sox input.wav -t raw -r 16000 -e signed -b 16 -c 1 output.sln16

Penjelasan Opsi SoX:

  • input.wav → File input dalam format WAV.
  • -t raw → Output dalam format raw audio.
  • -r 8000 atau -r 16000 → Sample rate (8 kHz untuk SLN, 16 kHz untuk SLN16).
  • -e signed → Format audio signed PCM.
  • -b 16 → Bit-depth 16-bit.
  • -c 1 → Audio mono (Asterisk biasanya menggunakan mono).
  • output.sln → Nama file output.

Setelah dikonversi, file .sln dapat digunakan dalam Asterisk atau diputar menggunakan SoX:

sh

sox -t raw -r 8000 -e signed -b 16 -c 1 output.sln -d

Jika ingin mengecek informasi file hasil konversi:

sh

soxi output.sln

memutar file .sln dengan sox menggunakan sell

 File .sln (Solution) adalah format proyek yang digunakan oleh Microsoft Visual Studio dan bukan file audio. Oleh karena itu, SoX (Sound eXchange) tidak dapat memutar file .sln secara langsung. Namun, jika yang dimaksud adalah file audio dengan ekstensi .sln (misalnya Asterisk raw signed linear audio), maka SoX bisa digunakan untuk memutarnya.


Memutar File .sln dengan SoX di Terminal (Linux/Mac)

Jika file .sln yang dimaksud adalah file audio, misalnya Asterisk 16-bit Signed Linear PCM, Anda bisa menjalankan perintah berikut:

sh

sox -t raw -r 8000 -e signed -b 16 -c 1 input.sln -d

Penjelasan perintah:

  • -t raw → Menentukan bahwa file adalah raw audio.
  • -r 8000 → Sample rate 8 kHz (sesuai format umum Asterisk).
  • -e signed → Data audio dalam format signed.
  • -b 16 → Bit-depth 16-bit.
  • -c 1 → Audio memiliki 1 channel (mono).
  • input.sln → Nama file yang akan diputar.
  • -d → Menggunakan output default (misalnya ALSA di Linux atau CoreAudio di Mac).

Jika file .sln memiliki sample rate berbeda (misalnya 16 kHz untuk .sln16), ubah perintahnya menjadi:

sh

sox -t raw -r 16000 -e signed -b 16 -c 1 input.sln -d

Konversi File .sln ke .wav

Jika ingin mengonversi file .sln ke format .wav, gunakan perintah:

sh

sox -t raw -r 8000 -e signed -b 16 -c 1 input.sln output.wav

Setelah dikonversi ke .wav, file dapat diputar dengan pemutar media biasa seperti aplay, ffplay, atau vlc:

sh

aplay output.wav

atau

sh

ffplay output.wav

Jika yang dimaksud adalah file .sln dari Visual Studio, maka Anda perlu membuka file tersebut di Visual Studio atau menggunakan editor teks untuk melihat isi kode.

Apakah file .sln yang dimaksud adalah file audio dari Asterisk atau file proyek dari Visual Studio?

 Berikut adalah kode PHP sederhana untuk menampilkan data dari tabel admin dalam bentuk tabel HTML:

<?php

// Konfigurasi database

$host = "localhost";

$user = "root"; // Ganti dengan user database Anda

$pass = ""; // Ganti dengan password database Anda

$dbname = "nama_database"; // Ganti dengan nama database Anda


// Koneksi ke database

$conn = new mysqli($host, $user, $pass, $dbname);


// Cek koneksi

if ($conn->connect_error) {

    die("Koneksi gagal: " . $conn->connect_error);

}


// Query untuk mengambil data dari tabel admin

$sql = "SELECT * FROM admin";

$result = $conn->query($sql);


?>


<!DOCTYPE html>

<html lang="id">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Data Admin</title>

    <style>

        table {

            width: 100%;

            border-collapse: collapse;

        }

        table, th, td {

            border: 1px solid black;

        }

        th, td {

            padding: 8px;

            text-align: left;

        }

        th {

            background-color: #f2f2f2;

        }

    </style>

</head>

<body>


<h2>Daftar Admin</h2>


<table>

    <thead>

        <tr>

            <?php

            // Ambil nama kolom secara dinamis

            if ($result->num_rows > 0) {

                $columns = array_keys($result->fetch_assoc());

                foreach ($columns as $column) {

                    echo "<th>" . htmlspecialchars($column) . "</th>";

                }

                $result->data_seek(0); // Kembalikan pointer ke awal hasil query

            }

            ?>

        </tr>

    </thead>

    <tbody>

        <?php

        // Tampilkan data

        if ($result->num_rows > 0) {

            while ($row = $result->fetch_assoc()) {

                echo "<tr>";

                foreach ($row as $value) {

                    echo "<td>" . htmlspecialchars($value) . "</td>";

                }

                echo "</tr>";

            }

        } else {

            echo "<tr><td colspan='100%'>Tidak ada data</td></tr>";

        }

        ?>

    </tbody>

</table>


</body>

</html>


<?php

// Tutup koneksi

$conn->close();

?>


cara untuk menambahkan sub modul tanpa perlu kompilasi ulang dari sumber.

 jika Nginx Anda tidak dikompilasi dengan modul ngx_http_sub_module, maka Anda perlu menginstal ulang Nginx dengan dukungan modul tersebut. Namun, ada beberapa cara untuk menambahkan modul tanpa perlu kompilasi ulang dari sumber. Berikut adalah beberapa opsi:


1. Periksa Apakah Modul Sudah Ada

Sebelum menginstal ulang, cek apakah Nginx sudah mendukung sub_filter:


nginx -V 2>&1 | grep -o with-http-sub

Jika outputnya menunjukkan with-http-sub, maka modul sudah tersedia dan Anda hanya perlu mengaktifkannya dalam konfigurasi (sub_filter on;). Jika tidak ada output, lanjut ke langkah berikutnya.


2. Gunakan Paket Nginx dengan Modul sub_filter (Tanpa Kompilasi Ulang)

Di beberapa distribusi Linux, paket Nginx yang sudah dikompilasi dengan sub_filter tersedia, sehingga Anda bisa menginstalnya ulang dengan perintah berikut:

Ubuntu/Debian

sudo apt update sudo apt install --reinstall nginx

CentOS/RHEL

sudo yum reinstall nginx

Setelah itu, periksa ulang dengan nginx -V.


3. Menggunakan Dynamic Module (Tanpa Kompilasi Ulang Penuh)

Jika modul tersedia sebagai modul dinamis, Anda bisa menambahkannya tanpa menginstal ulang seluruh Nginx.

Cek apakah modul tersedia dengan:

ls /usr/lib/nginx/modules/ | grep sub

Jika ditemukan modul seperti ngx_http_sub_module.so, tambahkan ke konfigurasi Nginx:

load_module modules/ngx_http_sub_module.so;

Lalu restart Nginx:

sudo systemctl restart nginx

Jika tidak tersedia, Anda harus menginstal ulang dengan metode berikut.


4. Kompilasi Ulang Nginx dengan --with-http-sub-module

Jika distribusi Anda tidak menyediakan sub_filter, maka satu-satunya cara adalah mengompilasi ulang Nginx dari sumber.

Langkah-langkah:

  1. Pasang dependensi (Ubuntu/Debian):

    sudo apt update sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
  2. Unduh dan ekstrak kode sumber Nginx

    cd /usr/local/src wget http://nginx.org/download/nginx-$(nginx -v 2>&1 | grep -o '[0-9.]*').tar.gz tar -xvzf nginx-*.tar.gz cd nginx-*
  3. Konfigurasi ulang dengan modul sub_filter

    ./configure --with-http-sub-module make sudo make install
  4. Restart Nginx

    sudo systemctl restart nginx

Sekarang, sub_filter harus bisa digunakan.

CodeIgniter (CI), agar base_url bisa dinamis mengikuti protokol (http atau https) dan domain tanpa perlu diubah secara manual

 Di CodeIgniter (CI), agar base_url bisa dinamis mengikuti protokol (http atau https) dan domain tanpa perlu diubah secara manual, Anda bisa menggunakan pendekatan berikut:


1. Gunakan isset($_SERVER['HTTPS']) untuk Menentukan Protokol Secara Otomatis

Buka file konfigurasi config.php yang ada di:
📂 application/config/config.php

Lalu ubah baris berikut:

php
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . "/";

🔹 Ini akan otomatis mendeteksi apakah situs diakses melalui HTTPS atau HTTP, kemudian mengatur base_url sesuai dengan domain yang digunakan.


2. Gunakan $_SERVER['REQUEST_SCHEME'] (Alternatif untuk PHP 7+)

Jika menggunakan PHP 7+, Anda juga bisa menggunakan:

php

$config['base_url'] = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . "/";

🔹 $_SERVER['REQUEST_SCHEME'] secara otomatis mengembalikan http atau https.


3. Jika Menggunakan Subfolder (Opsional)

Jika aplikasi CodeIgniter Anda tidak berada di root domain tetapi dalam subfolder (/ci_app), tambahkan path ke subfolder:

php

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . "/ci_app/";

Gantilah /ci_app/ sesuai dengan path aplikasi CodeIgniter Anda.


4. Pastikan index.php Dapat Dihilangkan (Opsional)

Jika ingin agar URL lebih bersih tanpa index.php, buka file config.php dan ubah:

php

$config['index_page'] = '';

Lalu buat file .htaccess di root proyek dengan isi berikut:

apache

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]

Kesimpulan

Agar base_url otomatis menyesuaikan HTTP/HTTPS, gunakan:

php

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . "/";

✔ Jika menggunakan PHP 7+, cukup:

php

$config['base_url'] = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . "/";

✔ Jika aplikasi berada dalam subfolder, tambahkan path manual.

Coba ubah konfigurasinya dan lihat apakah sudah berjalan sesuai harapan! 

Nginx sebagai reverse proxy

 Anda dapat menambahkan host dengan nama dan alamat IP lokal ke konfigurasi Nginx sebagai reverse proxy dengan mengikuti langkah-langkah berikut:

  1. Buka File Konfigurasi Nginx: Pertama, buka file konfigurasi Nginx yang relevan. Biasanya, ini dapat ditemukan di /etc/nginx/nginx.conf atau dalam direktori /etc/nginx/conf.d/.

  2. Tambahkan Konfigurasi Server: Di dalam file konfigurasi Nginx, Anda perlu menambahkan blok server untuk host yang ingin Anda reverse proxy. Berikut contoh konfigurasi:

nginx

server { listen 80; server_name nama_anda.local; # Gantilah nama_anda.local dengan nama host yang Anda inginkan access_log /var/log/nginx/nama_anda.access.log; location / { proxy_pass http://alamat_ip_lokal:port_tujuan; # Gantilah alamat_ip_lokal dan port_tujuan sesuai kebutuhan proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }

Pastikan untuk mengganti nama_anda.local dengan nama host yang Anda inginkan dan alamat_ip_lokal dengan alamat IP lokal host yang akan Anda reverse proxy. Juga, ubah port_tujuan sesuai dengan port yang digunakan oleh aplikasi atau server yang Anda reverse proxy.

  1. Simpan Konfigurasi: Simpan perubahan yang Anda buat pada file konfigurasi Nginx.

  2. Uji Konfigurasi: Sebelum menerapkan konfigurasi baru, selalu uji sintaksisnya untuk memastikan tidak ada kesalahan. Anda dapat melakukannya dengan perintah berikut:

bash

sudo nginx -t

Pastikan Anda tidak mendapatkan pesan kesalahan.

  1. Reload Nginx: Terapkan konfigurasi baru dengan me-reload Nginx:
bash

sudo systemctl reload nginx

Sekarang, Nginx akan mengarahkan permintaan yang masuk ke nama_anda.local ke alamat IP lokal yang telah Anda tentukan.

Pastikan untuk menggantikan nilai-nilai yang sesuai dengan kebutuhan Anda dalam konfigurasi ini dan pastikan server lokal telah diatur untuk mendengarkan permintaan di alamat IP dan port yang Anda tentukan.

Untuk menggunakan HTTPS dengan Nginx sebagai reverse proxy, Anda perlu melakukan beberapa langkah tambahan. Berikut ini adalah panduan umum untuk mengaktifkan HTTPS dalam konfigurasi reverse proxy Nginx:

  1. Panduan Instalasi SSL/TLS Certificate:

    • Anda perlu memiliki sertifikat SSL/TLS yang valid untuk nama host yang akan Anda gunakan. Anda dapat memperoleh sertifikat SSL/TLS dari penyedia sertifikat seperti Let's Encrypt secara gratis.

    • Instal sertifikat SSL/TLS di server Anda. Biasanya, sertifikat tersebut terdiri dari dua file: sertifikat SSL (contoh: your_domain.crt) dan kunci pribadi (contoh: your_domain.key).

  2. Edit Konfigurasi Nginx:

    • Buka file konfigurasi Nginx yang relevan untuk situs yang akan di-reverse proxy (biasanya dalam direktori /etc/nginx/conf.d/ atau /etc/nginx/sites-available/).

    • Perbarui blok server Anda untuk mendukung HTTPS seperti berikut:

nginx

server { listen 443 ssl; server_name nama_anda.local; ssl_certificate /path/to/your_domain.crt; # Ganti dengan path sertifikat SSL Anda ssl_certificate_key /path/to/your_domain.key; # Ganti dengan path kunci pribadi Anda ssl_protocols TLSv1.2 TLSv1.3; # Atur protokol TLS yang diizinkan sesuai kebutuhan ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'; # Atur daftar cipher yang diizinkan sesuai kebutuhan ssl_prefer_server_ciphers off; location / { proxy_pass http://alamat_ip_lokal:port_tujuan; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }

Pastikan Anda mengganti /path/to/your_domain.crt dan /path/to/your_domain.key dengan path yang benar untuk sertifikat SSL/TLS dan kunci pribadi Anda.

  1. Tambahkan Konfigurasi Server HTTP ke HTTPS Redirect (Opsional):

    Untuk memaksa pengguna untuk selalu menggunakan HTTPS, Anda dapat menambahkan konfigurasi server tambahan yang akan mengarahkan permintaan HTTP ke HTTPS. Berikut contohnya:

nginx

server { listen 80; server_name nama_anda.local; return 301 https://$host$request_uri; }
  1. Simpan Konfigurasi, Uji, dan Reload Nginx:

    • Simpan perubahan yang Anda buat pada file konfigurasi Nginx.
    • Uji sintaksis konfigurasi dengan sudo nginx -t untuk memastikan tidak ada kesalahan.
    • Reload Nginx untuk menerapkan perubahan dengan sudo systemctl reload nginx.

Sekarang, Nginx akan menggunakan HTTPS untuk mengamankan lalu lintas ke host yang Anda reverse proxy. Pastikan untuk mengganti nama_anda.local, alamat_ip_lokal, serta path sertifikat SSL/TLS dan kunci pribadi sesuai dengan konfigurasi Anda.


Terbaru

modul pwm dengan arduino pro mini dilengkapi dengan batrai level meter 5 led

  🔋 Contoh Indikator Level Baterai dengan LED (4 Tingkat) 🔧 Tujuan: LED1 menyala jika tegangan ≥ 12.6V (full) LED2 menyala jika teg...

Lainya