Tuto JRMC & EventGhostDans ce tuto le but du jeu c'est d'utiliser EventGhost avec JRMC afin de déclencher des opérations en fonction de l'état de fonctionnement du player voir en fonction du type de média.
Les applications sont nombreuses que ce soit de la mise en oeuvre d'une ambiance lumineuse à la fermeture d'un volet ou l'arrêt de la clim quand on écoute de la musique...
EventGhost est un logiciel qui permet d'automatiser de nombreuses tâches sur un PC, c'est très puissant mais tant qu'on y a pas touché il est difficile de se faire une idée.
Je ne décris ici que les différents composants à mettre en oeuvre et le principe général, pour l'utilisation d'EventGhost appuyez vous sur les milliers de tutoriaux sur le net...
http://www.eventghost.net/EventGhost propose un outil de base qui est extensible par des plugins (greffons dans la traduction française).
JRMC quant à lui propose une interface Web qui permet de récupérer de très nombreuses informations et d'interagir avec le logiciel à distance. Si vous avez activé le mode réseau, allez voir sur
http://localhost:52199/MCWS/v1/doc, vous verrez qu'il y a de très nombreuses fonctions.
Ces fonctions vont être utilisées par EventGhost pour extraire l'état de fonctionnement de JRMC. Pour cela on va utiliser un plugin qui a été développé spécifiquement pour JRiver, vous trouverez des infos ici:
http://www.eventghost.net/forum/viewtop ... ilit=riverhttps://yabb.jriver.com/interact/index. ... 75.50.htmlUne fois installé le plugin va vous permettre d'espionner JRMC et de manipuler l’événement pour déclencher des actions.
Le plugin génère quatre types d’événements:
- MCEventPlugin.Play
- MCEventPlugin.Pause
- MCEventPlugin.Stop
- MCEventPlugin.TrackChanged
Chaque événement est accompagné d'informations sur ce que JRiver est entrain de lire, on retrouve le type de média, volume, position, etc.
- Code: Tout sélectionner
12:26:33 MCEventPlugin.Stop {'Album': 'Rachel Podger (violon) - Brecon Baroque : Johann Sebastian Bach : Double & Triple Concertos', 'Date Created': '1501429900', 'Total Tracks': '12', 'Bitdepth': '0', 'Compression': 'FLAC', 'Media Type': 'Audio', 'Bookmark': '0', 'Last Played': '1505211992', 'Album Artist': 'Rachel Podger', 'Filename': '\\\\serveur\\musique\\Rachel-Podger\\Johann-Sebastian-Bach-Double-and-Triple-Concertos\\1_1_Rachel-Podger_Concerto-in-D-minor-for-two-violins-strings-and-basso-continuo-BWV-1043-Vivace_6.flac', 'File Size': '23857860', 'NextFileKey': '426', 'State': '0', 'Image File': 'INTERNAL', 'SampleRate': '0', 'PositionDisplay': '0:00 / Live', 'Status': 'Stopped', 'ElapsedTimeDisplay': '0:00', 'PositionMS': '0', 'Description': 'Label : Channel Classics Records - Channel Classics', 'FileKey': '425', 'RemainingTimeDisplay': 'Live', 'Volume': '0.44', 'Date Imported': '1501430037', 'Key': '425', 'Date': '41275', 'Bitrate': '829', 'PlayingNowTracks': '12', 'Chapter': '0', 'Date First Rated': '1501430038', 'Name': 'Concerto in D minor for two violins, strings & basso continuo, BWV 1043:Vivace', 'Artist': 'Rachel Podger & Bojan Cicic, violin - Brecon Baroque - Rachel Podger, conductor - Johann Sebastian Bach, composer', 'ImageURL': 'MCWS/v1/File/GetImage?File=425', 'DurationMS': '227000', 'File Type': 'flac', 'Track #': '1', 'PlayingNowPositionDisplay': '1 of 12', 'TotalTimeDisplay': 'Live', 'Total Discs': '1', 'Grouping': 'Musique concertante', 'PlayingNowPosition': '0', 'Sample Rate': '44100', 'Date Modified': '1497731652', 'Copyright': 'Channel Classics Records', 'PlayingNowChangeCounter': '15', 'Disc #': '1', 'Number Plays': '2', 'Bit Depth': '16', 'ZoneID': '0', 'Channels': '2', 'Genre': 'Classique', 'VolumeDisplay': '44% (-28,0 dB)', 'Duration': '227,651678000000004'}
Voici ma configuration JRMC dans EventGhost:
- EventGhost.png (18.54 Kio) Vu 1173 fois
J'ai un groupe JRMC dans lequel j'ai différentes fonctionnalités dédiées à JRMC (démarrer/arrêter à distance le logiciel, désactiver/activer le monitoring si JRMC n'est pas démarré, etc.)
La partie importante c'est la section "Monitor JRMC", qui lors de l'arrivée des événements va utiliser les informations pour déclencher des actions.
Dans mon cas j'utilise le langage de programmation d'EventGhost (Python) pour envoyer une commande à ma box domotique (Jeedom). Je vous donne un exemple de code pour que vous ayez une idée de ce que ça fait.
- Code: Tout sélectionner
1|import urllib
2|import urllib2
3|data = eg.event.payload
4|command = eg.event.suffix.upper() + ":" +str(data['Media Type']).upper() + ":" + data['Name']
5|url = 'http://MON_SERVEUR/core/api/jeeApi.php?apikey=CLE_JEEDOM&type=virtual&id=562&value='+urllib.quote_plus(command)
6|url_response = urllib2.urlopen(url)
Ce n'est pas très compliqué, les lignes 1 et 2 permettent d'initialiser des fonctions utilitaires, la ligne 3 récupère dans la variable data le détail de l’événement que nous avons vu ci-dessus.
La ligne 4 construit une commande qui est la concaténation du nom de l’événement , du type de média, et du nom du média, le tout séparé par des ':'
En fonction ça produit des infos telles que: PLAY:VIDEO:Avatar ou STOP:MUSIC:Chanton sous la Pluie ou encore PAUSE:VIDEO:Brazil. On peut bien sûr faire des choses beaucoup plus complexes mais ceci est suffisant pour avoir les infos nécessaires.
En ligne 5 et 6 on invoque la box domotique avec la commande ainsi constituée.
C'est la box domotique qui ensuite prend le relais pour activer les composants nécessaires.