@Echo off
setlocal EnableExtensions EnableDelayedExpansion
cd /d "%~dp0"
if not exist "logs" mkdir "logs"
set "TV=192.168.1.12:5555"
set "ADB=adb"
set "DELAY=8"
set "CONNECT_RETRIES=3"
set "LOG=logs\tv_wake.log"
if exist "config.json" (
for /f "usebackq tokens=1,* delims==" %%A in (`powershell -NoProfile -ExecutionPolicy Bypass -Command "$ErrorActionPreference = 'Stop'; $c = Get-Content -Raw -LiteralPath 'config.json' | ConvertFrom-Json; if ($c.tv_device) { 'TV=' + $c.tv_device }; if ($c.adb_path) { 'ADB=' + $c.adb_path }; if ($null -ne $c.delay_before_wake_seconds) { 'DELAY=' + [int]$c.delay_before_wake_seconds }" 2^>nul`) do (
if /i "%%A"=="TV" if not "%%B"=="" set "TV=%%B"
if /i "%%A"=="ADB" if not "%%B"=="" set "ADB=%%B"
if /i "%%A"=="DELAY" if not "%%B"=="" set "DELAY=%%B"
)
)
echo ============================== >> "%LOG%"
echo [%date% %time%] Haier TV wake script started >> "%LOG%"
echo [%date% %time%] TV=%TV% ADB=%ADB% Delay=%DELAY%s >> "%LOG%"
powershell -NoProfile -Command "Start-Sleep -Seconds %DELAY%" >nul 2>&1
set "CONNECTED=0"
for /l %%I in (1,1,%CONNECT_RETRIES%) do (
echo [%date% %time%] Connecting to %TV% attempt %%I/%CONNECT_RETRIES% >> "%LOG%"
"%ADB%" connect "%TV%" >> "%LOG%" 2>&1
echo [%date% %time%] adb connect exit code: !errorlevel! >> "%LOG%"
"%ADB%" devices >> "%LOG%" 2>&1
"%ADB%" devices | findstr /c:"%TV% device" >nul 2>&1
if not errorlevel 1 (
set "CONNECTED=1"
goto :connected
)
powershell -NoProfile -Command "Start-Sleep -Seconds 2" >nul 2>&1
)
:connected
if not "%CONNECTED%"=="1" (
echo [%date% %time%] TV is not connected over ADB, skipping keyevents >> "%LOG%"
echo [%date% %time%] Done >> "%LOG%"
endlocal
exit /b 0
)
echo [%date% %time%] Sending WAKEUP keyevent 224 >> "%LOG%"
"%ADB%" -s "%TV%" shell input keyevent 224 >> "%LOG%" 2>&1
powershell -NoProfile -Command "Start-Sleep -Seconds 1" >nul 2>&1
echo [%date% %time%] Sending INPUT keyevent 178 >> "%LOG%"
"%ADB%" -s "%TV%" shell input keyevent 178 >> "%LOG%" 2>&1
powershell -NoProfile -Command "Start-Sleep -Seconds 1" >nul 2>&1
echo [%date% %time%] Sending OK keyevent 23 >> "%LOG%"
"%ADB%" -s "%TV%" shell input keyevent 23 >> "%LOG%" 2>&1
echo [%date% %time%] Done >> "%LOG%"
endlocal
exit /b 0