TKK_E32232028/run_esp32_http_server.ps1

73 lines
2.4 KiB
PowerShell

# 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