import urequests
import ujson
import network
import machine
import time
# Konfigurasi WiFi
SSID = "Wokwi-GUEST" # Ganti dengan nama jaringan WiFi Anda
PASSWORD = "" # Ganti dengan kata sandi WiFi Anda
# URL yang akan diminta data JSON-nya
url = 'http://8df6-36-75-242-237.ngrok-free.app/RPi_webserver/control.php' # Ganti dengan URL sesuai kebutuhan
# Definisikan pin-penentu (GPIO) untuk 74HC595
data_pin = machine.Pin(33, machine.Pin.OUT)
clock_pin = machine.Pin(32, machine.Pin.OUT)
latch_pin = machine.Pin(26, machine.Pin.OUT)
# Fungsi untuk mengirim data ke 74HC595
def shift_out(channels):
data = 0
for j in range(32):
if j < len(channels):
data |= (int(channels[j]["relay"]) << j)
latch_pin.off() # Pindahkan latch_pin ke keadaan rendah sebelum mengirim data
for j in range(32):
data_pin.value((data >> 31) & 1) # Ambil bit paling signifikan terlebih dahulu
clock_pin.on()
clock_pin.off()
data <<= 1
latch_pin.on() # Setelah mengirim semua data, pindahkan latch_pin ke keadaan tinggi
latch_pin.off() # Kembali ke keadaan rendah untuk memungkinkan data masuk ke IC
# Fungsi untuk menghubungkan perangkat ESP32 ke jaringan WiFi
def connect_to_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("Menghubungkan ke jaringan WiFi...")
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
pass
print("Tersambung ke jaringan WiFi")
print("Alamat IP:", wlan.ifconfig()[0])
try:
connect_to_wifi() # Menghubungkan ke jaringan WiFi
while True:
response = urequests.get(url)
if response.status_code == 200:
json_data = response.json() # Menguraikan data JSON
# Proses data sesuai kebutuhan
shift_out(json_data)
time.sleep(0.1) # Delay untuk memberikan waktu untuk melihat efek LED
else:
print('Gagal mendapatkan respons dengan kode status:', response.status_code)
response.close() # Selalu pastikan untuk menutup koneksi HTTP setelah selesai
except Exception as e:
print('Terjadi kesalahan:', e)