# MicroPython HTTPS example for Wokwi.com
#-------------------------------------
#wifi
import network
import urequests
import time
#-------------------------------------
#ntp
import ntptime
import utime
#-------------------------------------
#lcd
from machine import Pin , SoftI2C
from time import sleep
from esp32_i2c_lcd import I2cLcd
lcdI2C = SoftI2C (scl = Pin(22), sda = Pin(21) , freq=100000)
pinPIR = Pin(15, Pin.IN)
ledPin = Pin(2,Pin.OUT)
#lcd = I2cLcd(lcdI2C, 39 , 2 , 16)
lcd = I2cLcd(lcdI2C, 39 , 4 , 20)
#----------------------------------------------------
# Connect to WiFi
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.25)
print("Connected!")
#---------------------------------------------------
#NTP client
# Ganti dengan offset zona waktu Anda (dalam detik)
# Misalnya, untuk Waktu Indonesia Bagian Barat (WIB, UTC+7), offsetnya adalah 25200 detik (7 jam * 60 menit * 60 detik)
TIMEZONE_OFFSET_SECONDS = 25200
# Menghubungkan ESP ke jaringan WiFi
#sta_if = network.WLAN(network.STA_IF)
#sta_if.active(True)
#sta_if.connect(SSID, PASSWORD)
#while not sta_if.isconnected():
# pass
#print('Connected! IP address:', sta_if.ifconfig()[0])
# Sinkronisasi waktu dengan server NTP
ntptime.settime()
'''
# Fungsi untuk menampilkan waktu dengan koreksi zona waktu setiap detik
def display_current_time():
while True:
t = utime.localtime()
# Tambahkan offset zona waktu ke hasil localtime
t_with_offset = utime.mktime(t) + TIMEZONE_OFFSET_SECONDS
year, month, day, hour, minute, second, _, _ = utime.localtime(t_with_offset)
print('Current time:', '{}:{}:{} {}-{}-{}'.format(hour, minute, second, day, month, year))
utime.sleep(1) # Tunggu 1 detik sebelum menampilkan waktu lagi
# Jalankan fungsi untuk menampilkan waktu dengan koreksi zona waktu setiap detik
#display_current_time()
'''
t = utime.localtime()
# Tambahkan offset zona waktu ke hasil localtime
t_with_offset = utime.mktime(t) + TIMEZONE_OFFSET_SECONDS
year, month, day, hour, minute, second, _, _ = utime.localtime(t_with_offset)
print('Current time:', '{}:{}:{} {}-{}-{}'.format(hour, minute, second, day, month, year))
utime.sleep(1) # Tunggu 1 detik sebelum menampilkan waktu lagi
#hari_ini = "2024-03-07"
#hari_ini = print('Current time:', '{}-{}-{}'.format( year, month, day))
hari_ini = str('{}-{}-{}'.format( year, month, day))
jam = str('{}:{}:{}'.format( hour, minute, second))
#------------------------------------------------------------------
#https API
kota = "Bandung"
kodekota = 1219
# Send HTTPS request
print("Sending HTTPS request... ", end="")
#response = urequests.get("https://api.dictionaryapi.dev/api/v2/entries/en/success")
#response = urequests.get("https://api.myquran.com/v2/sholat/jadwal/1201/2024-03-07")
response = urequests.get("https://api.myquran.com/v2/sholat/jadwal/1219/"+hari_ini)
#response = urequests.get("https://api.myquran.com/v2/sholat/jadwal/"+kodekota+"/"+hari_ini)
#print(response.text)
import json
y = json.loads(response.text) #ambil respon json
#print (y["jadwal"]["data"]) #ambil nested json
jws = y["data"]["jadwal"] #siapkan penampung
imsak = jws["imsak"]
subuh = jws["subuh"]
dzuhur = jws["dzuhur"]
ashar = jws["ashar"]
maghrib = jws["maghrib"]
isya = jws["isya"]
print('')
print('')
print('----------------------------------------')
print('JWS MicroPython untuk 1000 masjid')
print('Kota : ',kota)
print('Tanggal: ',hari_ini)
print('Waktu : ',jam)
print('----------------------------------------')
print('Subuh',' ','Dzuhur',' ','Ashar',' ','Maghrib',' ','Isya',' ')
print(subuh,' ', dzuhur,' ', ashar,' ',maghrib,' ',isya,' ')
print('')
print('')
#-------------------------------------
lcd.clear()
lcd.putstr("JWS NTP 1000 Masjid\n")
sleep(1)
lcd.clear()
lcd.putstr("Imsak Subuh Dzuhur\n")
#lcd.putstr("04:00 04:10 12:05\n")
lcd.putstr(imsak)
lcd.putstr(" ")
lcd.putstr(subuh)
lcd.putstr(" ")
lcd.putstr(dzuhur)
lcd.putstr("\n")
lcd.putstr("Ashar Maghrib Isya\n")
#lcd.putstr("15:10 18:05 19:30\n")
lcd.putstr(ashar)
lcd.putstr(" ")
lcd.putstr(maghrib)
lcd.putstr(" ")
lcd.putstr(isya)
lcd.putstr(" ")