import utime
from machine import Pin, Timer
from hcsr04 import HCSR04
import network
import urequests
import ujson
from utelegram import Bot
# Konfigurasi WiFi
SSID = "Nama_WiFi_Anda"
PASSWORD = "Password_WiFi_Anda"
# Konfigurasi Firebase
FIREBASE_URL = "https://your-project-id.firebaseio.com/"
FIREBASE_AUTH = "Your_Firebase_Auth_Token"
# Konfigurasi Telegram
BOT_TOKEN = "Your_Telegram_Bot_Token"
CHAT_ID = "Your_Telegram_Chat_ID"
# Konfigurasi sensor jarak (sesuaikan dengan pin ESP32 Anda)
TRIG_PIN = 12
ECHO_PIN = 14
sensor = HCSR04(trigger_pin=TRIG_PIN, echo_pin=ECHO_PIN)
# Konfigurasi LED (sesuaikan dengan pin ESP32 Anda)
LED_PIN = 2
led = Pin(LED_PIN, Pin.OUT)
# Fungsi untuk mengirim data ke Firebase
def send_to_firebase(distance):
data = {"distance": distance, "timestamp": utime.time()}
headers = {"Content-Type": "application/json", "Authorization": f"Bearer {FIREBASE_AUTH}"}
response = urequests.post(FIREBASE_URL + ".json", data=ujson.dumps(data), headers=headers)
response.close()
# Fungsi untuk mengirim notifikasi Telegram
def send_telegram_notification():
bot = Bot(BOT_TOKEN)
bot.send_message(CHAT_ID, "Tisu toilet hampir habis!")
# Fungsi untuk melakukan pengecekan
def check_tissue(timer):
distance = sensor.distance_cm()
send_to_firebase(distance)
if distance < 10: # Jarak ambang batas (sesuaikan sesuai kebutuhan)
led.value(1) # Nyalakan LED
send_telegram_notification()
else:
led.value(0) # Matikan LED
# Koneksi ke WiFi
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(SSID, PASSWORD)
while not sta_if.isconnected():
pass
# Timer untuk pengecekan berkala
timer = Timer(-1)
timer.init(period=30 * 60 * 1000, mode=Timer.PERIODIC, callback=check_tissue) # 30 menit sekali
# Loop utama (tidak diperlukan dalam kasus ini)
while True:
pass