#!/bin/bash
# Led Control Script Aria_keratone

# Definisikan variabel
INTERVAL=20
LEDLOW=0       # LED mati
LEDHI=1        # LED hidup
CPU_SHUTDOWN=54000 # Suhu CPU threshold
GPIO_PIN=480   # Nomor GPIO untuk LED
cur_led=0
new_led="$LEDHI" # Mulai dengan LED hidup

# Fungsi untuk mengatur LED
led_set() {
    cur_led=$1
    echo "Mengatur LED ke ${cur_led}."
    
    # Pastikan GPIO telah diekspor
    if [ ! -d /sys/class/gpio/gpio$GPIO_PIN ]; then
        echo $GPIO_PIN > /sys/class/gpio/export
    fi
    # Set direction GPIO
    echo "out" > /sys/class/gpio/gpio$GPIO_PIN/direction
    
    # Kirim nilai ke GPIO
    if [ "$1" -eq "$LEDLOW" ]; then
        echo "0" | sudo tee /sys/class/gpio/gpio$GPIO_PIN/value  # Mengatur LED mati
        echo "LED dimatikan."
    else
        echo "1" | sudo tee /sys/class/gpio/gpio$GPIO_PIN/value  # Mengatur LED hidup
        echo "LED dihidupkan."
    fi
}

# Trap untuk mematikan LED saat menerima sinyal interupsi
trap 'led_set $LEDLOW; exit' SIGINT SIGTERM 

# Mengontrol LED
while :; do
    # Ambil nilai suhu CPU
    cpu=$(cat /sys/class/hwmon/hwmon0/temp1_input)
    
    # Cek jika CPU memiliki nilai
    if [ -z "$cpu" ]; then
        echo "Gagal mendapatkan suhu CPU!"
        sleep $INTERVAL
        continue
    fi

    echo "Suhu CPU saat ini: $cpu"

    # Logika untuk menetapkan LED
    if [ "$cpu" -gt "$CPU_SHUTDOWN" ]; then   # Jika suhu CPU > 54000
        new_led="$LEDHI"  # LED hidup
    else   # Jika suhu CPU <= 54000
        new_led="$LEDLOW"  # LED mati
    fi

    echo "LED baru: $new_led"

    # Set LED hanya jika new_led berubah
    if [ "$new_led" -ne "$cur_led" ]; then
        led_set "$new_led"
        cur_led="$new_led" # Update status LED saat ini
    fi
    sleep $INTERVAL
done
