Lancement script python ? Intégration Sony ? Volontaire?


#1

Hello !

Ce petit topic est la du fait que j’ai acheter un home cinéma sony bdv E4100.
J’ai pu voir en fouillant sur le net, une lib en C et une en python

Déjà je me demandais s’il est possible de demander à gladys de lancer des scripts python ?

Est-il possible avec des lib de faire un module gladys ?

Si une âme charitable à des compétences en python et un peu de temps pour des explications je suis prenneur :slight_smile:

Pour le moment avec l’exemple dans la librairie python, le home cinéma démarre, maintenant il n’y a plus cas comprendre comment cela fonctionne, mais la c’est une autre histoire :roll_eyes:


#2

C’est possible de faire un wrapper pour convertir la lib C en lib Nodejs, après perso je sais pas faire :slight_smile:
Mais si ça marche ça m’intéresse, ça peut être grave cool !


#3

En dev je suis proche du sol :stuck_out_tongue:

Bon en faisant des tests avec le python d’exemple sur le git, j’ai réussi à récupérer l’état du home cinéma (True/False) et de le démarrer :muscle: …Enfin on ne s’emballe pas, c’est limite ce qu’il y a dans l’exemple…

Bon après j’ai juste compris que si je lui balance des commandes type

device.up()

ça remplace la commande pour les touches de la télécommande lol

Si déjà avec gladys je peux lancer les scripts python pour le faire démarrer ça serait bien


#4

Il existe un module pour lancer des scripts python, fait par @C4rlit0.
Regardez ici.


#5

Il existe surtout une api rest je crois pour les devices Sony, question abordée sur un autre sujet je crois.

https://developer.sony.com/develop/audio-control-api/get-started/http-example


#6

@piznel Merci ! Je viens de l’installer, plus cas voir comment il fonctionne (Je trouve qu’il manque souvent tous ce qui est documentation de fonctionnement sur les git mais bon…)

@VonOx oui oui, d’ailleurs il me semble que c’est un de mes sujets ou d’ailleurs tu m’avais demander le modèle :stuck_out_tongue:
Par contre, sur le site de sony, niveau hardware ça va pas très loin dans les modèles :

https://developer.sony.com/develop/audio-control-api/hardware-overview/hardware-overview/

Alors que niveau de ce que j’ai vu des github, cela va quand même plus loin dans les périphériques compatibles


#7

Et tu crois qu’ils font comment ? ils utilisent l’ api sony, en regardant le code source de ces libs on vois rapidement les Web request. Alors c’est pas forcément la même version de l’api dont j’ai donné le lien.

Tout ça pour dire que passer par du c ou du python ça rajoute une couche, c’est grade ( point de vue perso, vous faites comme vous voulez :wink:)


#8

Je me doute bien qu’ils ne font pas ça par magie. La j’ai tester le python pour voir ce que cela donne. J’arrive à faire deux / trois bricoles.

Maintenant effectivement il faudrait que je vois pour regarder l’API comment ça marche.

Du coup vu que le python à sorti un json type :

{"dmr_url": "http://192.168.3.101:52323/dmr.xml", "actionlist_url": "http://192.168.3.101:50002/actionList", "ircc_url": "http://192.168.3.101:50001/Ircc.xml", "name": null, "dmr_port": 52323, "py/object": "sonyapilib.device.SonyDevice", "app_url": "http://192.168.3.101:50202", "app_port": 50202, "authenticated": false, "apps": {}, "headers": {"X-CERS-DEVICE-ID": "BLU-RAY", "Authorization": "Basic OjE4Mjk="}, "host": "192.168.3.101", "nickname": "BLU-RAY", "actions": {"getStatus": {"id": null, "value": null, "name": "getStatus", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/getStatus", "mac": null}, "getContentUrl": {"id": null, "value": null, "name": "getContentUrl", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/getContentUrl", "mac": null}, "sendText": {"id": null, "value": null, "name": "sendText", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/sendText", "mac": null}, "getRemoteCommandList": {"id": null, "value": null, "name": "getRemoteCommandList", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/getRemoteCommandList", "mac": null}, "getText": {"id": null, "value": null, "name": "getText", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/getText", "mac": null}, "getSystemInformation": {"id": null, "value": null, "name": "getSystemInformation", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/getSystemInformation", "mac": null}, "getHistoryList": {"id": null, "value": null, "name": "getHistoryList", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/getHistoryList", "mac": null}, "sendContentUrl": {"id": null, "value": null, "name": "sendContentUrl", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/sendContentUrl", "mac": null}, "register": {"id": null, "value": null, "name": "register", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": 3, "url": "http://192.168.3.101:50002/register?name=BLU-RAY&registrationType=initial&deviceId=BLU-RAY&wolSupport=true", "mac": null}, "getContentInformation": {"id": null, "value": null, "name": "getContentInformation", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/getContentInformation", "mac": null}}, "av_transport_url": "http://192.168.3.101:52323/upnp/control/AVTransport", "cookies": null, "commands": {}, "control_url": "http://192.168.3.101:50001/upnp/control/IRCC", "pin": "XXXX, "mac": "70-26-05-6e-95-7b"}

ça peut donner les pistes :slight_smile:


#9

@VonOx tu pourrais peut être me guider la dessus :stuck_out_tongue:

Je fais des test avec des requêtes mais je bloque un peu.

Sur le site il donne un exemple pour récupérer le status du sony

curl -i -d '{"method": "getSystemInformation","id": 65,"params": [],"version": "1.4"}' http://192.168.0.123:10000/sony/system

Et le retour

HTTP/1.1 200 OK
Connection: close
Content-Length: 119
Content-Type: application/json
Body: {"result": [{"esn": "SONY-16BDP50012O1TRFL280BFAVWE","wirelessMacAddr": "ec:0e:c4:18:49:07","deviceID": "B0:00:03:08:9E:98","version": "M30.R.0095","lastPowerOnTime": "2016-07-28T10:00:00Z","initialPowerOnTime": "2016-05-10T13:00:00Z","macAddr": "fc:f1:52:7b:99:df"}],"id": 65}

Les ports ouvert sur mon modèles sont ceux-ci

PORT      STATE SERVICE
50001/tcp open  unknown
50002/tcp open  iiimsf

Je fais des tests divers mais j’ai toujours cette réponse :

HTTP/1.1 404 Not Found
Connection: close
Date: Sun, 25 Nov 2018 12:09:24 GMT
Server: Linux/2.6 Sony-BDV/2.0

Dans le json que le python m’a fait j’ai pu voir l’url http://192.168.3.101:50002/actionList qui donne les infos ci-dessous

<actionList><action name="register" mode="3" url="http://192.168.3.101:50002/register"/><action name="getText" url="http://192.168.3.101:50002/getText"/><action name="sendText" url="http://192.168.3.101:50002/sendText"/><action name="getContentInformation" url="http://192.168.3.101:50002/getContentInformation"/><action name="getSystemInformation" url="http://192.168.3.101:50002/getSystemInformation"/><action name="getRemoteCommandList" url="http://192.168.3.101:50002/getRemoteCommandList"/><action name="getStatus"   url="http://192.168.3.101:50002/getStatus"/><action name="getHistoryList"   url="http://192.168.3.101:50002/getHistoryList"/><action name="getContentUrl"   url="http://192.168.3.101:50002/getContentUrl"/><action name="sendContentUrl"   url="http://192.168.3.101:50002/sendContentUrl"/></actionList>  

Le json du python

{"dmr_url": "http://192.168.3.101:52323/dmr.xml", 
 "actionlist_url": "http://192.168.3.101:50002/actionList", 
 "ircc_url": "http://192.168.3.101:50001/Ircc.xml", "name": null, "dmr_port": 52323, "py/object": "sonyapilib.device.SonyDevice", 
 "app_url": "http://192.168.3.101:50202", "app_port": 50202, "authenticated": false, "apps": {}, "headers": {"X-CERS-DEVICE-ID": "BLU-RAY", "Authorization": "Basic OjE4Mjk="}, "host": "192.168.3.101", "nickname": "BLU-RAY", "actions": {"getStatus": {"id": null, "value": null, "name": "getStatus", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, 
 "url": "http://192.168.3.101:50002/getStatus", "mac": null}, "getContentUrl": {"id": null, "value": null, "name": "getContentUrl", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, 
 "url": "http://192.168.3.101:50002/getContentUrl", "mac": null}, "sendText": {"id": null, "value": null, "name": "sendText", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, 
 "url": "http://192.168.3.101:50002/sendText", "mac": null}, "getRemoteCommandList": {"id": null, "value": null, "name": "getRemoteCommandList", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, 
 "url": "http://192.168.3.101:50002/getRemoteCommandList", "mac": null}, "getText": {"id": null, "value": null, "name": "getText", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, 
 "url": "http://192.168.3.101:50002/getText", "mac": null}, 
 "getSystemInformation": {"id": null, "value": null, "name": "getSystemInformation", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, 
 "url": "http://192.168.3.101:50002/getSystemInformation", "mac": null}, 
  getHistoryList": {"id": null, "value": null, "name": 
  "getHistoryList", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/getHistoryList", "mac": null}, 
  "sendContentUrl": {"id": null, "value": null, "name": "sendContentUrl", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/sendContentUrl", "mac": null}, 
  "register": {"id": null, "value": null, "name": "register", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": 3, "url": "http://192.168.3.101:50002/register?name=BLU-RAY&registrationType=initial&deviceId=BLU-RAY&wolSupport=true", "mac": null}, 
  "getContentInformation": {"id": null, "value": null, "name": "getContentInformation", "type": null, "py/object": "sonyapilib.device.XmlApiObject", "mode": null, "url": "http://192.168.3.101:50002/getContentInformation", "mac": null}}, 
  "av_transport_url": "http://192.168.3.101:52323/upnp/control/AVTransport", "cookies": null, "commands": {}, "control_url": "http://192.168.3.101:50001/upnp/control/IRCC", "pin": "1829", "mac": "70-26-05-6e-95-7b"}

Je suis aussi tomber sur une url pour enregistrer le périphérique avec un pin :

http://192.168.3.101:50002/register?name=BLU-RAY&registrationType=initial&deviceId=BLU-RAY&wolSupport=true

Ah par exemple celle-ci donne un forbidden, j’en déduit qu’il doit y avoir un truc en rapport avec le pin que l’on donne

curl -i http://192.168.3.101:50002/getStatus
HTTP/1.1 403 Forbidden
Connection: close
Date: Sun, 25 Nov 2018 12:36:02 GMT
Server: Linux/2.6 Sony-BDV/2.0

Par contre je n’arrive pas à aller plus loin pour le moment.

T’aurais pas des petites conseils ? :slight_smile: