W sieci jest wiele materiałów na temat integracji TV PHILIPS z domoticz i home assistant. Niestety nie znalazłem rozwiązań realizujących moje dwie potrzeby. A jakie one są?
- Wyłączanie telewizora – np. wyjście z domu, sen etc.
- Włączanie telewizora z obsługą wakeonlan – np. uruchomienie wiadomości porannych w ramach pobudki.
Zaznaczę, że w moim przypadku źródłem sygnałów AV jest amplituner, więc mam trochę prościej.
W przypadku telewizorów PHILIPS w rocznikach >=2016 wymagana jest dodatkowa autentykacja urządzeń sterujących.
Przeprowadzamy ją za pomocą skryptu philps.py ja pobrałem go z stąd:
https://github.com/suborb/philips_android_tv/blob/master/philips.py
Skrypt uruchamiamy tak:
python philips.py --host 192.168.1.154 pair
gdzie 192.158.1.154 to adres ip naszego telewizora w sieci
Po uruchomieniu podajemy passcode (w telewizorze) a następnie odczytujemy username i password w postaci:
Username for subsequent calls is: 2xqDUOQfIjGxqL4M Password for subsequent calls is: ccf9b46f9bb9a7efdf929fe8c0968cf1761bc5518fa8f99750096752b40217fd
Po takim sparowaniu za pomocą CURL możemy rozpocząć proces sterowania telewizorem.
Przykładowe komendy:
# wyłączenie:
curl -s --insecure --anyauth --user USER:PASS -H "Accept: application/json" -X POST -d "{\"key\":"Standby"}" <a href="https://192.168.1.154:1926/6/input/key">https://192.168.1.154:1926/6/input/key</a>
# status:
curl -s --insecure --anyauth --user USER:PASS -H "Accept: application/json" -X GET <a href="https://192.168.1.154:1926/6/system">https://192.168.1.154:1926/6/system</a>
#Audio, głośność
curl -s --insecure --anyauth --user USER:PASS -H "Accept: application/json" -X POST -d "{\"muted\":false,\"current\":0}" <a href="https://192.168.1.154:1926/6/audio/volume">https://192.168.1.154:1926/6/audio/volume</a>
# aktualny tryb pracy
curl -s --insecure --anyauth --user USER:PASS -H "Accept: application/json" -X GET <a href="https://192.168.1.154:1926/6/powerstate">https://192.168.1.154:1926/6/powerstate</a>
odpowiednio USER:PASS to w moim przypadku: 2xqDUOQfIjGxqL4M:ccf9b46f9bb9a7efdf929fe8c0968cf1761bc5518fa8f99750096752b40217fd
Więcej komend można znaleźć tu: http://jointspace.sourceforge.net/projectdata/documentation/jasonApi/1/doc/API.html
I wszystko by było fajnie, poza jedną małą rzeczą. Uśpionego PHILIPSa nie da wybudzić się za pomocą powyższych metod.
Z pomocą przychodzi pakiet WAKEONLAN. Instalacja:
sudo apt-get install wakeonlan
Tak więc jeżeli puścimy MAGIC PACKET (WAKEONLAN) na nasz TV PHILPS, odczekamy aż zacznie pingować i a następnie wywołamy komendę STANDBY – skutecznie włączymy nasze urządzenie.
Poniżej skrypt tv.sh w shellu realizujący powyższy proces:
#!/bin/bash
#setup
hostip=192.168.69.70
hostmac=70:af:24:11:9f:8b
user=bJA8dKn2zGOiOPCt
pass=dac73bd9961a8525a0e318b68002c5d6c93b89b310664152045ba1444c2a6304
#parametry
status=0
off=0
on=0
ha=0
# ha - home assistant support
while [ -n "$1" ]; do
case "$1" in
-status) status=1 ;;
-ha) ha=1 ;;
-on) on=1 ;;
-off) off=1 ;;
*) echo "$1 - nierozpoznany parametr" ;
esac
shift
done
if [ $ha = 1 ] && [ $status = 1 ] ; then
sleep 3
fi
getcmd="curl -s --max-time 2 --insecure --anyauth --user $user:$pass -H \"Accept: application/json\" -X GET https://$hostip:1926/6/CMD"
keycmd="curl -s --max-time 2 --insecure --anyauth --user $user:$pass -H \"Accept: application/json\" -X POST -d \"{\\\"key\\\":\"KEY\"}\" https://$hostip:1926/6/input/key"
getpowerstatecommand=${getcmd/CMD/powerstate}
jsonres=$(eval $getpowerstatecommand)
powerstate=$(jq -r '.powerstate' <<< ${jsonres})
#obsluga cmd
if [ -z "$powerstate" ] ; then
powerstate="Off"
fi
if [ $status = 1 ] ; then
if [ $ha = 1 ] ; then
if [ "$powerstate" == "On" ] ; then
exit 0
else
exit 1
fi
else
echo "$powerstate"
fi
fi
#tv jest wyłączony, robimy budzenie, potem włączenie
if [ $on = 1 ] && [ "$powerstate" == "Off" ] ; then
wakeonlan "$hostmac"
((count = 20))
while [[ $count -ne 0 ]] ; do
ping -c 1 "$hostip" > /dev/null
rc=$?
if [[ $rc -eq 0 ]] ; then
((count = 1))
fi
((count = count - 1))
done
if [[ $rc -eq 0 ]] ; then
sleep 5
cmd=${keycmd/KEY/Standby}
eval $cmd
fi
fi
if [ $on = 1 ] && [ "$powerstate" == "Standby" ] ; then
cmd=${keycmd/KEY/Standby}
eval $cmd
fi
if [ $off = 1 ] && [ "$powerstate" == "On" ] ; then
cmd=${keycmd/KEY/Standby}
eval $cmd
fi
Skrócona instrukcja:
Możliwe wywołania:
tv.sh -status : zwraca status aktualny telewizora
tv.sh -on : wlacza telewizor
tv.sh -off : wylacza telewizor
jq – JSON command utility (bo będę się pewnie więcej bawił JSONem)
wakeonlan – magic packet utility
Instalacja jq:
cd /tmp
wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
tar xfvz jq-1.5.tar.gz
cd jq-1.5
./configure && make && sudo make install
Instalacja wakeonlan:
apt-get install wakeonlan
Na koniec dla użytkowników HOME ASSISTANT kawałek z configuration.yaml
switch: platform: command_line switches: tv: command_on: "/home/pi/scripts/tv/tv.sh -on" command_off: "/home/pi/scripts/tv/tv.sh -off" command_state: "/home/pi/scripts/tv/tv.sh -status -ha" friendly_name: Telewizor PHILIPS

Widzę na jednym z załączonych grafik odczyt z czujników ciśnienia, temperatury, natężenia światła oraz wilgotności względnej. Można prosić o informację za pomocą jakich urządzeń te parametry są odczytywane?Pozdrawiam
Xiaomi, bramka +
1. czujnik temperatury (dla temp., ciśnienie, wilgotność)
2. czujnik ruchu (dla ruchu:-) i oświetlenia) – werjsa starsza, ta bez nóżki działa u mnie lepiej
Dodatkowo można wykorzystać kontaktrony, przyciski, polecam.
Na promocjach można wyłapać te czujki po taniości.
więcej tu: https://www.mi.com/global/mi-smart-sensor-set/