Phillips TV - Source setzen

Themen auf die es innerhalb eines Jahres keine Antwort gab, werden hier archiviert.

Moderatoren: Cyrelian, seppy, udo1toni

Gesperrt
Benutzeravatar
lukh
Beiträge: 99
Registriert: 5. Dez 2019 20:15
Answers: 2

Phillips TV - Source setzen

Beitrag von lukh »

Hallo User,

ich beschäftige mich seit geraumer Zeit damit, mein Phillips TV in Openhab einzubinden.
Das ganze funktioniert wohl über JointSpace API meines TV's

Ich habe das Binding dafür installiert und erst einmal die Beispiel Items genommen.
Das funktioniert auch soweit, bis auf zwei Ausnahmen. Leider kann ich keine Source direkt wählen und ich kann keine Lautstärke setzten.

Unabhängig vom Binding habe ich nun auch gelernt, das man den TV auch übers Terminal mit curl ansprechen kann.
Durch dieses Script von eiGelbGeek habe ich etwas rumprobiert und kann im Grunde alles schalten, was über einen Key schaltbar ist.

Da ich das Script leider nicht so gut verstehe, schaffe ich es nicht, die Befehle für Source und Lautstärke aus diesem Script zu extrahieren, um letztendlich erst ein mal im Versuch, meinen TV über einzelne Befehle zu schalten.

Code: Alles auswählen

set_source)
    #Sources => tv , sat , hdmi1 , hdmi2 , hdmi3 , hdmiside , ext1 , ypbpr , vga
    curl -H "Content-Type: application/json" -X POST -d '{"id": "'$2'"}' http://$tv_ipadresse:1925/1/sources/current
    ;;
  set_volume)
    tv_max_volume="$(curl -H "Content-Type: application/json" -s GET  http://$tv_ipadresse:1925/1/audio/volume | jq -r '.max')"
    transform=`echo "scale=2; $tv_max_volume / 100 * $2" | bc | awk '{print int($1+0.5)}'`
    curl -H "Content-Type: application/json" -s POST -d '{"current": '$transform} http://$tv_ipadresse:1925/1/audio/volume
    ;;
Hier wird also kein "Key" gefordert, sondern eine "id"
Ich habe schon einiges probiert für '$2' einen Wert zu setzen. Aber mein Fernseher reagiert darauf nicht.

Eingesetzt habe ich bisher:
'$2'=hdmi1
'$2'=hdmi2
'$2'=tv
'$2'=fingerprint-1
'$2'=fingerprint-2
usw.

In der API von meinem Fernseher wird folgendes angegeben:

Code: Alles auswählen

JointSpace API Documentation
REST API Method: POST sources/current
Changes the current source.

URL
http://ip-address:1925/1/sources/current
Format
json
HTTP Method
POST
Requires Authentication
false
Parameters
none
Upload data
This resource accepts a JSON object with key/value pairs. It is allowed to send an object containing only the key/value pairs that need to be changed. See the JSON example for how these key/value pairs are passed.

Keys
id (string): The id of the new source.
JSON example

{
    "id": "fingerprint-2"
}

Code: Alles auswählen

JointSpace API Documentation
REST API Method: GET sources
Returns all sources.

URL
http://ip-address:1925/1/sources
Format
json
HTTP Method
GET
Requires Authentication
false
Parameters
none
Response
This resource returns a JSON object with key/value pairs. See the JSON example for how these key/value pairs are returned.

Keys
id (string): The id's of the sources are used as keys in the top level object. The value corresponding to the key is an object with details about the source.
name (string): The name of the source.
JSON example

{
    "fingerprint-1":
    {
        "name": "Watch TV"
    },
    "fingerprint-2":
    {
        "name": "Watch satellite"
    },
    "fingerprint-3":
    {
        "name": "HDMI 1"
    },
    "fingerprint-4":
    {
        "name": "HDMI 2"
    },
    "fingerprint-5":
    {
        "name": "HDMI 3"
    },
    "fingerprint-6":
    {
        "name": "HDMI side"
    },
    "fingerprint-7":
    {
        "name": "EXT 1"
    },
    "fingerprint-8":
    {
        "name": "EXT 2"
    },
    "fingerprint-9":
    {
        "name": "Y Pb Pr"
    },
    "fingerprint-10":
    {
        "name": "VGA"
    }
}

Wie das mit der Lautstärke funktionieren soll, verstehe ich überhaupt nicht.

Code: Alles auswählen

curl -H "Content-Type: application/json" -s POST -d '{"current": '$transform} http://$tv_ipadresse:1925/1/audio/volume
Wie kann ich hier ein Wert (und wo) einsetzen, damit die aktuelle Lautstärke zum Beispiel auf 28 gesetzt wird?

Und falls jemand das komplette Script versteht, wäre ich total dankbar, wenn mir das einer in seiner komplette Form einmal erklären könnte.

Vielen vielen Dank!

Gesperrt