# Jalankan backend ESP32 + atur variabel environment untuk koneksi MySQL. # Jika .env belum ada, skrip ini akan minta input sekali saja dan menyimpan konfigurasi. $root = Split-Path -Parent $MyInvocation.MyCommand.Path Set-Location $root function Load-EnvFile { param([string]$path) $data = @{} foreach ($line in Get-Content $path) { $trim = $line.Trim() if ([string]::IsNullOrWhiteSpace($trim) -or $trim.StartsWith('#')) { continue } $parts = $trim.Split('=', 2) if ($parts.Count -eq 2) { $data[$parts[0].Trim()] = $parts[1].Trim() } } return $data } function Save-EnvFile { param([string]$path, [hashtable]$data) $lines = @() foreach ($key in $data.Keys) { $lines += "$key=$($data[$key])" } $lines | Set-Content -Path $path -Encoding UTF8 } $envPath = Join-Path $root ".env" if (Test-Path $envPath) { $envData = Load-EnvFile $envPath } else { Write-Host ".env tidak ditemukan. Masukkan konfigurasi MySQL untuk setup sekali jalan." $dbUser = Read-Host "DB_USER (MySQL username)" $dbPasswordSecure = Read-Host "DB_PASSWORD (MySQL password)" -AsSecureString $dbPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($dbPasswordSecure)) $dbHost = Read-Host "DB_HOST [127.0.0.1]" if ([string]::IsNullOrWhiteSpace($dbHost)) { $dbHost = '127.0.0.1' } $dbPort = Read-Host "DB_PORT [3306]" if ([string]::IsNullOrWhiteSpace($dbPort)) { $dbPort = '3306' } $dbName = Read-Host "DB_NAME [face_db]" if ([string]::IsNullOrWhiteSpace($dbName)) { $dbName = 'face_db' } $envData = @{ DB_USER = $dbUser DB_PASSWORD = $dbPassword DB_HOST = $dbHost DB_PORT = $dbPort DB_NAME = $dbName HOST = '0.0.0.0' PORT = '8000' FACE_MODEL = 'Facenet' } Save-EnvFile -path $envPath -data $envData Write-Host ".env dibuat di $envPath" } foreach ($key in $envData.Keys) { Set-Item -Path "env:$key" -Value $envData[$key] } $venvActivate = Join-Path $root ".venv\Scripts\Activate.ps1" if (Test-Path $venvActivate) { Write-Host "Mengaktifkan venv .venv..." . $venvActivate } else { Write-Host "Virtual environment .venv tidak ditemukan. Pastikan sudah di-setup jika diperlukan." } Write-Host "Environment variables sudah diset. Menjalankan esp32_http_server.py..." py .\esp32_http_server.py